fix corner case in default_values (#4497)

fixes #4496
This commit is contained in:
Alex Lam S.L
2021-01-02 14:51:53 +00:00
committed by GitHub
parent 15ef272790
commit 110c1ac097
2 changed files with 32 additions and 4 deletions

View File

@@ -7692,7 +7692,9 @@ merge(Compressor.prototype, {
return !(arg instanceof AST_Spread); return !(arg instanceof AST_Spread);
})) return; })) return;
var pos = 0, last = 0; var pos = 0, last = 0;
var drop_fargs = fn === exp && !fn.name && compressor.drop_fargs(fn, call) ? function(argname, arg) { var is_iife = fn === exp && !fn.name;
var drop_defaults = is_iife && compressor.option("default_values");
var drop_fargs = is_iife && compressor.drop_fargs(fn, call) ? function(argname, arg) {
if (!argname) return true; if (!argname) return true;
if (argname instanceof AST_DestructuredArray) { if (argname instanceof AST_DestructuredArray) {
return argname.elements.length == 0 && arg instanceof AST_Array; return argname.elements.length == 0 && arg instanceof AST_Array;
@@ -7705,9 +7707,7 @@ merge(Compressor.prototype, {
var side_effects = []; var side_effects = [];
for (var i = 0; i < args.length; i++) { for (var i = 0; i < args.length; i++) {
var argname = fn.argnames[i]; var argname = fn.argnames[i];
if (compressor.option("default_values") if (drop_defaults && argname instanceof AST_DefaultValue && args[i].is_defined(compressor)) {
&& argname instanceof AST_DefaultValue
&& args[i].is_defined(compressor)) {
fn.argnames[i] = argname = argname.name; fn.argnames[i] = argname = argname.name;
} }
if (!argname || "__unused" in argname) { if (!argname || "__unused" in argname) {

View File

@@ -1313,3 +1313,31 @@ issue_4485_3: {
expect_stdout: true expect_stdout: true
node_version: ">=6" node_version: ">=6"
} }
issue_4496: {
options = {
default_values: true,
unused: true,
}
input: {
(function f(a = 0) {
console.log(function(b) {
a && b();
return a;
}(f));
})(42);
}
expect: {
(function f(a = 0) {
console.log(function(b) {
a && b();
return a;
}(f));
})(42);
}
expect_stdout: [
"0",
"42",
]
node_version: ">=6"
}