File tree Expand file tree Collapse file tree
javascript/ql/src/semmle/javascript Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -790,7 +790,23 @@ module API {
790790 )
791791 )
792792 or
793- exists ( DataFlow:: TypeBackTracker t2 | result = trackDefNode ( nd , t2 ) .backtrack ( t2 , t ) )
793+ t = defStep ( nd , result )
794+ }
795+
796+ /**
797+ * Holds if `nd`, which is a def of an API-graph node, flows in zero or more potentially
798+ * inter-procedural steps from some intermediate node, and then to that intermediate node from
799+ * `prev` in one step described by the resulting TypeTracker.
800+ *
801+ * This predicate exists solely to enforce a better join order in `trackDefNode` above.
802+ */
803+ pragma [ noopt]
804+ private DataFlow:: TypeBackTracker defStep ( DataFlow:: Node nd , DataFlow:: SourceNode prev ) {
805+ exists ( DataFlow:: TypeBackTracker t , StepSummary summary , DataFlow:: Node next |
806+ next = trackDefNode ( nd , t ) and
807+ StepSummary:: step ( prev , next , summary ) and
808+ result = t .prepend ( summary )
809+ )
794810 }
795811
796812 /**
You can’t perform that action at this time.
0 commit comments