diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index 0e83b088cc15..4891cf52f2c2 100644 --- a/packages/babel-parser/src/parser/statement.js +++ b/packages/babel-parser/src/parser/statement.js @@ -390,7 +390,7 @@ export default class StatementParser extends ExpressionParser { node.expression = this.parseMaybeDecoratorArguments(expr); this.state.decoratorStack.pop(); } else { - node.expression = this.parseMaybeAssign(); + node.expression = this.parseExprSubscripts(); } return this.finishNode(node, "Decorator"); } diff --git a/packages/babel-parser/test/fixtures/experimental/decorators/method-generator-decorator/input.js b/packages/babel-parser/test/fixtures/experimental/decorators/method-generator-decorator/input.js new file mode 100644 index 000000000000..fe45bb8682d9 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decorators/method-generator-decorator/input.js @@ -0,0 +1,4 @@ +class Foo { + @deco + *generatorMethod() {} +} diff --git a/packages/babel-parser/test/fixtures/experimental/decorators/method-generator-decorator/output.json b/packages/babel-parser/test/fixtures/experimental/decorators/method-generator-decorator/output.json new file mode 100644 index 000000000000..8fb4c84a2e60 --- /dev/null +++ b/packages/babel-parser/test/fixtures/experimental/decorators/method-generator-decorator/output.json @@ -0,0 +1,175 @@ +{ + "type": "File", + "start": 0, + "end": 45, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 4, + "column": 1 + } + }, + "program": { + "type": "Program", + "start": 0, + "end": 45, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 4, + "column": 1 + } + }, + "sourceType": "script", + "interpreter": null, + "body": [ + { + "type": "ClassDeclaration", + "start": 0, + "end": 45, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 4, + "column": 1 + } + }, + "id": { + "type": "Identifier", + "start": 6, + "end": 9, + "loc": { + "start": { + "line": 1, + "column": 6 + }, + "end": { + "line": 1, + "column": 9 + }, + "identifierName": "Foo" + }, + "name": "Foo" + }, + "superClass": null, + "body": { + "type": "ClassBody", + "start": 10, + "end": 45, + "loc": { + "start": { + "line": 1, + "column": 10 + }, + "end": { + "line": 4, + "column": 1 + } + }, + "body": [ + { + "type": "ClassMethod", + "start": 14, + "end": 43, + "loc": { + "start": { + "line": 2, + "column": 2 + }, + "end": { + "line": 3, + "column": 23 + } + }, + "decorators": [ + { + "type": "Decorator", + "start": 14, + "end": 19, + "loc": { + "start": { + "line": 2, + "column": 2 + }, + "end": { + "line": 2, + "column": 7 + } + }, + "expression": { + "type": "Identifier", + "start": 15, + "end": 19, + "loc": { + "start": { + "line": 2, + "column": 3 + }, + "end": { + "line": 2, + "column": 7 + }, + "identifierName": "deco" + }, + "name": "deco" + } + } + ], + "static": false, + "kind": "method", + "key": { + "type": "Identifier", + "start": 23, + "end": 38, + "loc": { + "start": { + "line": 3, + "column": 3 + }, + "end": { + "line": 3, + "column": 18 + }, + "identifierName": "generatorMethod" + }, + "name": "generatorMethod" + }, + "computed": false, + "id": null, + "generator": true, + "async": false, + "params": [], + "body": { + "type": "BlockStatement", + "start": 41, + "end": 43, + "loc": { + "start": { + "line": 3, + "column": 21 + }, + "end": { + "line": 3, + "column": 23 + } + }, + "body": [], + "directives": [] + } + } + ] + } + } + ], + "directives": [] + } +} \ No newline at end of file diff --git a/scripts/tests/flow/flow_tests_whitelist.txt b/scripts/tests/flow/flow_tests_whitelist.txt index 60ee5e0e6e98..87abe58e9f6a 100644 --- a/scripts/tests/flow/flow_tests_whitelist.txt +++ b/scripts/tests/flow/flow_tests_whitelist.txt @@ -22,7 +22,6 @@ class_properties/migrated_0016.js class_properties/migrated_0021.js class_properties/migrated_0026.js decorators/migrated_0003.js -decorators/migrated_0007.js private_class_properties/multiple.js private_class_properties/super.js types/member/reserved_words.js