fix corner case with default values (#4484)

fixes #4483
This commit is contained in:
Alex Lam S.L
2020-12-30 17:47:00 +00:00
committed by GitHub
parent 0013cbf91f
commit 8b954b022b
3 changed files with 22 additions and 1 deletions

View File

@@ -3603,6 +3603,7 @@ merge(Compressor.prototype, {
function is_lhs(node, parent) {
if (parent instanceof AST_Assign) return parent.left === node && node;
if (parent instanceof AST_DefaultValue) return parent.name === node && node;
if (parent instanceof AST_Destructured) return node;
if (parent instanceof AST_DestructuredKeyVal) return node;
if (parent instanceof AST_Unary) return unary_side_effects[parent.operator] && parent.expression;

View File

@@ -1206,3 +1206,24 @@ issue_4468: {
expect_stdout: "PASS"
node_version: ">=6"
}
issue_4483: {
options = {
conditionals: true,
evaluate: true,
reduce_vars: true,
toplevel: true,
}
input: {
if (console)
var [ a = "FAIL" ] = [], b = a = "PASS";
console.log(b);
}
expect: {
var a, b;
console && ([ a = "FAIL" ] = [], b = "PASS");
console.log(b);
}
expect_stdout: "PASS"
node_version: ">=6"
}

View File

@@ -124,7 +124,6 @@ module.exports = function reduce_test(testcase, minify_options, reduce_options)
// ignore lvalues
if (parent instanceof U.AST_Assign && parent.left === node) return;
if (parent instanceof U.AST_DestructuredArray) return;
if (parent instanceof U.AST_DestructuredKeyVal && parent.value === node) return;
if (parent instanceof U.AST_Unary && parent.expression === node) switch (parent.operator) {
case "++":