diff --git a/packages/babel-helper-function-name/src/index.js b/packages/babel-helper-function-name/src/index.js index fd64ed155f..05af0ac05b 100644 --- a/packages/babel-helper-function-name/src/index.js +++ b/packages/babel-helper-function-name/src/index.js @@ -16,7 +16,7 @@ let buildPropertyMethodAssignmentWrapper = template(` })(FUNCTION) `); -let buldGeneratorPropertyMethodAssignmentWrapper = template(` +let buildGeneratorPropertyMethodAssignmentWrapper = template(` (function (FUNCTION_KEY) { function* FUNCTION_ID() { return yield* FUNCTION_KEY.apply(this, arguments); @@ -51,9 +51,12 @@ function wrap(state, method, id, scope) { // we can just munge the local binding scope.rename(id.name); } else { + // we don't currently support wrapping class expressions + if (!t.isFunction(method)) return; + // need to add a wrapper since we can't change the references let build = buildPropertyMethodAssignmentWrapper; - if (method.generator) build = buldGeneratorPropertyMethodAssignmentWrapper; + if (method.generator) build = buildGeneratorPropertyMethodAssignmentWrapper; let template = build({ FUNCTION: method, FUNCTION_ID: id, diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/T2494/actual.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/T2494/actual.js new file mode 100644 index 0000000000..25ff46c7ac --- /dev/null +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/T2494/actual.js @@ -0,0 +1,3 @@ +var x = { + Foo: class extends Foo {} +}; diff --git a/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/T2494/expected.js b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/T2494/expected.js new file mode 100644 index 0000000000..80c100c717 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/T2494/expected.js @@ -0,0 +1,14 @@ +"use strict"; + +var x = { + Foo: (function (_Foo) { + babelHelpers.inherits(_class, _Foo); + + function _class() { + babelHelpers.classCallCheck(this, _class); + return babelHelpers.possibleConstructorReturn(this, Object.getPrototypeOf(_class).apply(this, arguments)); + } + + return _class; + })(Foo) +};