enhance reduce_vars & varify (#4714)

This commit is contained in:
Alex Lam S.L
2021-03-02 07:27:55 +00:00
committed by GitHub
parent ee27d87a08
commit 74dee5c445
3 changed files with 56 additions and 3 deletions

View File

@@ -1259,10 +1259,13 @@ merge(Compressor.prototype, {
});
def(AST_VarDef, function(tw, descend, compressor) {
var node = this;
if (!node.value) return;
node.value.walk(tw);
if (node.value) {
node.value.walk(tw);
} else if (!(tw.parent() instanceof AST_Let)) {
return;
}
scan_declaration(tw, compressor, node.name, function() {
return node.value;
return node.value || make_node(AST_Undefined, node);
}, function(name, fixed) {
var d = name.definition();
if (fixed && safe_to_assign(tw, d, true)) {

View File

@@ -610,6 +610,28 @@ drop_unused: {
node_version: ">=4"
}
default_init: {
options = {
evaluate: true,
reduce_vars: true,
sequences: true,
toplevel: true,
unused: true,
}
input: {
"use strict";
let a;
a = "PASS";
console.log(a);
}
expect: {
"use strict";
console.log("PASS");
}
expect_stdout: "PASS"
node_version: ">=4"
}
issue_4191: {
options = {
functions: true,

View File

@@ -409,3 +409,31 @@ drop_forin_let: {
expect_stdout: "PASS"
node_version: ">=4"
}
default_init: {
options = {
join_vars: true,
reduce_vars: true,
unused: true,
varify: true,
}
input: {
A = "PASS";
(function() {
"use strict";
let a;
a = A;
console.log(a);
})();
}
expect: {
A = "PASS";
(function() {
"use strict";
var a = A;
console.log(a);
})();
}
expect_stdout: "PASS"
node_version: ">=4"
}