diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index ac24a5910c..0d31e14bec 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -127,7 +127,7 @@ export default class ExpressionParser extends LValParser { const startPos = this.state.start; const startLoc = this.state.startLoc; if (this.match(tt._yield) && this.state.inGenerator) { - let left = this.parseYield(); + let left = this.parseYield(noIn); if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); } @@ -2063,7 +2063,7 @@ export default class ExpressionParser extends LValParser { // Parses yield expression inside generator. - parseYield(): N.YieldExpression { + parseYield(noIn?: ?boolean): N.YieldExpression { const node = this.startNode(); if (this.state.inParameters) { @@ -2088,7 +2088,7 @@ export default class ExpressionParser extends LValParser { node.argument = null; } else { node.delegate = this.eat(tt.star); - node.argument = this.parseMaybeAssign(); + node.argument = this.parseMaybeAssign(noIn); } return this.finishNode(node, "YieldExpression"); } diff --git a/packages/babel-parser/test/fixtures/es2015/yield/in-iterator-stmt/input.js b/packages/babel-parser/test/fixtures/es2015/yield/in-iterator-stmt/input.js new file mode 100644 index 0000000000..0fcdd4ad28 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/yield/in-iterator-stmt/input.js @@ -0,0 +1,3 @@ +function* g() { + for (yield '' in {}; ; ) ; +} diff --git a/packages/babel-parser/test/fixtures/es2015/yield/in-iterator-stmt/options.json b/packages/babel-parser/test/fixtures/es2015/yield/in-iterator-stmt/options.json new file mode 100644 index 0000000000..518b8850b1 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/yield/in-iterator-stmt/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Invalid left-hand side in for-in statement (2:7)" +} \ No newline at end of file diff --git a/scripts/tests/test262/test262_whitelist.txt b/scripts/tests/test262/test262_whitelist.txt index e65ad9097d..2ec29e8b03 100644 --- a/scripts/tests/test262/test262_whitelist.txt +++ b/scripts/tests/test262/test262_whitelist.txt @@ -809,10 +809,6 @@ language/expressions/template-literal/invalid-legacy-octal-escape-sequence.js(de language/expressions/template-literal/invalid-legacy-octal-escape-sequence.js(strict mode) language/expressions/template-literal/unicode-escape-nls-err.js(default) language/expressions/template-literal/unicode-escape-nls-err.js(strict mode) -language/expressions/yield/in-iteration-stmt.js(default) -language/expressions/yield/in-iteration-stmt.js(strict mode) -language/expressions/yield/star-in-iteration-stmt.js(default) -language/expressions/yield/star-in-iteration-stmt.js(strict mode) language/global-code/new.target-arrow.js(default) language/global-code/new.target-arrow.js(strict mode) language/identifiers/unicode-escape-nls-err.js(default)