@@ -738,25 +738,27 @@ module API {
738
738
boundArgs in [ 0 .. 10 ]
739
739
)
740
740
or
741
- exists ( StepSummary summary |
742
- t = useStep ( nd , promisified , boundArgs , result , summary ) .append ( summary )
743
- )
741
+ t = useStep ( nd , promisified , boundArgs , result )
744
742
}
745
743
746
744
private import semmle.javascript.dataflow.internal.StepSummary
747
745
748
746
/**
749
747
* Holds if `nd`, which is a use of an API-graph node, flows in zero or more potentially
750
748
* 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 .
752
750
*
753
751
* This predicate exists solely to enforce a better join order in `trackUseNode` above.
754
752
*/
755
- pragma [ noinline ]
753
+ pragma [ noopt ]
756
754
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
758
756
) {
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
+ )
760
762
}
761
763
762
764
private DataFlow:: SourceNode trackUseNode (
0 commit comments