@@ -344,7 +344,7 @@ module TypeTracking<TypeTrackingInput I> {
344
344
}
345
345
346
346
pragma [ nomagic]
347
- private predicate storeStepIntoSource ( Node nodeFrom , Node nodeTo , Content f ) {
347
+ private predicate storeStepIntoSource ( Node nodeFrom , LocalSourceNode nodeTo , Content f ) {
348
348
if hasFeatureBacktrackStoreTarget ( )
349
349
then
350
350
exists ( Node obj |
@@ -355,7 +355,9 @@ module TypeTracking<TypeTrackingInput I> {
355
355
}
356
356
357
357
pragma [ nomagic]
358
- private predicate loadStoreStepIntoSource ( Node nodeFrom , Node nodeTo , Content f1 , Content f2 ) {
358
+ private predicate loadStoreStepIntoSource (
359
+ Node nodeFrom , LocalSourceNode nodeTo , Content f1 , Content f2
360
+ ) {
359
361
if hasFeatureBacktrackStoreTarget ( )
360
362
then
361
363
exists ( Node obj |
@@ -366,7 +368,7 @@ module TypeTracking<TypeTrackingInput I> {
366
368
}
367
369
368
370
pragma [ nomagic]
369
- private predicate smallStepNoCall ( Node nodeFrom , Node nodeTo , StepSummary summary ) {
371
+ private predicate smallStepNoCall ( Node nodeFrom , LocalSourceNode nodeTo , StepSummary summary ) {
370
372
levelStepNoCall ( nodeFrom , nodeTo ) and summary = LevelStep ( )
371
373
or
372
374
exists ( Content content |
@@ -398,7 +400,7 @@ module TypeTracking<TypeTrackingInput I> {
398
400
}
399
401
400
402
pragma [ nomagic]
401
- private predicate smallStepCall ( Node nodeFrom , Node nodeTo , StepSummary summary ) {
403
+ private predicate smallStepCall ( Node nodeFrom , LocalSourceNode nodeTo , StepSummary summary ) {
402
404
levelStepCall ( nodeFrom , nodeTo ) and summary = LevelStep ( )
403
405
or
404
406
callStep ( nodeFrom , nodeTo ) and summary = CallStep ( )
@@ -407,32 +409,32 @@ module TypeTracking<TypeTrackingInput I> {
407
409
}
408
410
409
411
pragma [ nomagic]
410
- private predicate stepNoCall ( Node nodeFrom , Node nodeTo , StepSummary summary ) {
412
+ private predicate stepNoCall ( LocalSourceNode nodeFrom , LocalSourceNode nodeTo , StepSummary summary ) {
411
413
exists ( Node mid | flowsTo ( nodeFrom , mid ) and smallStepNoCall ( mid , nodeTo , summary ) )
412
414
}
413
415
414
416
pragma [ nomagic]
415
- private predicate stepCall ( Node nodeFrom , Node nodeTo , StepSummary summary ) {
417
+ private predicate stepCall ( LocalSourceNode nodeFrom , LocalSourceNode nodeTo , StepSummary summary ) {
416
418
exists ( Node mid | flowsTo ( nodeFrom , mid ) and smallStepCall ( mid , nodeTo , summary ) )
417
419
}
418
420
419
421
pragma [ inline]
420
- private predicate smallStepSplit ( Node nodeFrom , Node nodeTo , StepSummary summary ) {
422
+ private predicate smallStepSplit ( Node nodeFrom , LocalSourceNode nodeTo , StepSummary summary ) {
421
423
smallStepCall ( nodeFrom , nodeTo , summary ) or smallStepNoCall ( nodeFrom , nodeTo , summary )
422
424
}
423
425
424
426
pragma [ inline]
425
- private predicate stepSplit ( Node nodeFrom , Node nodeTo , StepSummary summary ) {
427
+ private predicate stepSplit ( LocalSourceNode nodeFrom , LocalSourceNode nodeTo , StepSummary summary ) {
426
428
stepNoCall ( nodeFrom , nodeTo , summary ) or stepCall ( nodeFrom , nodeTo , summary )
427
429
}
428
430
429
431
pragma [ nomagic]
430
- private predicate smallStep ( Node nodeFrom , Node nodeTo , StepSummary summary ) {
432
+ private predicate smallStep ( Node nodeFrom , LocalSourceNode nodeTo , StepSummary summary ) {
431
433
smallStepSplit ( nodeFrom , nodeTo , summary )
432
434
}
433
435
434
436
pragma [ nomagic]
435
- private predicate step ( Node nodeFrom , Node nodeTo , StepSummary summary ) {
437
+ private predicate step ( LocalSourceNode nodeFrom , LocalSourceNode nodeTo , StepSummary summary ) {
436
438
stepSplit ( nodeFrom , nodeTo , summary )
437
439
}
438
440
@@ -528,7 +530,7 @@ module TypeTracking<TypeTrackingInput I> {
528
530
* heap and/or inter-procedural step from `nodeFrom` to `nodeTo`.
529
531
*/
530
532
bindingset [ nodeFrom, this ]
531
- TypeTracker step ( Node nodeFrom , Node nodeTo ) {
533
+ TypeTracker step ( LocalSourceNode nodeFrom , LocalSourceNode nodeTo ) {
532
534
exists ( StepSummary summary |
533
535
step ( pragma [ only_bind_out ] ( nodeFrom ) , _, pragma [ only_bind_into ] ( summary ) ) and
534
536
result = pragma [ only_bind_into ] ( pragma [ only_bind_out ] ( this ) ) .append ( summary ) and
@@ -655,7 +657,7 @@ module TypeTracking<TypeTrackingInput I> {
655
657
* heap and/or inter-procedural step from `nodeTo` to `nodeFrom`.
656
658
*/
657
659
bindingset [ nodeTo, this ]
658
- TypeBackTracker step ( Node nodeFrom , Node nodeTo ) {
660
+ TypeBackTracker step ( LocalSourceNode nodeFrom , LocalSourceNode nodeTo ) {
659
661
exists ( StepSummary summary |
660
662
step ( _, pragma [ only_bind_out ] ( nodeTo ) , pragma [ only_bind_into ] ( summary ) ) and
661
663
result = pragma [ only_bind_into ] ( pragma [ only_bind_out ] ( this ) ) .prepend ( summary ) and
0 commit comments