Merge pull request #3138 from loganfsmyth/class-rename-failure-T2494
Skip name inference on hard-to-replace classes - fixes T2494
This commit is contained in:
@@ -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,
|
||||
|
||||
3
packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/T2494/actual.js
vendored
Normal file
3
packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/T2494/actual.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
var x = {
|
||||
Foo: class extends Foo {}
|
||||
};
|
||||
14
packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/T2494/expected.js
vendored
Normal file
14
packages/babel-plugin-transform-es2015-classes/test/fixtures/regression/T2494/expected.js
vendored
Normal file
@@ -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)
|
||||
};
|
||||
Reference in New Issue
Block a user