@@ -169,7 +169,14 @@ private DataFlow::LocalSourceNode trackInstance(Module tp, TypeTracker t) {
169169 )
170170 )
171171 or
172- exists ( TypeTracker t2 | result = trackInstance ( tp , t2 ) .track ( t2 , t ) )
172+ exists ( TypeTracker t2 , StepSummary summary |
173+ result = trackInstanceRec ( tp , t2 , summary ) and t = t2 .append ( summary )
174+ )
175+ }
176+
177+ pragma [ nomagic]
178+ private DataFlow:: LocalSourceNode trackInstanceRec ( Module tp , TypeTracker t , StepSummary summary ) {
179+ StepSummary:: step ( trackInstance ( tp , t ) , result , summary )
173180}
174181
175182private DataFlow:: LocalSourceNode trackInstance ( Module tp ) {
@@ -179,7 +186,14 @@ private DataFlow::LocalSourceNode trackInstance(Module tp) {
179186private DataFlow:: LocalSourceNode trackBlock ( Block block , TypeTracker t ) {
180187 t .start ( ) and result .asExpr ( ) .getExpr ( ) = block
181188 or
182- exists ( TypeTracker t2 | result = trackBlock ( block , t2 ) .track ( t2 , t ) )
189+ exists ( TypeTracker t2 , StepSummary summary |
190+ result = trackBlockRec ( block , t2 , summary ) and t = t2 .append ( summary )
191+ )
192+ }
193+
194+ pragma [ nomagic]
195+ private DataFlow:: LocalSourceNode trackBlockRec ( Block block , TypeTracker t , StepSummary summary ) {
196+ StepSummary:: step ( trackBlock ( block , t ) , result , summary )
183197}
184198
185199private DataFlow:: LocalSourceNode trackBlock ( Block block ) {
@@ -216,7 +230,16 @@ private DataFlow::LocalSourceNode trackSingletonMethod0(MethodBase method, TypeT
216230 exists ( Module m | result = trackModule ( m ) and moduleFlowsToSingletonMethodObject ( m , method ) )
217231 )
218232 or
219- exists ( TypeTracker t2 | result = trackSingletonMethod0 ( method , t2 ) .track ( t2 , t ) )
233+ exists ( TypeTracker t2 , StepSummary summary |
234+ result = trackSingletonMethod0Rec ( method , t2 , summary ) and t = t2 .append ( summary )
235+ )
236+ }
237+
238+ pragma [ nomagic]
239+ private DataFlow:: LocalSourceNode trackSingletonMethod0Rec (
240+ MethodBase method , TypeTracker t , StepSummary summary
241+ ) {
242+ StepSummary:: step ( trackSingletonMethod0 ( method , t ) , result , summary )
220243}
221244
222245pragma [ nomagic]
@@ -244,7 +267,14 @@ private DataFlow::LocalSourceNode trackModule(Module tp, TypeTracker t) {
244267 result = selfInModule ( tp )
245268 )
246269 or
247- exists ( TypeTracker t2 | result = trackModule ( tp , t2 ) .track ( t2 , t ) )
270+ exists ( TypeTracker t2 , StepSummary summary |
271+ result = trackModuleRec ( tp , t2 , summary ) and t = t2 .append ( summary )
272+ )
273+ }
274+
275+ pragma [ nomagic]
276+ private DataFlow:: LocalSourceNode trackModuleRec ( Module tp , TypeTracker t , StepSummary summary ) {
277+ StepSummary:: step ( trackModule ( tp , t ) , result , summary )
248278}
249279
250280private DataFlow:: LocalSourceNode trackModule ( Module tp ) {
0 commit comments