@@ -34,7 +34,8 @@ private module Cached {
3434 CallStep ( ) or
3535 ReturnStep ( ) or
3636 StoreStep ( ContentName content ) or
37- LoadStep ( ContentName content )
37+ LoadStep ( ContentName content ) or
38+ JumpStep ( )
3839
3940 /** Gets the summary resulting from appending `step` to type-tracking summary `tt`. */
4041 cached
@@ -49,6 +50,9 @@ private module Cached {
4950 step = LoadStep ( content ) and result = MkTypeTracker ( hasCall , "" )
5051 or
5152 exists ( string p | step = StoreStep ( p ) and content = "" and result = MkTypeTracker ( hasCall , p ) )
53+ or
54+ step = JumpStep ( ) and
55+ result = MkTypeTracker ( false , content )
5256 )
5357 }
5458
@@ -67,6 +71,9 @@ private module Cached {
6771 )
6872 or
6973 step = StoreStep ( content ) and result = MkTypeBackTracker ( hasReturn , "" )
74+ or
75+ step = JumpStep ( ) and
76+ result = MkTypeBackTracker ( false , content )
7077 )
7178 }
7279
@@ -110,12 +117,17 @@ class StepSummary extends TStepSummary {
110117 exists ( string content | this = StoreStep ( content ) | result = "store " + content )
111118 or
112119 exists ( string content | this = LoadStep ( content ) | result = "load " + content )
120+ or
121+ this instanceof JumpStep and result = "jump"
113122 }
114123}
115124
116125pragma [ noinline]
117126private predicate smallstepNoCall ( Node nodeFrom , TypeTrackingNode nodeTo , StepSummary summary ) {
118127 jumpStep ( nodeFrom , nodeTo ) and
128+ summary = JumpStep ( )
129+ or
130+ levelStep ( nodeFrom , nodeTo ) and
119131 summary = LevelStep ( )
120132 or
121133 exists ( string content |
0 commit comments