Support transforming params of arrow functions in class fields (#13941)
This commit is contained in:
@@ -23,6 +23,10 @@ export default declare((api, options) => {
|
||||
) {
|
||||
// default/rest visitors require access to `arguments`, so it cannot be an arrow
|
||||
path.arrowFunctionToExpression({ noNewArrows });
|
||||
|
||||
// In some cases arrowFunctionToExpression replaces the function with a wrapper.
|
||||
// Return early; the wrapped function will be visited later in the AST traversal.
|
||||
if (!path.isFunctionExpression()) return;
|
||||
}
|
||||
|
||||
const convertedRest = convertFunctionRest(path);
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
let f = (x = 0) => x + 1;
|
||||
@@ -0,0 +1,7 @@
|
||||
var _this = this;
|
||||
|
||||
let f = function f() {
|
||||
let x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
||||
babelHelpers.newArrowCheck(this, _this);
|
||||
return x + 1;
|
||||
}.bind(this);
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"plugins": ["transform-parameters"],
|
||||
"assumptions": {
|
||||
"noNewArrows": false
|
||||
}
|
||||
}
|
||||
8
packages/babel-plugin-transform-parameters/test/fixtures/regression/13939-complex/input.js
vendored
Normal file
8
packages/babel-plugin-transform-parameters/test/fixtures/regression/13939-complex/input.js
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
class A extends B {
|
||||
handle = ((x = 0) => {
|
||||
console.log(x, this, new.target, super.y);
|
||||
})(() => {
|
||||
let y = 0;
|
||||
return (x = y) => x + this;
|
||||
})((x = 1) => {})(this);
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"plugins": [
|
||||
"transform-parameters"
|
||||
]
|
||||
}
|
||||
22
packages/babel-plugin-transform-parameters/test/fixtures/regression/13939-complex/output.js
vendored
Normal file
22
packages/babel-plugin-transform-parameters/test/fixtures/regression/13939-complex/output.js
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
class A extends B {
|
||||
handle = (() => {
|
||||
var _newtarget = new.target,
|
||||
_superprop_getY = () => super.y,
|
||||
_this = this;
|
||||
|
||||
return function () {
|
||||
let x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
||||
console.log(x, _this, _newtarget, _superprop_getY());
|
||||
};
|
||||
})()(() => {
|
||||
var _this2 = this;
|
||||
|
||||
let y = 0;
|
||||
return function () {
|
||||
let x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : y;
|
||||
return x + _this2;
|
||||
};
|
||||
})((() => function () {
|
||||
let x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
|
||||
})())(this);
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
class A extends B {
|
||||
#handle = ((x = 0) => {
|
||||
console.log(x, this, new.target, super.y);
|
||||
})(() => {
|
||||
let y = 0;
|
||||
return (x = y) => x + this;
|
||||
})((x = 1) => {})(this);
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"plugins": [
|
||||
"transform-parameters"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
class A extends B {
|
||||
#handle = (() => {
|
||||
var _newtarget = new.target,
|
||||
_superprop_getY = () => super.y,
|
||||
_this = this;
|
||||
|
||||
return function () {
|
||||
let x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
||||
console.log(x, _this, _newtarget, _superprop_getY());
|
||||
};
|
||||
})()(() => {
|
||||
var _this2 = this;
|
||||
|
||||
let y = 0;
|
||||
return function () {
|
||||
let x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : y;
|
||||
return x + _this2;
|
||||
};
|
||||
})((() => function () {
|
||||
let x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
|
||||
})())(this);
|
||||
}
|
||||
5
packages/babel-plugin-transform-parameters/test/fixtures/regression/13939-private/input.js
vendored
Normal file
5
packages/babel-plugin-transform-parameters/test/fixtures/regression/13939-private/input.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
class A {
|
||||
#handle = (x = 0) => {
|
||||
console.log(x);
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"plugins": [
|
||||
"transform-parameters"
|
||||
]
|
||||
}
|
||||
6
packages/babel-plugin-transform-parameters/test/fixtures/regression/13939-private/output.js
vendored
Normal file
6
packages/babel-plugin-transform-parameters/test/fixtures/regression/13939-private/output.js
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
class A {
|
||||
#handle = (() => function () {
|
||||
let x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
||||
console.log(x);
|
||||
})();
|
||||
}
|
||||
5
packages/babel-plugin-transform-parameters/test/fixtures/regression/13939/input.js
vendored
Normal file
5
packages/babel-plugin-transform-parameters/test/fixtures/regression/13939/input.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
class A {
|
||||
handle = (x = 0) => {
|
||||
console.log(x);
|
||||
};
|
||||
}
|
||||
5
packages/babel-plugin-transform-parameters/test/fixtures/regression/13939/options.json
vendored
Normal file
5
packages/babel-plugin-transform-parameters/test/fixtures/regression/13939/options.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"plugins": [
|
||||
"transform-parameters"
|
||||
]
|
||||
}
|
||||
6
packages/babel-plugin-transform-parameters/test/fixtures/regression/13939/output.js
vendored
Normal file
6
packages/babel-plugin-transform-parameters/test/fixtures/regression/13939/output.js
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
class A {
|
||||
handle = (() => function () {
|
||||
let x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
||||
console.log(x);
|
||||
})();
|
||||
}
|
||||
Reference in New Issue
Block a user