Correctly fail for invalid yield in for (#9398)
This commit is contained in:
parent
d4e045ac24
commit
42c5d3fc4b
@ -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");
|
||||
}
|
||||
|
||||
3
packages/babel-parser/test/fixtures/es2015/yield/in-iterator-stmt/input.js
vendored
Normal file
3
packages/babel-parser/test/fixtures/es2015/yield/in-iterator-stmt/input.js
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
function* g() {
|
||||
for (yield '' in {}; ; ) ;
|
||||
}
|
||||
3
packages/babel-parser/test/fixtures/es2015/yield/in-iterator-stmt/options.json
vendored
Normal file
3
packages/babel-parser/test/fixtures/es2015/yield/in-iterator-stmt/options.json
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"throws": "Invalid left-hand side in for-in statement (2:7)"
|
||||
}
|
||||
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user