Skip to content

Commit 09ff926

Browse files
committed
Shared: Replace explicit recursion with a HOP.
1 parent 64d68fe commit 09ff926

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

shared/typetracking/codeql/typetracking/internal/TypeTrackingImpl.qll

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -249,20 +249,20 @@ module TypeTracking<LocationSig Location, TypeTrackingInput<Location> I> {
249249
returnStep(nodeFrom, nodeTo) and summary = ReturnStep()
250250
}
251251

252-
pragma[inline]
253-
private predicate isLocalSourceNode(LocalSourceNode n) { any() }
252+
private predicate isLocalSourceNode(LocalSourceNode n) {
253+
not nonStandardFlowsTo(_, _) and exists(n)
254+
}
255+
256+
private predicate simpleLocalSmallStepPlus(Node localSource, Node dst) =
257+
sourceBoundedFastTC(simpleLocalSmallStep/2, isLocalSourceNode/1)(localSource, dst)
254258

255259
cached
256260
predicate standardFlowsTo(Node localSource, Node dst) {
257-
not nonStandardFlowsTo(_, _) and
258261
// explicit type check in base case to avoid repeated type tests in recursive case
259262
isLocalSourceNode(localSource) and
260263
dst = localSource
261264
or
262-
exists(Node mid |
263-
standardFlowsTo(localSource, mid) and
264-
simpleLocalSmallStep(mid, dst)
265-
)
265+
simpleLocalSmallStepPlus(localSource, dst)
266266
}
267267

268268
cached

0 commit comments

Comments
 (0)