From 54c13eef5cd693a58bafa43d59d8fbee2600a192 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Tue, 10 Nov 2015 15:56:22 -0800 Subject: [PATCH] fix exported classes with static class properties - fixes #2868 --- .../src/index.js | 4 ++++ .../constructor-collision/actual.js | 0 .../constructor-collision/expected.js | 0 .../{class-properties => general}/derived/actual.js | 0 .../derived/expected.js | 0 .../instance-undefined/actual.js | 0 .../instance-undefined/expected.js | 0 .../{class-properties => general}/instance/actual.js | 0 .../instance/expected.js | 0 .../{class-properties => general}/options.json | 0 .../test/fixtures/general/static-export/actual.js | 7 +++++++ .../test/fixtures/general/static-export/expected.js | 12 ++++++++++++ .../static-undefined/actual.js | 0 .../static-undefined/exec.js | 0 .../static-undefined/expected.js | 0 .../{class-properties => general}/static/actual.js | 0 .../{class-properties => general}/static/exec.js | 0 .../{class-properties => general}/static/expected.js | 0 .../super-expression/actual.js | 0 .../super-expression/expected.js | 0 .../super-statement/actual.js | 0 .../super-statement/expected.js | 0 .../test/fixtures/regression/2663-2/options.json | 1 - .../test/fixtures/regression/options.json | 2 +- 24 files changed, 24 insertions(+), 2 deletions(-) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/constructor-collision/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/constructor-collision/expected.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/derived/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/derived/expected.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/instance-undefined/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/instance-undefined/expected.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/instance/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/instance/expected.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/options.json (100%) create mode 100644 packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/actual.js create mode 100644 packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/expected.js rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/static-undefined/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/static-undefined/exec.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/static-undefined/expected.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/static/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/static/exec.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/static/expected.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/super-expression/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/super-expression/expected.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/super-statement/actual.js (100%) rename packages/babel-plugin-transform-class-properties/test/fixtures/{class-properties => general}/super-statement/expected.js (100%) diff --git a/packages/babel-plugin-transform-class-properties/src/index.js b/packages/babel-plugin-transform-class-properties/src/index.js index 0ee7a915ac..3de3c28019 100644 --- a/packages/babel-plugin-transform-class-properties/src/index.js +++ b/packages/babel-plugin-transform-class-properties/src/index.js @@ -134,6 +134,10 @@ export default function ({ types: t }) { nodes.push(t.expressionStatement(ref)); } + if (path.isClassDeclaration() && path.parentPath.isExportDeclaration()) { + path = path.parentPath; + } + path.insertAfter(nodes); } } diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/constructor-collision/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/constructor-collision/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/constructor-collision/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/constructor-collision/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/constructor-collision/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/constructor-collision/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/constructor-collision/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/constructor-collision/expected.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/derived/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/derived/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/derived/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/derived/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/derived/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/derived/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/derived/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/derived/expected.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/instance-undefined/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/instance-undefined/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/instance-undefined/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/instance-undefined/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/instance-undefined/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/instance-undefined/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/instance-undefined/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/instance-undefined/expected.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/instance/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/instance/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/instance/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/instance/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/instance/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/instance/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/instance/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/instance/expected.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/options.json b/packages/babel-plugin-transform-class-properties/test/fixtures/general/options.json similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/options.json rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/options.json diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/actual.js new file mode 100644 index 0000000000..729475cc52 --- /dev/null +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/actual.js @@ -0,0 +1,7 @@ +export class MyClass { + static property = value; +} + +export default class MyClass2 { + static property = value; +} diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/expected.js new file mode 100644 index 0000000000..0405f67721 --- /dev/null +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-export/expected.js @@ -0,0 +1,12 @@ +export var MyClass = function MyClass() { + babelHelpers.classCallCheck(this, MyClass); +}; + +MyClass.property = value; + +var MyClass2 = function MyClass2() { + babelHelpers.classCallCheck(this, MyClass2); +}; + +export default MyClass2; +MyClass2.property = value; diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static-undefined/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-undefined/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static-undefined/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/static-undefined/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static-undefined/exec.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-undefined/exec.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static-undefined/exec.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/static-undefined/exec.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static-undefined/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-undefined/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static-undefined/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/static-undefined/expected.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/static/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static/exec.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static/exec.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static/exec.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/static/exec.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/static/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/static/expected.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/super-expression/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-expression/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/super-expression/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/super-expression/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/super-expression/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-expression/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/super-expression/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/super-expression/expected.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/super-statement/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-statement/actual.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/super-statement/actual.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/super-statement/actual.js diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/super-statement/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/super-statement/expected.js similarity index 100% rename from packages/babel-plugin-transform-class-properties/test/fixtures/class-properties/super-statement/expected.js rename to packages/babel-plugin-transform-class-properties/test/fixtures/general/super-statement/expected.js diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663-2/options.json b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663-2/options.json index fa4caa55e4..9093196e47 100644 --- a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663-2/options.json +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/2663-2/options.json @@ -1,4 +1,3 @@ { - "presets": ["es2015", "react"], "plugins": ["transform-class-properties", "external-helpers-2"] } diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/options.json b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/options.json index 4713c96921..d3de7c728c 100644 --- a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/options.json +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/options.json @@ -1,4 +1,4 @@ { "plugins": ["external-helpers-2"], - "presets": ["es2015"] + "presets": ["es2015", "react"] }