diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index 1f895ee973f9..0f6ce71dcf31 100644 --- a/packages/babel-parser/src/parser/statement.js +++ b/packages/babel-parser/src/parser/statement.js @@ -1442,11 +1442,9 @@ export default class StatementParser extends ExpressionParser { return; } - const containsEsc = this.state.containsEsc; + const isContextual = this.match(tt.name) && !this.state.containsEsc; const isPrivate = this.match(tt.privateName); const key = this.parseClassElementName(member); - // Check the key is not a computed expression or string literal. - const isSimple = key.type === "Identifier"; const maybeQuestionTokenStart = this.state.start; this.parsePostMemberNameModifiers(publicMember); @@ -1491,9 +1489,8 @@ export default class StatementParser extends ExpressionParser { this.pushClassProperty(classBody, publicProp); } } else if ( - isSimple && + isContextual && key.name === "async" && - !containsEsc && !this.isLineTerminator() ) { // an async method @@ -1532,9 +1529,8 @@ export default class StatementParser extends ExpressionParser { ); } } else if ( - isSimple && + isContextual && (key.name === "get" || key.name === "set") && - !containsEsc && !(this.match(tt.star) && this.isLineTerminator()) ) { // `get\n*` is an uninitialized property named 'get' followed by a generator. diff --git a/packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-async-identifier/input.js b/packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-async-identifier/input.js new file mode 100644 index 000000000000..b565a2946faa --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-async-identifier/input.js @@ -0,0 +1,3 @@ +class A { + [async] a() {} +} diff --git a/packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-async-identifier/options.json b/packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-async-identifier/options.json new file mode 100644 index 000000000000..239667c16b9e --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-async-identifier/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Unexpected token (2:10)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-async/input.js b/packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-async-string/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-async/input.js rename to packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-async-string/input.js diff --git a/packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-async/options.json b/packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-async-string/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-async/options.json rename to packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-async-string/options.json diff --git a/packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-get-identifier/input.js b/packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-get-identifier/input.js new file mode 100644 index 000000000000..c9bd13ebefd0 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-get-identifier/input.js @@ -0,0 +1,3 @@ +class A { + [get] a() {} +} diff --git a/packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-get-identifier/options.json b/packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-get-identifier/options.json new file mode 100644 index 000000000000..c7c23f0899e3 --- /dev/null +++ b/packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-get-identifier/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Unexpected token (2:8)" +} \ No newline at end of file diff --git a/packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-get/input.js b/packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-get-string/input.js similarity index 100% rename from packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-get/input.js rename to packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-get-string/input.js diff --git a/packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-get/options.json b/packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-get-string/options.json similarity index 100% rename from packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-get/options.json rename to packages/babel-parser/test/fixtures/es2015/class-methods/disallow-computed-get-string/options.json