Avoid renaming this bindings in simple arrow function cases.
This commit is contained in:
parent
db3a43869c
commit
51ddeade8a
@ -30,6 +30,7 @@ function remap(path, key, create) {
|
||||
|
||||
let shadowFunction = path.node._shadowedFunctionLiteral;
|
||||
let currentFunction;
|
||||
let passedShadowFunction = false;
|
||||
|
||||
let fnPath = path.findParent(function (path) {
|
||||
if (path.isProgram() || path.isFunction()) {
|
||||
@ -38,13 +39,18 @@ function remap(path, key, create) {
|
||||
}
|
||||
|
||||
if (path.isProgram()) {
|
||||
passedShadowFunction = true;
|
||||
|
||||
return true;
|
||||
} else if (path.isFunction() && !path.isArrowFunctionExpression()) {
|
||||
if (shadowFunction) {
|
||||
return path === shadowFunction || path.node === shadowFunction.node;
|
||||
if (path === shadowFunction || path.node === shadowFunction.node) return true;
|
||||
} else {
|
||||
return !path.is("shadow");
|
||||
if (!path.is("shadow")) return true;
|
||||
}
|
||||
|
||||
passedShadowFunction = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
@ -53,6 +59,10 @@ function remap(path, key, create) {
|
||||
// no point in realiasing if we're in this function
|
||||
if (fnPath === currentFunction) return;
|
||||
|
||||
// If the only functions that were encountered are arrow functions, skip remapping the
|
||||
// binding since arrow function syntax already does that.
|
||||
if (!passedShadowFunction) return;
|
||||
|
||||
let cached = fnPath.getData(key);
|
||||
if (cached) return path.replaceWith(cached);
|
||||
|
||||
|
||||
@ -1,37 +1,34 @@
|
||||
let s = function () {
|
||||
var ref = babelHelpers.asyncToGenerator(function* (x) {
|
||||
let t = (() => {
|
||||
var _this3 = this;
|
||||
|
||||
var ref = babelHelpers.asyncToGenerator(function* (y, a) {
|
||||
let r = (() => {
|
||||
var _this2 = this;
|
||||
|
||||
var ref = babelHelpers.asyncToGenerator(function* (z, b) {
|
||||
yield z;
|
||||
return _this2.x;
|
||||
}),
|
||||
_this = this;
|
||||
|
||||
return function r(_x4, _x5) {
|
||||
return ref.apply(_this, arguments);
|
||||
};
|
||||
})();
|
||||
yield r();
|
||||
|
||||
return _this3.g(r);
|
||||
}),
|
||||
_this = this;
|
||||
|
||||
return function t(_x2, _x3) {
|
||||
return ref.apply(_this, arguments);
|
||||
};
|
||||
})();
|
||||
|
||||
yield t();
|
||||
return this.h(t);
|
||||
});
|
||||
return function s(_x) {
|
||||
return ref.apply(this, arguments);
|
||||
};
|
||||
}();
|
||||
let s = function () {
|
||||
var ref = babelHelpers.asyncToGenerator(function* (x) {
|
||||
var _this2 = this;
|
||||
|
||||
let t = (() => {
|
||||
var ref = babelHelpers.asyncToGenerator(function* (y, a) {
|
||||
let r = (() => {
|
||||
var ref = babelHelpers.asyncToGenerator(function* (z, b) {
|
||||
yield z;
|
||||
return _this2.x;
|
||||
}),
|
||||
_this = _this2;
|
||||
|
||||
return function r(_x4, _x5) {
|
||||
return ref.apply(_this, arguments);
|
||||
};
|
||||
})();
|
||||
yield r();
|
||||
|
||||
return _this2.g(r);
|
||||
}),
|
||||
_this = this;
|
||||
return function t(_x2, _x3) {
|
||||
return ref.apply(_this, arguments);
|
||||
};
|
||||
})();
|
||||
|
||||
yield t();
|
||||
return this.h(t);
|
||||
});
|
||||
return function s(_x) {
|
||||
return ref.apply(this, arguments);
|
||||
};
|
||||
}();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user