From 65ae4ff15b36bf11a00989d3f11a4720bf072629 Mon Sep 17 00:00:00 2001 From: Naveen jain Date: Tue, 30 Jan 2018 22:30:29 +0530 Subject: [PATCH] Fix: export default decorated class parsed as class expression (#7189) --- .../fixtures/decl-to-expression/class-decorators/output.js | 6 ++++-- packages/babylon/src/parser/statement.js | 3 +++ .../decorators-2/export-default-decorated-class/output.json | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) 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 +}