fix reduce_vars on AST_Destructuring (#2672)

fixes #2669
fixes #2670
fixes #2673
This commit is contained in:
Alex Lam S.L
2017-12-27 16:30:57 +08:00
committed by GitHub
parent ef74f2eaaf
commit 9f7d1f7ac6
2 changed files with 46 additions and 1 deletions

View File

@@ -482,6 +482,10 @@ merge(Compressor.prototype, {
def(AST_Arrow, mark_func_expr); def(AST_Arrow, mark_func_expr);
def(AST_Assign, function(tw) { def(AST_Assign, function(tw) {
var node = this; var node = this;
if (node.left instanceof AST_Destructuring) {
node.left.walk(suppressor);
return;
}
if (node.operator != "=" || !(node.left instanceof AST_SymbolRef)) return; if (node.operator != "=" || !(node.left instanceof AST_SymbolRef)) return;
var d = node.left.definition(); var d = node.left.definition();
if (safe_to_assign(tw, d, node.right) if (safe_to_assign(tw, d, node.right)
@@ -705,7 +709,7 @@ merge(Compressor.prototype, {
var node = this; var node = this;
if (node.name instanceof AST_Destructuring) { if (node.name instanceof AST_Destructuring) {
node.name.walk(suppressor); node.name.walk(suppressor);
return true; return;
} }
var d = node.name.definition(); var d = node.name.definition();
if (d.fixed === undefined || safe_to_assign(tw, d, node.value)) { if (d.fixed === undefined || safe_to_assign(tw, d, node.value)) {

View File

@@ -5446,3 +5446,44 @@ issue_2598: {
} }
expect_stdout: "true" expect_stdout: "true"
} }
issue_2669: {
options = {
evaluate: true,
reduce_vars: true,
toplevel: true,
unused: true,
}
input: {
let foo;
console.log(([ foo ] = [ "PASS" ]) && foo);
}
expect: {
let foo;
console.log(([ foo ] = [ "PASS" ]) && foo);
}
expect_stdout: "PASS"
node_version: ">=6"
}
issue_2670: {
options = {
reduce_vars: true,
toplevel: true,
unused: true,
}
input: {
const obj = {};
obj.prop = "PASS";
const {prop: value} = obj;
console.log(value);
}
expect: {
const obj = {};
obj.prop = "PASS";
const {prop: value} = obj;
console.log(value);
}
expect_stdout: "PASS"
node_version: ">=6"
}