@@ -166,15 +166,11 @@ module DataFlow {
166
166
predicate hasLocationInfo (
167
167
string filepath , int startline , int startcolumn , int endline , int endcolumn
168
168
) {
169
- filepath = "" and
170
- startline = 0 and
171
- startcolumn = 0 and
172
- endline = 0 and
173
- endcolumn = 0
169
+ none ( )
174
170
}
175
171
176
172
/** Gets the file this data flow node comes from. */
177
- File getFile ( ) { hasLocationInfo ( result . getAbsolutePath ( ) , _ , _ , _ , _ ) }
173
+ File getFile ( ) { none ( ) } // overridden in subclasses
178
174
179
175
/** Gets the start line of this data flow node. */
180
176
int getStartLine ( ) { hasLocationInfo ( _, result , _, _, _) }
@@ -314,6 +310,8 @@ module DataFlow {
314
310
astNode .getLocation ( ) .hasLocationInfo ( filepath , startline , startcolumn , endline , endcolumn )
315
311
}
316
312
313
+ override File getFile ( ) { result = astNode .getFile ( ) }
314
+
317
315
override string toString ( ) { result = astNode .toString ( ) }
318
316
}
319
317
@@ -338,6 +336,8 @@ module DataFlow {
338
336
339
337
override string toString ( ) { result = ssa .getSourceVariable ( ) .getName ( ) }
340
338
339
+ override File getFile ( ) { result = ssa .getBasicBlock ( ) .getFile ( ) }
340
+
341
341
override ASTNode getAstNode ( ) { none ( ) }
342
342
}
343
343
@@ -362,6 +362,8 @@ module DataFlow {
362
362
363
363
override string toString ( ) { result = prop .( ASTNode ) .toString ( ) }
364
364
365
+ override File getFile ( ) { result = prop .( ASTNode ) .getFile ( ) }
366
+
365
367
override ASTNode getAstNode ( ) { result = prop }
366
368
}
367
369
@@ -385,6 +387,8 @@ module DataFlow {
385
387
386
388
override string toString ( ) { result = "..." + rest .toString ( ) }
387
389
390
+ override File getFile ( ) { result = pattern .getFile ( ) }
391
+
388
392
override ASTNode getAstNode ( ) { result = rest }
389
393
}
390
394
@@ -407,6 +411,8 @@ module DataFlow {
407
411
408
412
override string toString ( ) { result = pattern .toString ( ) }
409
413
414
+ override File getFile ( ) { result = pattern .getFile ( ) }
415
+
410
416
override ASTNode getAstNode ( ) { result = pattern }
411
417
}
412
418
@@ -430,6 +436,8 @@ module DataFlow {
430
436
431
437
override string toString ( ) { result = elt .toString ( ) }
432
438
439
+ override File getFile ( ) { result = pattern .getFile ( ) }
440
+
433
441
override ASTNode getAstNode ( ) { result = elt }
434
442
}
435
443
@@ -457,6 +465,8 @@ module DataFlow {
457
465
458
466
override string toString ( ) { result = elt .toString ( ) }
459
467
468
+ override File getFile ( ) { result = arr .getFile ( ) }
469
+
460
470
override ASTNode getAstNode ( ) { result = elt }
461
471
}
462
472
@@ -479,6 +489,8 @@ module DataFlow {
479
489
}
480
490
481
491
override string toString ( ) { result = "reflective call" }
492
+
493
+ override File getFile ( ) { result = call .getFile ( ) }
482
494
}
483
495
484
496
/**
@@ -498,6 +510,8 @@ module DataFlow {
498
510
}
499
511
500
512
override string toString ( ) { result = imprt .toString ( ) }
513
+
514
+ override File getFile ( ) { result = imprt .getFile ( ) }
501
515
}
502
516
503
517
/**
@@ -925,6 +939,8 @@ module DataFlow {
925
939
) {
926
940
p .getLocation ( ) .hasLocationInfo ( filepath , startline , startcolumn , endline , endcolumn )
927
941
}
942
+
943
+ override File getFile ( ) { result = p .getFile ( ) }
928
944
}
929
945
930
946
/**
@@ -945,6 +961,8 @@ module DataFlow {
945
961
946
962
/** Gets the attribute corresponding to this data flow node. */
947
963
HTML:: Attribute getAttribute ( ) { result = attr }
964
+
965
+ override File getFile ( ) { result = attr .getFile ( ) }
948
966
}
949
967
950
968
/**
@@ -969,6 +987,8 @@ module DataFlow {
969
987
* Gets the function corresponding to this exceptional return node.
970
988
*/
971
989
Function getFunction ( ) { result = function }
990
+
991
+ override File getFile ( ) { result = function .getFile ( ) }
972
992
}
973
993
974
994
/**
@@ -993,6 +1013,8 @@ module DataFlow {
993
1013
* Gets the invocation corresponding to this exceptional return node.
994
1014
*/
995
1015
DataFlow:: InvokeNode getInvocation ( ) { result = invoke .flow ( ) }
1016
+
1017
+ override File getFile ( ) { result = invoke .getFile ( ) }
996
1018
}
997
1019
998
1020
/**
@@ -1220,6 +1242,10 @@ module DataFlow {
1220
1242
.hasLocationInfo ( filepath , startline , startcolumn , endline , endcolumn )
1221
1243
)
1222
1244
}
1245
+
1246
+ override File getFile ( ) {
1247
+ exists ( StmtContainer container | this = TThisNode ( container ) | result = container .getFile ( ) )
1248
+ }
1223
1249
}
1224
1250
1225
1251
/**
0 commit comments