From 6620612b66d0f8216036ec4fc1355f329192adbb Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Mon, 22 May 2017 17:13:54 -0400 Subject: [PATCH 01/12] update to beta.10 --- packages/babel-core/package.json | 2 +- packages/babel-template/package.json | 2 +- packages/babel-traverse/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/babel-core/package.json b/packages/babel-core/package.json index b7f7576981..a73b183b16 100644 --- a/packages/babel-core/package.json +++ b/packages/babel-core/package.json @@ -32,7 +32,7 @@ "babel-template": "7.0.0-alpha.9", "babel-traverse": "7.0.0-alpha.9", "babel-types": "7.0.0-alpha.9", - "babylon": "7.0.0-beta.8", + "babylon": "7.0.0-beta.10", "convert-source-map": "^1.1.0", "debug": "^2.1.1", "json5": "^0.5.0", diff --git a/packages/babel-template/package.json b/packages/babel-template/package.json index 105a88749c..16735ba59a 100644 --- a/packages/babel-template/package.json +++ b/packages/babel-template/package.json @@ -8,7 +8,7 @@ "repository": "https://github.com/babel/babel/tree/master/packages/babel-template", "main": "lib/index.js", "dependencies": { - "babylon": "7.0.0-beta.8", + "babylon": "7.0.0-beta.10", "babel-traverse": "7.0.0-alpha.9", "babel-types": "7.0.0-alpha.9", "lodash": "^4.2.0" diff --git a/packages/babel-traverse/package.json b/packages/babel-traverse/package.json index cd777cd3ed..054d35dce0 100644 --- a/packages/babel-traverse/package.json +++ b/packages/babel-traverse/package.json @@ -12,7 +12,7 @@ "babel-helper-function-name": "7.0.0-alpha.7", "babel-messages": "7.0.0-alpha.9", "babel-types": "7.0.0-alpha.9", - "babylon": "7.0.0-beta.8", + "babylon": "7.0.0-beta.10", "debug": "^2.2.0", "globals": "^9.0.0", "invariant": "^2.2.0", From d365dad341f4f325d4345bc8c23c0fba89253aab Mon Sep 17 00:00:00 2001 From: Henry Zhu Date: Mon, 22 May 2017 17:48:20 -0400 Subject: [PATCH 02/12] add some tests --- .../test/fixtures/flow/declare-statements/actual.js | 1 + .../test/fixtures/flow/declare-statements/expected.js | 1 + .../test/fixtures/regression/babylon-317/actual.js | 1 + .../test/fixtures/regression/babylon-317/expected.js | 1 + packages/babel-generator/test/fixtures/types/Literal/actual.js | 1 + packages/babel-generator/test/fixtures/types/Literal/expected.js | 1 + 6 files changed, 6 insertions(+) create mode 100644 packages/babel-generator/test/fixtures/regression/babylon-317/actual.js create mode 100644 packages/babel-generator/test/fixtures/regression/babylon-317/expected.js diff --git a/packages/babel-generator/test/fixtures/flow/declare-statements/actual.js b/packages/babel-generator/test/fixtures/flow/declare-statements/actual.js index 543efd048a..d5744cfdcc 100644 --- a/packages/babel-generator/test/fixtures/flow/declare-statements/actual.js +++ b/packages/babel-generator/test/fixtures/flow/declare-statements/actual.js @@ -9,6 +9,7 @@ declare class A extends B { x: number } declare class A { static foo(): number; static x : string } declare class A { static [ indexer: number]: string } declare class A { static () : number } +declare class B { (): number } declare class A mixins B, C {} declare type A = string declare type T = { [k:string]: U } diff --git a/packages/babel-generator/test/fixtures/flow/declare-statements/expected.js b/packages/babel-generator/test/fixtures/flow/declare-statements/expected.js index 7498e25025..6f867c8eef 100644 --- a/packages/babel-generator/test/fixtures/flow/declare-statements/expected.js +++ b/packages/babel-generator/test/fixtures/flow/declare-statements/expected.js @@ -9,6 +9,7 @@ declare class A extends B { x: number } declare class A { static foo: () => number, static x: string, } declare class A { static [indexer: number]: string } declare class A { static (): number } +declare class B { (): number } declare class A mixins B, C {} declare type A = string; declare type T = { [k: string]: U }; diff --git a/packages/babel-generator/test/fixtures/regression/babylon-317/actual.js b/packages/babel-generator/test/fixtures/regression/babylon-317/actual.js new file mode 100644 index 0000000000..b2a6432b44 --- /dev/null +++ b/packages/babel-generator/test/fixtures/regression/babylon-317/actual.js @@ -0,0 +1 @@ +({ set = {} }) => set; diff --git a/packages/babel-generator/test/fixtures/regression/babylon-317/expected.js b/packages/babel-generator/test/fixtures/regression/babylon-317/expected.js new file mode 100644 index 0000000000..b2a6432b44 --- /dev/null +++ b/packages/babel-generator/test/fixtures/regression/babylon-317/expected.js @@ -0,0 +1 @@ +({ set = {} }) => set; diff --git a/packages/babel-generator/test/fixtures/types/Literal/actual.js b/packages/babel-generator/test/fixtures/types/Literal/actual.js index 6bd9f84a96..8c4a774d6d 100644 --- a/packages/babel-generator/test/fixtures/types/Literal/actual.js +++ b/packages/babel-generator/test/fixtures/types/Literal/actual.js @@ -10,3 +10,4 @@ false; 0b10; 0o70; 0X1F; +-0b1111011; diff --git a/packages/babel-generator/test/fixtures/types/Literal/expected.js b/packages/babel-generator/test/fixtures/types/Literal/expected.js index 6bd9f84a96..8c4a774d6d 100644 --- a/packages/babel-generator/test/fixtures/types/Literal/expected.js +++ b/packages/babel-generator/test/fixtures/types/Literal/expected.js @@ -10,3 +10,4 @@ false; 0b10; 0o70; 0X1F; +-0b1111011; From ec596604bc970220cecb9525b35b8fdb22430201 Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Mon, 22 May 2017 16:54:23 -0500 Subject: [PATCH 03/12] 474-export-default-exotic --- .../test/fixtures/types/ExportSpecifier16/actual.js | 1 + .../test/fixtures/types/ExportSpecifier16/expected.js | 1 + 2 files changed, 2 insertions(+) create mode 100644 packages/babel-generator/test/fixtures/types/ExportSpecifier16/actual.js create mode 100644 packages/babel-generator/test/fixtures/types/ExportSpecifier16/expected.js diff --git a/packages/babel-generator/test/fixtures/types/ExportSpecifier16/actual.js b/packages/babel-generator/test/fixtures/types/ExportSpecifier16/actual.js new file mode 100644 index 0000000000..871cd28fa8 --- /dev/null +++ b/packages/babel-generator/test/fixtures/types/ExportSpecifier16/actual.js @@ -0,0 +1 @@ +export * as default from "foo"; diff --git a/packages/babel-generator/test/fixtures/types/ExportSpecifier16/expected.js b/packages/babel-generator/test/fixtures/types/ExportSpecifier16/expected.js new file mode 100644 index 0000000000..093e9ba5f1 --- /dev/null +++ b/packages/babel-generator/test/fixtures/types/ExportSpecifier16/expected.js @@ -0,0 +1 @@ +export * as default from "foo"; \ No newline at end of file From 48ce5bcf1ce9be434861d937fbba60eca90d539c Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Mon, 22 May 2017 16:59:16 -0500 Subject: [PATCH 04/12] 499-super-class-prop --- .../test/fixtures/types/ClassBody-ClassProperty/actual.js | 2 ++ .../test/fixtures/types/ClassBody-ClassProperty/expected.js | 2 ++ 2 files changed, 4 insertions(+) diff --git a/packages/babel-generator/test/fixtures/types/ClassBody-ClassProperty/actual.js b/packages/babel-generator/test/fixtures/types/ClassBody-ClassProperty/actual.js index 25cd363323..0ee437d1cf 100644 --- a/packages/babel-generator/test/fixtures/types/ClassBody-ClassProperty/actual.js +++ b/packages/babel-generator/test/fixtures/types/ClassBody-ClassProperty/actual.js @@ -3,6 +3,7 @@ class Foo { foo = 1; "foo"; "foo" = 1; + foo = super.foo(); ["foo"]; ["foo"] = 1; ["f" + "oo"]; @@ -12,6 +13,7 @@ class Foo { static foo = 1; static "foo"; static "foo" = 1; + static foo = super.foo(); static ["foo"]; static ["foo"] = 1; static ["f" + "oo"]; diff --git a/packages/babel-generator/test/fixtures/types/ClassBody-ClassProperty/expected.js b/packages/babel-generator/test/fixtures/types/ClassBody-ClassProperty/expected.js index 25cd363323..0ee437d1cf 100644 --- a/packages/babel-generator/test/fixtures/types/ClassBody-ClassProperty/expected.js +++ b/packages/babel-generator/test/fixtures/types/ClassBody-ClassProperty/expected.js @@ -3,6 +3,7 @@ class Foo { foo = 1; "foo"; "foo" = 1; + foo = super.foo(); ["foo"]; ["foo"] = 1; ["f" + "oo"]; @@ -12,6 +13,7 @@ class Foo { static foo = 1; static "foo"; static "foo" = 1; + static foo = super.foo(); static ["foo"]; static ["foo"] = 1; static ["f" + "oo"]; From 6c6ee74eb0442703fb8f49eaa0ee20a530a0e986 Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Mon, 22 May 2017 17:26:15 -0500 Subject: [PATCH 05/12] 351-class-prop --- .../types/ClassBody-ClassProperty/actual.js | 47 +++++++++++++++++++ .../types/ClassBody-ClassProperty/expected.js | 40 ++++++++++++++++ .../ClassBody-MethodDefinition/actual.js | 42 +++++++++++++++++ .../ClassBody-MethodDefinition/expected.js | 23 +++++++++ 4 files changed, 152 insertions(+) diff --git a/packages/babel-generator/test/fixtures/types/ClassBody-ClassProperty/actual.js b/packages/babel-generator/test/fixtures/types/ClassBody-ClassProperty/actual.js index 0ee437d1cf..41176ad01b 100644 --- a/packages/babel-generator/test/fixtures/types/ClassBody-ClassProperty/actual.js +++ b/packages/babel-generator/test/fixtures/types/ClassBody-ClassProperty/actual.js @@ -18,4 +18,51 @@ class Foo { static ["foo"] = 1; static ["f" + "oo"]; static ["f" + "oo"] = 1; + + get; + set; + static; + static = 1; + async; + foo; bar; + foo = 0; bar = 1; +} + +class A1 { + static + a + static +} + +class A2 { + get + *a(){} +} + +class A3 { + static + *a(){} +} + +class A4 { + async + a(){} +} + +class A5 { + static + async + a +} + +class A6 { + get + ['a'](){} +} + +class A7 { + static + get + static + (){} } diff --git a/packages/babel-generator/test/fixtures/types/ClassBody-ClassProperty/expected.js b/packages/babel-generator/test/fixtures/types/ClassBody-ClassProperty/expected.js index 0ee437d1cf..53ba841703 100644 --- a/packages/babel-generator/test/fixtures/types/ClassBody-ClassProperty/expected.js +++ b/packages/babel-generator/test/fixtures/types/ClassBody-ClassProperty/expected.js @@ -18,4 +18,44 @@ class Foo { static ["foo"] = 1; static ["f" + "oo"]; static ["f" + "oo"] = 1; + + get; + set; + static; + static = 1; + async; + foo;bar; + foo = 0;bar = 1; +} + +class A1 { + static a; + static; +} + +class A2 { + get; + *a() {} +} + +class A3 { + static *a() {} +} + +class A4 { + async; + a() {} +} + +class A5 { + static async; + a; +} + +class A6 { + get ['a']() {} +} + +class A7 { + static get static() {} } diff --git a/packages/babel-generator/test/fixtures/types/ClassBody-MethodDefinition/actual.js b/packages/babel-generator/test/fixtures/types/ClassBody-MethodDefinition/actual.js index 1e431aa75b..bec3598e32 100644 --- a/packages/babel-generator/test/fixtures/types/ClassBody-MethodDefinition/actual.js +++ b/packages/babel-generator/test/fixtures/types/ClassBody-MethodDefinition/actual.js @@ -10,4 +10,46 @@ class Foo { static ["foo"]() {} static get foo() {} static set foo(bar) {} + static static() {} + + get + () {} + + set + () {} + + static + () {} + + async + () {} + + static + get + () {} + + static + set + () {} + + static + static + () {} + + static + async + () {} + + static + a + () {} + + get + async + () {} + + static + get + static + () {} } diff --git a/packages/babel-generator/test/fixtures/types/ClassBody-MethodDefinition/expected.js b/packages/babel-generator/test/fixtures/types/ClassBody-MethodDefinition/expected.js index 1e431aa75b..e73bae2cbf 100644 --- a/packages/babel-generator/test/fixtures/types/ClassBody-MethodDefinition/expected.js +++ b/packages/babel-generator/test/fixtures/types/ClassBody-MethodDefinition/expected.js @@ -10,4 +10,27 @@ class Foo { static ["foo"]() {} static get foo() {} static set foo(bar) {} + static static() {} + + get() {} + + set() {} + + static() {} + + async() {} + + static get() {} + + static set() {} + + static static() {} + + static async() {} + + static a() {} + + get async() {} + + static get static() {} } From 889a505ffdc57486cb3958d2f7682e9b361d786d Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Mon, 22 May 2017 17:35:01 -0500 Subject: [PATCH 06/12] 377-async-func-decl --- .../test/fixtures/types/ExportDefaultDeclaration10/actual.js | 1 + .../test/fixtures/types/ExportDefaultDeclaration10/expected.js | 1 + .../test/fixtures/types/ExportDefaultDeclaration11/actual.js | 1 + .../test/fixtures/types/ExportDefaultDeclaration11/expected.js | 1 + .../test/fixtures/types/ExportDefaultDeclaration9/actual.js | 1 + .../test/fixtures/types/ExportDefaultDeclaration9/expected.js | 1 + 6 files changed, 6 insertions(+) create mode 100644 packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration10/actual.js create mode 100644 packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration10/expected.js create mode 100644 packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration11/actual.js create mode 100644 packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration11/expected.js create mode 100644 packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration9/actual.js create mode 100644 packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration9/expected.js diff --git a/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration10/actual.js b/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration10/actual.js new file mode 100644 index 0000000000..7c26b9ed68 --- /dev/null +++ b/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration10/actual.js @@ -0,0 +1 @@ +export async function foo() {} diff --git a/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration10/expected.js b/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration10/expected.js new file mode 100644 index 0000000000..bfb64da594 --- /dev/null +++ b/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration10/expected.js @@ -0,0 +1 @@ +export async function foo() {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration11/actual.js b/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration11/actual.js new file mode 100644 index 0000000000..b5d8066db5 --- /dev/null +++ b/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration11/actual.js @@ -0,0 +1 @@ +export default async () => await foo() diff --git a/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration11/expected.js b/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration11/expected.js new file mode 100644 index 0000000000..3bec97976a --- /dev/null +++ b/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration11/expected.js @@ -0,0 +1 @@ +export default (async () => await foo()); \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration9/actual.js b/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration9/actual.js new file mode 100644 index 0000000000..8db00b63ab --- /dev/null +++ b/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration9/actual.js @@ -0,0 +1 @@ +export default async function bar() {} diff --git a/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration9/expected.js b/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration9/expected.js new file mode 100644 index 0000000000..f3288c7d18 --- /dev/null +++ b/packages/babel-generator/test/fixtures/types/ExportDefaultDeclaration9/expected.js @@ -0,0 +1 @@ +export default async function bar() {} \ No newline at end of file From 01d5d5ebc72161968d4e339b636823704dda9c44 Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Tue, 23 May 2017 07:58:22 -0500 Subject: [PATCH 07/12] 499-transform --- .../test/fixtures/spec/super-call/actual.js | 9 ++++++ .../test/fixtures/spec/super-call/expected.js | 30 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-call/actual.js create mode 100644 packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-call/expected.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-call/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-call/actual.js new file mode 100644 index 0000000000..175fc704e7 --- /dev/null +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-call/actual.js @@ -0,0 +1,9 @@ +class A { + foo() { + return "bar"; + } +} + +class B extends A { + foo = super.foo(); +} diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-call/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-call/expected.js new file mode 100644 index 0000000000..fa4db4fa64 --- /dev/null +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-call/expected.js @@ -0,0 +1,30 @@ +var A = function () { + function A() { + babelHelpers.classCallCheck(this, A); + } + + babelHelpers.createClass(A, [{ + key: 'foo', + value: function foo() { + return 'bar'; + } + }]); + return A; +}(); + +var B = function (_A) { + babelHelpers.inherits(B, _A); + + function B(...args) { + var _temp, _this, _ret; + + babelHelpers.classCallCheck(this, B); + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (B.__proto__ || Object.getPrototypeOf(B)).call(this, ...args)), _this), Object.defineProperty(_this, 'foo', { + enumerable: true, + writable: true, + value: babelHelpers.get(B.prototype.__proto__ || Object.getPrototypeOf(B.prototype), 'foo', _this).call(_this) + }), _temp), babelHelpers.possibleConstructorReturn(_this, _ret); + } + + return B; +}(A); From afe85c11a7238026b6a0f1b9fc5700a0ade7a1ae Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Tue, 23 May 2017 08:05:42 -0500 Subject: [PATCH 08/12] 474-transform --- .../test/fixtures/spec/super-call/expected.js | 10 +++++----- .../export-extensions/namespace-default/actual.js | 1 + .../export-extensions/namespace-default/expected.js | 2 ++ .../export-extensions/namespace-default/options.json | 3 +++ 4 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 packages/babel-plugin-transform-export-extensions/test/fixtures/export-extensions/namespace-default/actual.js create mode 100644 packages/babel-plugin-transform-export-extensions/test/fixtures/export-extensions/namespace-default/expected.js create mode 100644 packages/babel-plugin-transform-export-extensions/test/fixtures/export-extensions/namespace-default/options.json diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-call/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-call/expected.js index fa4db4fa64..8ed2311f3d 100644 --- a/packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-call/expected.js +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/spec/super-call/expected.js @@ -4,9 +4,9 @@ var A = function () { } babelHelpers.createClass(A, [{ - key: 'foo', + key: "foo", value: function foo() { - return 'bar'; + return "bar"; } }]); return A; @@ -19,12 +19,12 @@ var B = function (_A) { var _temp, _this, _ret; babelHelpers.classCallCheck(this, B); - return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (B.__proto__ || Object.getPrototypeOf(B)).call(this, ...args)), _this), Object.defineProperty(_this, 'foo', { + return _ret = (_temp = (_this = babelHelpers.possibleConstructorReturn(this, (B.__proto__ || Object.getPrototypeOf(B)).call(this, ...args)), _this), Object.defineProperty(_this, "foo", { enumerable: true, writable: true, - value: babelHelpers.get(B.prototype.__proto__ || Object.getPrototypeOf(B.prototype), 'foo', _this).call(_this) + value: babelHelpers.get(B.prototype.__proto__ || Object.getPrototypeOf(B.prototype), "foo", _this).call(_this) }), _temp), babelHelpers.possibleConstructorReturn(_this, _ret); } return B; -}(A); +}(A); \ No newline at end of file diff --git a/packages/babel-plugin-transform-export-extensions/test/fixtures/export-extensions/namespace-default/actual.js b/packages/babel-plugin-transform-export-extensions/test/fixtures/export-extensions/namespace-default/actual.js new file mode 100644 index 0000000000..871cd28fa8 --- /dev/null +++ b/packages/babel-plugin-transform-export-extensions/test/fixtures/export-extensions/namespace-default/actual.js @@ -0,0 +1 @@ +export * as default from "foo"; diff --git a/packages/babel-plugin-transform-export-extensions/test/fixtures/export-extensions/namespace-default/expected.js b/packages/babel-plugin-transform-export-extensions/test/fixtures/export-extensions/namespace-default/expected.js new file mode 100644 index 0000000000..f5334b455c --- /dev/null +++ b/packages/babel-plugin-transform-export-extensions/test/fixtures/export-extensions/namespace-default/expected.js @@ -0,0 +1,2 @@ +import * as _default from "foo"; +export { _default as default }; \ No newline at end of file diff --git a/packages/babel-plugin-transform-export-extensions/test/fixtures/export-extensions/namespace-default/options.json b/packages/babel-plugin-transform-export-extensions/test/fixtures/export-extensions/namespace-default/options.json new file mode 100644 index 0000000000..26dfe134f4 --- /dev/null +++ b/packages/babel-plugin-transform-export-extensions/test/fixtures/export-extensions/namespace-default/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["external-helpers", "transform-export-extensions"] +} From 32c4cdf0160046a9a6edfea2f2c1a0e49e98f2d8 Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Tue, 23 May 2017 08:43:15 -0500 Subject: [PATCH 09/12] 339-spread-obj-pattern-assignable --- .../babel-generator/test/fixtures/types/RestProperty/actual.js | 2 ++ .../test/fixtures/types/RestProperty/expected.js | 2 ++ .../test/fixtures/object-rest/variable-destructuring/actual.js | 3 +++ .../fixtures/object-rest/variable-destructuring/expected.js | 3 +++ 4 files changed, 10 insertions(+) create mode 100644 packages/babel-generator/test/fixtures/types/RestProperty/actual.js create mode 100644 packages/babel-generator/test/fixtures/types/RestProperty/expected.js diff --git a/packages/babel-generator/test/fixtures/types/RestProperty/actual.js b/packages/babel-generator/test/fixtures/types/RestProperty/actual.js new file mode 100644 index 0000000000..3f11e2c45f --- /dev/null +++ b/packages/babel-generator/test/fixtures/types/RestProperty/actual.js @@ -0,0 +1,2 @@ +var { ...{ z } } = { z: 1 }; +var { ...{ x = 5 } } = { x : 1 }; diff --git a/packages/babel-generator/test/fixtures/types/RestProperty/expected.js b/packages/babel-generator/test/fixtures/types/RestProperty/expected.js new file mode 100644 index 0000000000..2f3480ae52 --- /dev/null +++ b/packages/babel-generator/test/fixtures/types/RestProperty/expected.js @@ -0,0 +1,2 @@ +var { ...{ z } } = { z: 1 }; +var { ...{ x = 5 } } = { x: 1 }; \ No newline at end of file diff --git a/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-rest/variable-destructuring/actual.js b/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-rest/variable-destructuring/actual.js index 6eed55d739..a8e761d5c9 100644 --- a/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-rest/variable-destructuring/actual.js +++ b/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-rest/variable-destructuring/actual.js @@ -17,3 +17,6 @@ let { } = complex; let { x4: { ...y4 } } = z; + +var { ...{ z } } = { z: 1 }; +var { ...{ x = 5 } } = { x : 1 }; diff --git a/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-rest/variable-destructuring/expected.js b/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-rest/variable-destructuring/expected.js index b9b3cfe2d3..2d4f70f8c1 100644 --- a/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-rest/variable-destructuring/expected.js +++ b/packages/babel-plugin-transform-object-rest-spread/test/fixtures/object-rest/variable-destructuring/expected.js @@ -24,3 +24,6 @@ let { let {} = z, y4 = babelHelpers.objectWithoutProperties(z.x4, []); + +var { z } = babelHelpers.objectWithoutProperties({ z: 1 }, []); +var { x = 5 } = babelHelpers.objectWithoutProperties({ x: 1 }, []); \ No newline at end of file From f8f2ead450b417319733874b9a03b9b1805b4933 Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Tue, 23 May 2017 08:57:03 -0500 Subject: [PATCH 10/12] 358-decorator-exported-class --- .../test/fixtures/types/Decorator/actual.js | 7 +++++++ .../test/fixtures/types/Decorator/expected.js | 7 +++++++ .../test/fixtures/class-export-default/exec.js | 14 ++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 packages/babel-plugin-transform-decorators/test/fixtures/class-export-default/exec.js diff --git a/packages/babel-generator/test/fixtures/types/Decorator/actual.js b/packages/babel-generator/test/fixtures/types/Decorator/actual.js index d0b6d43621..023e8e13d6 100644 --- a/packages/babel-generator/test/fixtures/types/Decorator/actual.js +++ b/packages/babel-generator/test/fixtures/types/Decorator/actual.js @@ -29,3 +29,10 @@ class Foo { @bar set bar(foo) {} } + +@foo +export default class Foo { + bar() { + class Baz {} + } +} diff --git a/packages/babel-generator/test/fixtures/types/Decorator/expected.js b/packages/babel-generator/test/fixtures/types/Decorator/expected.js index d0b6d43621..c4264dbecd 100644 --- a/packages/babel-generator/test/fixtures/types/Decorator/expected.js +++ b/packages/babel-generator/test/fixtures/types/Decorator/expected.js @@ -29,3 +29,10 @@ class Foo { @bar set bar(foo) {} } + +export default @foo +class Foo { + bar() { + class Baz {} + } +} \ No newline at end of file diff --git a/packages/babel-plugin-transform-decorators/test/fixtures/class-export-default/exec.js b/packages/babel-plugin-transform-decorators/test/fixtures/class-export-default/exec.js new file mode 100644 index 0000000000..542f0e00c4 --- /dev/null +++ b/packages/babel-plugin-transform-decorators/test/fixtures/class-export-default/exec.js @@ -0,0 +1,14 @@ +const calls = []; + +function foo(target) { + calls.push(target.name); +} + +@foo +export default class Foo { + bar() { + class Baz {} + } +} + +assert.deepEqual(calls, ["Foo"]); From 9d95b3faae6e9599fd678384e466a3e5569c13c7 Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Tue, 23 May 2017 09:09:01 -0500 Subject: [PATCH 11/12] 518-spread-assignable --- .../fixtures/types/RestProperty/actual.js | 1 + .../fixtures/types/RestProperty/expected.js | 3 ++- .../destructuring/es7-object-rest/actual.js | 4 +++- .../destructuring/es7-object-rest/expected.js | 22 ++++++++++++++----- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/packages/babel-generator/test/fixtures/types/RestProperty/actual.js b/packages/babel-generator/test/fixtures/types/RestProperty/actual.js index 3f11e2c45f..af90a6ba00 100644 --- a/packages/babel-generator/test/fixtures/types/RestProperty/actual.js +++ b/packages/babel-generator/test/fixtures/types/RestProperty/actual.js @@ -1,2 +1,3 @@ var { ...{ z } } = { z: 1 }; var { ...{ x = 5 } } = { x : 1 }; +({ x, ...{ y, z } } = o); diff --git a/packages/babel-generator/test/fixtures/types/RestProperty/expected.js b/packages/babel-generator/test/fixtures/types/RestProperty/expected.js index 2f3480ae52..a85216576d 100644 --- a/packages/babel-generator/test/fixtures/types/RestProperty/expected.js +++ b/packages/babel-generator/test/fixtures/types/RestProperty/expected.js @@ -1,2 +1,3 @@ var { ...{ z } } = { z: 1 }; -var { ...{ x = 5 } } = { x: 1 }; \ No newline at end of file +var { ...{ x = 5 } } = { x: 1 }; +({ x, ...{ y, z } } = o); \ No newline at end of file diff --git a/packages/babel-plugin-transform-es2015-destructuring/test/fixtures/destructuring/es7-object-rest/actual.js b/packages/babel-plugin-transform-es2015-destructuring/test/fixtures/destructuring/es7-object-rest/actual.js index a0fd177921..44903552ea 100644 --- a/packages/babel-plugin-transform-es2015-destructuring/test/fixtures/destructuring/es7-object-rest/actual.js +++ b/packages/babel-plugin-transform-es2015-destructuring/test/fixtures/destructuring/es7-object-rest/actual.js @@ -2,4 +2,6 @@ var z = {}; var { ...x } = z; var { x, ...y } = z; var { [x]: x, ...y } = z; -(function({ x, ...y }) { }) +(function({ x, ...y }) { }); + +({ x, ...{ y, z } } = o); diff --git a/packages/babel-plugin-transform-es2015-destructuring/test/fixtures/destructuring/es7-object-rest/expected.js b/packages/babel-plugin-transform-es2015-destructuring/test/fixtures/destructuring/es7-object-rest/expected.js index 7fa15501b2..62e912f6ad 100644 --- a/packages/babel-plugin-transform-es2015-destructuring/test/fixtures/destructuring/es7-object-rest/expected.js +++ b/packages/babel-plugin-transform-es2015-destructuring/test/fixtures/destructuring/es7-object-rest/expected.js @@ -1,11 +1,23 @@ var z = {}; -var x = babelHelpers.objectWithoutProperties(z, []); -var x = z.x, - y = babelHelpers.objectWithoutProperties(z, ["x"]); -var x = z[x], - y = babelHelpers.objectWithoutProperties(z, [x]); +var _z = z, + x = babelHelpers.objectWithoutProperties(_z, []); +var _z2 = z, + x = _z2.x, + y = babelHelpers.objectWithoutProperties(_z2, ["x"]); +var _z3 = z, + x = _z3[x], + y = babelHelpers.objectWithoutProperties(_z3, [x]); (function (_ref) { var x = _ref.x, y = babelHelpers.objectWithoutProperties(_ref, ["x"]); }); + +var _o = o; +x = _o.x; + +var _babelHelpers$objectW = babelHelpers.objectWithoutProperties(_o, ["x"]); + +y = _babelHelpers$objectW.y; +z = _babelHelpers$objectW.z; +_o; \ No newline at end of file From 3563823870e1413e51f53be820639debb6457106 Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Tue, 23 May 2017 10:37:38 -0500 Subject: [PATCH 12/12] Print decorators before ExportDeclaration --- packages/babel-generator/src/generators/classes.js | 12 ++++++++++-- packages/babel-generator/src/generators/modules.js | 12 ++++++++++-- .../test/fixtures/types/Decorator/actual.js | 7 +++++++ .../test/fixtures/types/Decorator/expected.js | 11 +++++++++-- 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/packages/babel-generator/src/generators/classes.js b/packages/babel-generator/src/generators/classes.js index 64066a04cd..63cc938f96 100644 --- a/packages/babel-generator/src/generators/classes.js +++ b/packages/babel-generator/src/generators/classes.js @@ -1,5 +1,13 @@ -export function ClassDeclaration(node: Object) { - this.printJoin(node.decorators, node); +import * as t from "babel-types"; + +export function ClassDeclaration(node: Object, parent: Object) { + if ( + !t.isExportDefaultDeclaration(parent) && + !t.isExportNamedDeclaration(parent) + ) { + this.printJoin(node.decorators, node); + } + this.word("class"); if (node.id) { diff --git a/packages/babel-generator/src/generators/modules.js b/packages/babel-generator/src/generators/modules.js index 3d6fbae1e2..f5d33b151a 100644 --- a/packages/babel-generator/src/generators/modules.js +++ b/packages/babel-generator/src/generators/modules.js @@ -52,13 +52,21 @@ export function ExportAllDeclaration(node: Object) { this.semicolon(); } -export function ExportNamedDeclaration() { +export function ExportNamedDeclaration(node: Object) { + if (t.isClassDeclaration(node.declaration)) { + this.printJoin(node.declaration.decorators, node); + } + this.word("export"); this.space(); ExportDeclaration.apply(this, arguments); } -export function ExportDefaultDeclaration() { +export function ExportDefaultDeclaration(node: Object) { + if (t.isClassDeclaration(node.declaration)) { + this.printJoin(node.declaration.decorators, node); + } + this.word("export"); this.space(); this.word("default"); diff --git a/packages/babel-generator/test/fixtures/types/Decorator/actual.js b/packages/babel-generator/test/fixtures/types/Decorator/actual.js index 023e8e13d6..f1946c7635 100644 --- a/packages/babel-generator/test/fixtures/types/Decorator/actual.js +++ b/packages/babel-generator/test/fixtures/types/Decorator/actual.js @@ -36,3 +36,10 @@ export default class Foo { class Baz {} } } + +@foo +export class Foo { + bar() { + class Baz {} + } +} diff --git a/packages/babel-generator/test/fixtures/types/Decorator/expected.js b/packages/babel-generator/test/fixtures/types/Decorator/expected.js index c4264dbecd..d47332b921 100644 --- a/packages/babel-generator/test/fixtures/types/Decorator/expected.js +++ b/packages/babel-generator/test/fixtures/types/Decorator/expected.js @@ -30,8 +30,15 @@ class Foo { set bar(foo) {} } -export default @foo -class Foo { +@foo +export default class Foo { + bar() { + class Baz {} + } +} + +@foo +export class Foo { bar() { class Baz {} }