@@ -738,25 +738,27 @@ module API {
738738 boundArgs in [ 0 .. 10 ]
739739 )
740740 or
741- exists ( StepSummary summary |
742- t = useStep ( nd , promisified , boundArgs , result , summary ) .append ( summary )
743- )
741+ t = useStep ( nd , promisified , boundArgs , result )
744742 }
745743
746744 private import semmle.javascript.dataflow.internal.StepSummary
747745
748746 /**
749747 * Holds if `nd`, which is a use of an API-graph node, flows in zero or more potentially
750748 * inter-procedural steps to some intermediate node, and then from that intermediate node to
751- * `res` in one step described by `summary` .
749+ * `res` in one step described by the resulting TypeTracker .
752750 *
753751 * This predicate exists solely to enforce a better join order in `trackUseNode` above.
754752 */
755- pragma [ noinline ]
753+ pragma [ noopt ]
756754 private DataFlow:: TypeTracker useStep (
757- DataFlow:: Node nd , boolean promisified , int boundArgs , DataFlow:: Node res , StepSummary summary
755+ DataFlow:: Node nd , boolean promisified , int boundArgs , DataFlow:: Node res
758756 ) {
759- StepSummary:: step ( trackUseNode ( nd , promisified , boundArgs , result ) , res , summary )
757+ exists ( DataFlow:: TypeTracker t , StepSummary summary , DataFlow:: SourceNode prev |
758+ prev = trackUseNode ( nd , promisified , boundArgs , t ) and
759+ StepSummary:: step ( prev , res , summary ) and
760+ result = t .append ( summary )
761+ )
760762 }
761763
762764 private DataFlow:: SourceNode trackUseNode (
0 commit comments