From 64338e17f4a5f4171b888831be3259eee1829330 Mon Sep 17 00:00:00 2001 From: Daniel Tschinder Date: Mon, 25 Mar 2019 14:21:04 -0700 Subject: [PATCH] Parse right-hand-side of for/of as an assignment expression --- packages/babel-parser/src/parser/statement.js | 5 ++++- .../test/fixtures/es2015/for-of/invalid-expr/input.js | 1 + .../test/fixtures/es2015/for-of/invalid-expr/options.json | 3 +++ scripts/tests/test262/test262_whitelist.txt | 8 +------- 4 files changed, 9 insertions(+), 8 deletions(-) create mode 100644 packages/babel-parser/test/fixtures/es2015/for-of/invalid-expr/input.js create mode 100644 packages/babel-parser/test/fixtures/es2015/for-of/invalid-expr/options.json diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index d89aa6b11567..49e26fe9fb3e 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 000000000000..90f5a5a32748 --- /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 000000000000..e4ff6fef3cde --- /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 b936b9a595e2..7afcaf42e443 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