diff --git a/packages/babel-plugin-transform-class-properties/package.json b/packages/babel-plugin-transform-class-properties/package.json index 478552465c..df0c8a9027 100644 --- a/packages/babel-plugin-transform-class-properties/package.json +++ b/packages/babel-plugin-transform-class-properties/package.json @@ -9,6 +9,7 @@ "babel-plugin" ], "dependencies": { + "babel-helper-function-name": "^6.8.0", "babel-plugin-syntax-class-properties": "^6.8.0", "babel-runtime": "^6.9.1" }, diff --git a/packages/babel-plugin-transform-class-properties/src/index.js b/packages/babel-plugin-transform-class-properties/src/index.js index bee037d22e..ed0feea204 100644 --- a/packages/babel-plugin-transform-class-properties/src/index.js +++ b/packages/babel-plugin-transform-class-properties/src/index.js @@ -1,5 +1,6 @@ /* eslint max-len: 0 */ // todo: define instead of assign +import nameFunction from "babel-helper-function-name"; export default function ({ types: t }) { let findBareSupers = { @@ -43,6 +44,7 @@ export default function ({ types: t }) { let ref; if (path.isClassExpression() || !path.node.id) { + nameFunction(path); ref = path.scope.generateUidIdentifier("class"); } else { // path.isClassDeclaration() && path.node.id ref = path.node.id; diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-infer-name/actual.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-infer-name/actual.js new file mode 100644 index 0000000000..96f03df576 --- /dev/null +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-infer-name/actual.js @@ -0,0 +1,3 @@ +var Foo = class { + static num = 0; +} diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-infer-name/exec.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-infer-name/exec.js new file mode 100644 index 0000000000..b7ecf2f9cb --- /dev/null +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-infer-name/exec.js @@ -0,0 +1,7 @@ +var Foo = class { + static num = 0; +} + +assert.equal(Foo.num, 0); +assert.equal(Foo.num = 1, 1); +assert.equal(Foo.name, "Foo"); diff --git a/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-infer-name/expected.js b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-infer-name/expected.js new file mode 100644 index 0000000000..b9dfd403a2 --- /dev/null +++ b/packages/babel-plugin-transform-class-properties/test/fixtures/general/static-infer-name/expected.js @@ -0,0 +1,5 @@ +var _class, _temp; + +var Foo = (_temp = _class = function Foo() { + babelHelpers.classCallCheck(this, Foo); +}, _class.num = 0, _temp);