diff --git a/src/babel/generation/generators/classes.js b/src/babel/generation/generators/classes.js index cd8b67ada5..cc29b0115e 100644 --- a/src/babel/generation/generators/classes.js +++ b/src/babel/generation/generators/classes.js @@ -1,5 +1,5 @@ export function ClassDeclaration(node, print) { - print.list(node.decorators); + print.list(node.decorators, { separator: "" }); this.push("class"); if (node.id) { @@ -43,7 +43,7 @@ export function ClassBody(node, print) { export function ClassProperty(node, print) { - print.list(node.decorators); + print.list(node.decorators, { separator: "" }); if (node.static) this.push("static "); print.plain(node.key); @@ -58,7 +58,7 @@ export function ClassProperty(node, print) { } export function MethodDefinition(node, print) { - print.list(node.decorators); + print.list(node.decorators, { separator: "" }); if (node.static) { this.push("static "); diff --git a/src/babel/generation/generators/types.js b/src/babel/generation/generators/types.js index 8644ed0fd8..ad7c452974 100644 --- a/src/babel/generation/generators/types.js +++ b/src/babel/generation/generators/types.js @@ -33,6 +33,8 @@ export function ObjectExpression(node, print) { export { ObjectExpression as ObjectPattern }; export function Property(node, print) { + print.list(node.decorators, { separator: "" }); + if (node.method || node.kind === "get" || node.kind === "set") { this._method(node, print); } else { diff --git a/test/core/fixtures/generation/types/Decorator/actual.js b/test/core/fixtures/generation/types/Decorator/actual.js new file mode 100644 index 0000000000..d0b6d43621 --- /dev/null +++ b/test/core/fixtures/generation/types/Decorator/actual.js @@ -0,0 +1,31 @@ +var obj = { + @foo + @bar + foo: "bar", + + @foo + @bar + foo() {}, + + @foo + get foo() {}, + + @bar + set bar(foo) {} +}; + +class Foo { + @foo + @bar + foo() {} + + @foo + @bar + foo() {} + + @foo + get foo() {} + + @bar + set bar(foo) {} +} diff --git a/test/core/fixtures/generation/types/Decorator/expected.js b/test/core/fixtures/generation/types/Decorator/expected.js new file mode 100644 index 0000000000..d0b6d43621 --- /dev/null +++ b/test/core/fixtures/generation/types/Decorator/expected.js @@ -0,0 +1,31 @@ +var obj = { + @foo + @bar + foo: "bar", + + @foo + @bar + foo() {}, + + @foo + get foo() {}, + + @bar + set bar(foo) {} +}; + +class Foo { + @foo + @bar + foo() {} + + @foo + @bar + foo() {} + + @foo + get foo() {} + + @bar + set bar(foo) {} +} diff --git a/test/core/generation.js b/test/core/generation.js index b1f08a2908..657983c214 100644 --- a/test/core/generation.js +++ b/test/core/generation.js @@ -32,6 +32,7 @@ _.each(helper.get("generation"), function (testSuite) { strictMode: false, sourceType: "module", features: { + "es7.decorators": true, "es7.comprehensions": true, "es7.asyncFunctions": true, "es7.exportExtensions": true,