File tree Expand file tree Collapse file tree 3 files changed +23
-1
lines changed
test/library-tests/Generators Expand file tree Collapse file tree 3 files changed +23
-1
lines changed Original file line number Diff line number Diff line change @@ -27,6 +27,7 @@ import semmle.javascript.Extend
2727import semmle.javascript.Externs
2828import semmle.javascript.Files
2929import semmle.javascript.Functions
30+ import semmle.javascript.Generators
3031import semmle.javascript.GlobalAccessPaths
3132import semmle.javascript.HTML
3233import semmle.javascript.HtmlSanitizers
Original file line number Diff line number Diff line change 1+ import javascript
2+ private import semmle.javascript.dataflow.internal.PreCallGraphStep
3+
4+ /**
5+ * Classes and predicates for modelling data-flow for generator functions.
6+ */
7+ private module GeneratorDataFlow {
8+ private import DataFlow:: PseudoProperties
9+
10+ private class ArrayIteration extends PreCallGraphStep {
11+ override predicate storeStep ( DataFlow:: Node pred , DataFlow:: SourceNode succ , string prop ) {
12+ exists ( DataFlow:: FunctionNode f | f .getFunction ( ) .isGenerator ( ) |
13+ prop = iteratorElement ( ) and
14+ exists ( YieldExpr yield | yield .getContainer ( ) = f .getFunction ( ) |
15+ pred .asExpr ( ) = yield .getOperand ( )
16+ ) and
17+ succ = f .getReturnNode ( )
18+ )
19+ }
20+ }
21+ }
Original file line number Diff line number Diff line change 66 yield source ;
77 }
88 for ( const x of gen1 ( ) ) {
9- sink ( x ) ; // NOT OK - but not found yet [INCONSISTENCY]
9+ sink ( x ) ; // NOT OK
1010 }
1111
1212 function * gen2 ( ) {
You can’t perform that action at this time.
0 commit comments