@@ -72,6 +72,7 @@ private module API = Specific::API;
7272private module DataFlow = Specific:: DataFlow;
7373
7474private import Specific:: AccessPathSyntax
75+ private import ApiGraphModelsExtensions as Extensions
7576
7677/** Module containing hooks for providing input data to be interpreted as a model. */
7778module ModelInput {
@@ -236,6 +237,8 @@ predicate sourceModel(string type, string path, string kind) {
236237 row .splitAt ( ";" , 1 ) = path and
237238 row .splitAt ( ";" , 2 ) = kind
238239 )
240+ or
241+ Extensions:: sourceModel ( type , path , kind )
239242}
240243
241244/** Holds if a sink model exists for the given parameters. */
@@ -246,6 +249,8 @@ private predicate sinkModel(string type, string path, string kind) {
246249 row .splitAt ( ";" , 1 ) = path and
247250 row .splitAt ( ";" , 2 ) = kind
248251 )
252+ or
253+ Extensions:: sinkModel ( type , path , kind )
249254}
250255
251256/** Holds if a summary model `row` exists for the given parameters. */
@@ -258,6 +263,8 @@ private predicate summaryModel(string type, string path, string input, string ou
258263 row .splitAt ( ";" , 3 ) = output and
259264 row .splitAt ( ";" , 4 ) = kind
260265 )
266+ or
267+ Extensions:: summaryModel ( type , path , input , output , kind )
261268}
262269
263270/** Holds if a type model exists for the given parameters. */
@@ -268,6 +275,8 @@ private predicate typeModel(string type1, string type2, string path) {
268275 row .splitAt ( ";" , 1 ) = type2 and
269276 row .splitAt ( ";" , 2 ) = path
270277 )
278+ or
279+ Extensions:: typeModel ( type1 , type2 , path )
271280}
272281
273282/** Holds if a type variable model exists for the given parameters. */
@@ -277,6 +286,8 @@ private predicate typeVariableModel(string name, string path) {
277286 row .splitAt ( ";" , 0 ) = name and
278287 row .splitAt ( ";" , 1 ) = path
279288 )
289+ or
290+ Extensions:: typeVariableModel ( name , path )
280291}
281292
282293/**
0 commit comments