diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index d89aa6b115..49e26fe9fb 100644 --- a/packages/babel-parser/src/parser/statement.js +++ b/packages/babel-parser/src/parser/statement.js @@ -951,7 +951,10 @@ export default class StatementParser extends ExpressionParser { node.await = awaitAt > -1; } node.left = init; - node.right = this.parseExpression(); + node.right = + type === "ForInStatement" + ? this.parseExpression() + : this.parseMaybeAssign(); this.expect(tt.parenR); node.body = diff --git a/packages/babel-parser/test/fixtures/es2015/for-of/invalid-expr/input.js b/packages/babel-parser/test/fixtures/es2015/for-of/invalid-expr/input.js new file mode 100644 index 0000000000..90f5a5a327 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/for-of/invalid-expr/input.js @@ -0,0 +1 @@ +for (let x of y, z) {} diff --git a/packages/babel-parser/test/fixtures/es2015/for-of/invalid-expr/options.json b/packages/babel-parser/test/fixtures/es2015/for-of/invalid-expr/options.json new file mode 100644 index 0000000000..e4ff6fef3c --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/for-of/invalid-expr/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Unexpected token, expected \")\" (1:15)" +} \ No newline at end of file diff --git a/scripts/tests/test262/test262_whitelist.txt b/scripts/tests/test262/test262_whitelist.txt index b936b9a595..7afcaf42e4 100644 --- a/scripts/tests/test262/test262_whitelist.txt +++ b/scripts/tests/test262/test262_whitelist.txt @@ -708,10 +708,4 @@ language/statements/for-in/dstr/array-rest-elision-invalid.js(strict mode) language/statements/for-of/dstr/array-rest-before-elision.js(default) language/statements/for-of/dstr/array-rest-before-elision.js(strict mode) language/statements/for-of/dstr/array-rest-elision-invalid.js(default) -language/statements/for-of/dstr/array-rest-elision-invalid.js(strict mode) -language/statements/for-of/head-decl-no-expr.js(default) -language/statements/for-of/head-decl-no-expr.js(strict mode) -language/statements/for-of/head-expr-no-expr.js(default) -language/statements/for-of/head-expr-no-expr.js(strict mode) -language/statements/for-of/head-var-no-expr.js(default) -language/statements/for-of/head-var-no-expr.js(strict mode) \ No newline at end of file +language/statements/for-of/dstr/array-rest-elision-invalid.js(strict mode) \ No newline at end of file