fix corner cases in reduce_vars & unused (#5247)

fixes #5246
This commit is contained in:
Alex Lam S.L
2021-12-30 20:47:13 +00:00
committed by GitHub
parent 80d5f23fee
commit e7ce1051fe
4 changed files with 222 additions and 31 deletions

View File

@@ -2038,3 +2038,59 @@ issue_5222: {
expect_stdout: "PASS"
node_version: ">=6"
}
issue_5246_1: {
options = {
pure_getters: true,
unused: true,
}
input: {
console.log(function({} = 42) {
return "PASS";
}("foo"));
}
expect: {
console.log(function({} = 0) {
return "PASS";
}("foo"));
}
expect_stdout: "PASS"
expect_warnings: [
"INFO: Dropping unused default argument value {}=42 [test/compress/default-values.js:1,29]",
"INFO: Dropping unused default argument value {}=0 [test/compress/default-values.js:1,29]",
]
node_version: ">=6"
}
issue_5246_2: {
options = {
unused: true,
}
input: {
(function f(a = "FAIL", [] = 42) {
console.log(a);
})("PASS", []);
}
expect: {
(function(a = "FAIL", []) {
console.log(a);
})("PASS", []);
}
expect_stdout: "PASS"
node_version: ">=6"
}
issue_5246_3: {
options = {
default_values: true,
unused: true,
}
input: {
console.log(function f([ , {} ] = null){}([ , {} ]));
}
expect: {
console.log(function([ {} ]){}([ {} ]));
}
expect_stdout: "undefined"
node_version: ">=6"
}

View File

@@ -359,7 +359,7 @@ retain_funarg_destructured_object_2: {
expect: {
console.log(function({ p: a, ... b }) {
return b;
}({ p: "FAIL" }).p || "PASS");
}({}).p || "PASS");
}
expect_stdout: "PASS"
node_version: ">=8.3.0"
@@ -1104,7 +1104,7 @@ issue_5108: {
expect: {
console.log(function([]) {
return "PASS";
}([ "PASS", "FAIL" ]));
}([]));
}
expect_stdout: "PASS"
node_version: ">=6"
@@ -1205,3 +1205,62 @@ issue_5165_2: {
expect_stdout: "PASS"
node_version: ">=6"
}
issue_5246_1: {
options = {
reduce_vars: true,
rests: true,
unused: true,
}
input: {
console.log(typeof function([ , ...a ]) {
return this && a;
}([ , function(){} ])[0]);
}
expect: {
console.log(typeof function([]) {
return this && [ function(){} ];
}([])[0]);
}
expect_stdout: "function"
node_version: ">=6"
}
issue_5246_2: {
options = {
reduce_vars: true,
rests: true,
toplevel: true,
unused: true,
}
input: {
A = [ , "PASS", "FAIL" ];
var [ , ...a ] = [ ... A ];
console.log(a[0]);
}
expect: {
A = [ , "PASS", "FAIL" ];
var [ , ...a ] = [ ... A ];
console.log(a[0]);
}
expect_stdout: "PASS"
node_version: ">=6"
}
issue_5246_3: {
options = {
unused: true,
}
input: {
(function f(...[ [ a ] ]) {
console.log(a);
})([ "PASS" ]);
}
expect: {
(function(...[ a ]) {
console.log(a);
})([ "PASS" ][0]);
}
expect_stdout: "PASS"
node_version: ">=6"
}

View File

@@ -1371,12 +1371,12 @@ issue_5034: {
node_version: ">=4"
}
issue_5076: {
issue_5076_1: {
options = {
evaluate: true,
hoist_vars: true,
passes: 2,
pure_getters: "strict",
sequences: true,
side_effects: true,
toplevel: true,
unused: true,
@@ -1393,13 +1393,41 @@ issue_5076: {
}
expect: {
var a;
console.log("PASS");
console.log("PASS"),
a = 42["a"];
}
expect_stdout: "PASS"
node_version: ">=6"
}
issue_5076_2: {
options = {
evaluate: true,
hoist_vars: true,
passes: 2,
pure_getters: "strict",
sequences: true,
side_effects: true,
toplevel: true,
unused: true,
yields: true,
}
input: {
var a;
console.log("PASS");
var b = function*({
p: {},
}) {}({
p: { a } = 42,
});
}
expect: {
console.log("PASS");
}
expect_stdout: "PASS"
node_version: ">=6"
}
issue_5177: {
options = {
properties: true,