@@ -34,7 +34,8 @@ private module Cached {
34
34
CallStep ( ) or
35
35
ReturnStep ( ) or
36
36
StoreStep ( ContentName content ) or
37
- LoadStep ( ContentName content )
37
+ LoadStep ( ContentName content ) or
38
+ JumpStep ( )
38
39
39
40
/** Gets the summary resulting from appending `step` to type-tracking summary `tt`. */
40
41
cached
@@ -49,6 +50,9 @@ private module Cached {
49
50
step = LoadStep ( content ) and result = MkTypeTracker ( hasCall , "" )
50
51
or
51
52
exists ( string p | step = StoreStep ( p ) and content = "" and result = MkTypeTracker ( hasCall , p ) )
53
+ or
54
+ step = JumpStep ( ) and
55
+ result = MkTypeTracker ( false , content )
52
56
)
53
57
}
54
58
@@ -67,6 +71,9 @@ private module Cached {
67
71
)
68
72
or
69
73
step = StoreStep ( content ) and result = MkTypeBackTracker ( hasReturn , "" )
74
+ or
75
+ step = JumpStep ( ) and
76
+ result = MkTypeBackTracker ( false , content )
70
77
)
71
78
}
72
79
@@ -110,12 +117,17 @@ class StepSummary extends TStepSummary {
110
117
exists ( string content | this = StoreStep ( content ) | result = "store " + content )
111
118
or
112
119
exists ( string content | this = LoadStep ( content ) | result = "load " + content )
120
+ or
121
+ this instanceof JumpStep and result = "jump"
113
122
}
114
123
}
115
124
116
125
pragma [ noinline]
117
126
private predicate smallstepNoCall ( Node nodeFrom , TypeTrackingNode nodeTo , StepSummary summary ) {
118
127
jumpStep ( nodeFrom , nodeTo ) and
128
+ summary = JumpStep ( )
129
+ or
130
+ levelStep ( nodeFrom , nodeTo ) and
119
131
summary = LevelStep ( )
120
132
or
121
133
exists ( string content |
0 commit comments