diff --git a/packages/babel-plugin-proposal-decorators/test/fixtures/decl-to-expression/class-decorators/output.js b/packages/babel-plugin-proposal-decorators/test/fixtures/decl-to-expression/class-decorators/output.js index 1070d97d7b..6690898009 100644 --- a/packages/babel-plugin-proposal-decorators/test/fixtures/decl-to-expression/class-decorators/output.js +++ b/packages/babel-plugin-proposal-decorators/test/fixtures/decl-to-expression/class-decorators/output.js @@ -1,5 +1,7 @@ var _class, _class2; -export default dec(_class = class A {}) || _class; +let A = dec(_class2 = class A {}) || _class2; -let B = dec(_class2 = class B {}) || _class2; +export { A as default }; + +let B = dec(_class = class B {}) || _class; diff --git a/packages/babylon/src/parser/statement.js b/packages/babylon/src/parser/statement.js index 39f112595d..1d443f06f7 100644 --- a/packages/babylon/src/parser/statement.js +++ b/packages/babylon/src/parser/statement.js @@ -1368,6 +1368,9 @@ export default class StatementParser extends ExpressionParser { return this.parseFunction(expr, true, false, true, true); } else if (this.match(tt._class)) { return this.parseClass(expr, true, true); + } else if (this.match(tt.at)) { + this.parseDecorators(false); + return this.parseClass(expr, true, true); } else { const res = this.parseMaybeAssign(); this.semicolon(); diff --git a/packages/babylon/test/fixtures/experimental/decorators-2/export-default-decorated-class/output.json b/packages/babylon/test/fixtures/experimental/decorators-2/export-default-decorated-class/output.json index bbfcc7fcca..973e5b5604 100644 --- a/packages/babylon/test/fixtures/experimental/decorators-2/export-default-decorated-class/output.json +++ b/packages/babylon/test/fixtures/experimental/decorators-2/export-default-decorated-class/output.json @@ -43,7 +43,7 @@ } }, "declaration": { - "type": "ClassExpression", + "type": "ClassDeclaration", "start": 16, "end": 34, "loc": { @@ -129,4 +129,4 @@ ], "directives": [] } -} \ No newline at end of file +}