From 7a41d58188183cb0c0f184762e750d92ae56184f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Fri, 7 Aug 2020 16:43:14 -0400 Subject: [PATCH] fix: ExpressionBody should respect [In] parameter --- packages/babel-parser/src/parser/expression.js | 3 ++- .../fixtures/es2015/arrow-functions/no-for-in-init/input.js | 1 + .../es2015/arrow-functions/no-for-in-init/options.json | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 packages/babel-parser/test/fixtures/es2015/arrow-functions/no-for-in-init/input.js create mode 100644 packages/babel-parser/test/fixtures/es2015/arrow-functions/no-for-in-init/options.json diff --git a/packages/babel-parser/src/parser/expression.js b/packages/babel-parser/src/parser/expression.js index c715cdf23e1c..48700da44ab5 100644 --- a/packages/babel-parser/src/parser/expression.js +++ b/packages/babel-parser/src/parser/expression.js @@ -2110,7 +2110,8 @@ export default class ExpressionParser extends LValParser { this.state.inParameters = false; if (isExpression) { - node.body = this.parseMaybeAssignAllowIn(); + // https://tc39.es/ecma262/#prod-ExpressionBody + node.body = this.parseMaybeAssign(); this.checkParams(node, false, allowExpression, false); } else { const oldStrict = this.state.strict; diff --git a/packages/babel-parser/test/fixtures/es2015/arrow-functions/no-for-in-init/input.js b/packages/babel-parser/test/fixtures/es2015/arrow-functions/no-for-in-init/input.js new file mode 100644 index 000000000000..dbd82197960c --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/arrow-functions/no-for-in-init/input.js @@ -0,0 +1 @@ +for (() => x in y;;); diff --git a/packages/babel-parser/test/fixtures/es2015/arrow-functions/no-for-in-init/options.json b/packages/babel-parser/test/fixtures/es2015/arrow-functions/no-for-in-init/options.json new file mode 100644 index 000000000000..fefc8a397fe9 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/arrow-functions/no-for-in-init/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Unexpected token, expected \")\" (1:17)" +} \ No newline at end of file