@@ -1124,11 +1124,11 @@ private module LocalFlowBigStep {
1124
1124
(
1125
1125
localFlowStepNodeCand1 ( node1 , node2 , config ) and
1126
1126
preservesValue = true and
1127
- t = getErasedNodeTypeBound ( node1 )
1127
+ t = getNodeType ( node1 )
1128
1128
or
1129
1129
additionalLocalFlowStepNodeCand2 ( node1 , node2 , config ) and
1130
1130
preservesValue = false and
1131
- t = getErasedNodeTypeBound ( node2 )
1131
+ t = getNodeType ( node2 )
1132
1132
) and
1133
1133
node1 != node2 and
1134
1134
cc .relevantFor ( node1 .getEnclosingCallable ( ) ) and
@@ -1147,7 +1147,7 @@ private module LocalFlowBigStep {
1147
1147
additionalLocalFlowStepNodeCand2 ( mid , node2 , config ) and
1148
1148
not mid instanceof FlowCheckNode and
1149
1149
preservesValue = false and
1150
- t = getErasedNodeTypeBound ( node2 ) and
1150
+ t = getNodeType ( node2 ) and
1151
1151
nodeCand2 ( node2 , unbind ( config ) )
1152
1152
)
1153
1153
)
@@ -1202,9 +1202,7 @@ private predicate flowCandFwd(
1202
1202
) {
1203
1203
flowCandFwd0 ( node , fromArg , argApf , apf , config ) and
1204
1204
not apf .isClearedAt ( node ) and
1205
- if node instanceof CastingNode
1206
- then compatibleTypes ( getErasedNodeTypeBound ( node ) , apf .getType ( ) )
1207
- else any ( )
1205
+ if node instanceof CastingNode then compatibleTypes ( getNodeType ( node ) , apf .getType ( ) ) else any ( )
1208
1206
}
1209
1207
1210
1208
pragma [ nomagic]
@@ -1216,7 +1214,7 @@ private predicate flowCandFwd0(
1216
1214
config .isSource ( node ) and
1217
1215
fromArg = false and
1218
1216
argApf = TAccessPathFrontNone ( ) and
1219
- apf = TFrontNil ( getErasedNodeTypeBound ( node ) )
1217
+ apf = TFrontNil ( getNodeType ( node ) )
1220
1218
or
1221
1219
exists ( Node mid |
1222
1220
flowCandFwd ( mid , fromArg , argApf , apf , config ) and
@@ -1242,7 +1240,7 @@ private predicate flowCandFwd0(
1242
1240
additionalJumpStep ( mid , node , config ) and
1243
1241
fromArg = false and
1244
1242
argApf = TAccessPathFrontNone ( ) and
1245
- apf = TFrontNil ( getErasedNodeTypeBound ( node ) )
1243
+ apf = TFrontNil ( getNodeType ( node ) )
1246
1244
)
1247
1245
or
1248
1246
// store
@@ -1672,7 +1670,7 @@ private predicate flowFwd0(
1672
1670
config .isSource ( node ) and
1673
1671
fromArg = false and
1674
1672
argAp = TAccessPathNone ( ) and
1675
- ap = TNil ( getErasedNodeTypeBound ( node ) ) and
1673
+ ap = TNil ( getNodeType ( node ) ) and
1676
1674
apf = ap .( AccessPathNil ) .getFront ( )
1677
1675
or
1678
1676
flowCand ( node , _, _, _, unbind ( config ) ) and
@@ -1700,7 +1698,7 @@ private predicate flowFwd0(
1700
1698
additionalJumpStep ( mid , node , config ) and
1701
1699
fromArg = false and
1702
1700
argAp = TAccessPathNone ( ) and
1703
- ap = TNil ( getErasedNodeTypeBound ( node ) ) and
1701
+ ap = TNil ( getNodeType ( node ) ) and
1704
1702
apf = ap .( AccessPathNil ) .getFront ( )
1705
1703
)
1706
1704
)
@@ -2077,7 +2075,7 @@ private newtype TPathNode =
2077
2075
config .isSource ( node ) and
2078
2076
cc instanceof CallContextAny and
2079
2077
sc instanceof SummaryCtxNone and
2080
- ap = TNil ( getErasedNodeTypeBound ( node ) )
2078
+ ap = TNil ( getNodeType ( node ) )
2081
2079
or
2082
2080
// ... or a step from an existing PathNode to another node.
2083
2081
exists ( PathNodeMid mid |
@@ -2304,7 +2302,7 @@ private predicate pathStep(PathNodeMid mid, Node node, CallContext cc, SummaryCt
2304
2302
cc instanceof CallContextAny and
2305
2303
sc instanceof SummaryCtxNone and
2306
2304
mid .getAp ( ) instanceof AccessPathNil and
2307
- ap = TNil ( getErasedNodeTypeBound ( node ) )
2305
+ ap = TNil ( getNodeType ( node ) )
2308
2306
or
2309
2307
exists ( TypedContent tc | pathStoreStep ( mid , node , pop ( tc , ap ) , tc , cc ) ) and
2310
2308
sc = mid .getSummaryCtx ( )
@@ -2646,7 +2644,7 @@ private module FlowExploration {
2646
2644
cc instanceof CallContextAny and
2647
2645
sc1 = TSummaryCtx1None ( ) and
2648
2646
sc2 = TSummaryCtx2None ( ) and
2649
- ap = TPartialNil ( getErasedNodeTypeBound ( node ) ) and
2647
+ ap = TPartialNil ( getNodeType ( node ) ) and
2650
2648
not fullBarrier ( node , config ) and
2651
2649
exists ( config .explorationLimit ( ) )
2652
2650
or
@@ -2663,7 +2661,7 @@ private module FlowExploration {
2663
2661
partialPathStep ( mid , node , cc , sc1 , sc2 , ap , config ) and
2664
2662
not fullBarrier ( node , config ) and
2665
2663
if node instanceof CastingNode
2666
- then compatibleTypes ( getErasedNodeTypeBound ( node ) , ap .getType ( ) )
2664
+ then compatibleTypes ( getNodeType ( node ) , ap .getType ( ) )
2667
2665
else any ( )
2668
2666
)
2669
2667
}
@@ -2776,7 +2774,7 @@ private module FlowExploration {
2776
2774
sc1 = mid .getSummaryCtx1 ( ) and
2777
2775
sc2 = mid .getSummaryCtx2 ( ) and
2778
2776
mid .getAp ( ) instanceof PartialAccessPathNil and
2779
- ap = TPartialNil ( getErasedNodeTypeBound ( node ) ) and
2777
+ ap = TPartialNil ( getNodeType ( node ) ) and
2780
2778
config = mid .getConfiguration ( )
2781
2779
)
2782
2780
or
@@ -2792,7 +2790,7 @@ private module FlowExploration {
2792
2790
sc1 = TSummaryCtx1None ( ) and
2793
2791
sc2 = TSummaryCtx2None ( ) and
2794
2792
mid .getAp ( ) instanceof PartialAccessPathNil and
2795
- ap = TPartialNil ( getErasedNodeTypeBound ( node ) ) and
2793
+ ap = TPartialNil ( getNodeType ( node ) ) and
2796
2794
config = mid .getConfiguration ( )
2797
2795
or
2798
2796
partialPathStoreStep ( mid , _, _, node , ap ) and
@@ -2806,7 +2804,7 @@ private module FlowExploration {
2806
2804
sc1 = mid .getSummaryCtx1 ( ) and
2807
2805
sc2 = mid .getSummaryCtx2 ( ) and
2808
2806
apConsFwd ( ap , tc , ap0 , config ) and
2809
- compatibleTypes ( ap .getType ( ) , getErasedNodeTypeBound ( node ) )
2807
+ compatibleTypes ( ap .getType ( ) , getNodeType ( node ) )
2810
2808
)
2811
2809
or
2812
2810
partialPathIntoCallable ( mid , node , _, cc , sc1 , sc2 , _, ap , config )
0 commit comments