diff --git a/packages/babel-plugin-transform-parameters/src/params.js b/packages/babel-plugin-transform-parameters/src/params.js index 391c87160e..000a8505a5 100644 --- a/packages/babel-plugin-transform-parameters/src/params.js +++ b/packages/babel-plugin-transform-parameters/src/params.js @@ -60,7 +60,8 @@ export default function convertFunctionParams(path, loose) { for (let i = 0; i < params.length; i++) { const param = params[i]; - if (param.isAssignmentPattern() && loose) { + const paramIsAssignmentPattern = param.isAssignmentPattern(); + if (paramIsAssignmentPattern && (loose || node.kind === "set")) { const left = param.get("left"); const right = param.get("right"); @@ -87,13 +88,12 @@ export default function convertFunctionParams(path, loose) { ); param.replaceWith(paramName); } - } else if (param.isAssignmentPattern()) { + } else if (paramIsAssignmentPattern) { if (firstOptionalIndex === null) firstOptionalIndex = i; const left = param.get("left"); const right = param.get("right"); - // if (!state.iife) { if (right.isIdentifier() && !isSafeBinding(scope, right.node)) { // the right hand side references a parameter diff --git a/packages/babel-plugin-transform-parameters/test/fixtures/parameters/default-setter/exec.js b/packages/babel-plugin-transform-parameters/test/fixtures/parameters/default-setter/exec.js new file mode 100644 index 0000000000..f11b28a623 --- /dev/null +++ b/packages/babel-plugin-transform-parameters/test/fixtures/parameters/default-setter/exec.js @@ -0,0 +1,9 @@ +const defaultValue = 1; +const obj = { + set field(num = defaultValue) { + this.num = num; + } +}; +obj.field = void 0; + +expect(obj.num).toBe(defaultValue); diff --git a/packages/babel-plugin-transform-parameters/test/fixtures/parameters/default-setter/input.js b/packages/babel-plugin-transform-parameters/test/fixtures/parameters/default-setter/input.js new file mode 100644 index 0000000000..d2fd1cdef5 --- /dev/null +++ b/packages/babel-plugin-transform-parameters/test/fixtures/parameters/default-setter/input.js @@ -0,0 +1,5 @@ +const obj = { + set field(num = 1) { + this.num = num; + } +}; diff --git a/packages/babel-plugin-transform-parameters/test/fixtures/parameters/default-setter/output.js b/packages/babel-plugin-transform-parameters/test/fixtures/parameters/default-setter/output.js new file mode 100644 index 0000000000..d55125d953 --- /dev/null +++ b/packages/babel-plugin-transform-parameters/test/fixtures/parameters/default-setter/output.js @@ -0,0 +1,10 @@ +var obj = { + set field(num) { + if (num === void 0) { + num = 1; + } + + this.num = num; + } + +};