fix corner cases in reduce_vars & unused (#4306)
This commit is contained in:
@@ -1085,7 +1085,10 @@ merge(Compressor.prototype, {
|
|||||||
tw.loop_ids[d.id] = tw.in_loop;
|
tw.loop_ids[d.id] = tw.in_loop;
|
||||||
d.fixed = fixed;
|
d.fixed = fixed;
|
||||||
d.fixed.assigns = [ node ];
|
d.fixed.assigns = [ node ];
|
||||||
if (name instanceof AST_SymbolConst && d.redefined()) d.single_use = false;
|
if (name instanceof AST_SymbolConst && d.redefined()
|
||||||
|
|| !(can_drop_symbol(name) || is_safe_lexical(d))) {
|
||||||
|
d.single_use = false;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
d.fixed = false;
|
d.fixed = false;
|
||||||
}
|
}
|
||||||
@@ -5352,7 +5355,7 @@ merge(Compressor.prototype, {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var sym = def.name.definition();
|
var sym = def.name.definition();
|
||||||
var drop_sym = !is_var || can_drop_symbol(def.name);
|
var drop_sym = is_var ? can_drop_symbol(def.name) : is_safe_lexical(sym);
|
||||||
if (!drop_sym || !drop_vars || sym.id in in_use_ids) {
|
if (!drop_sym || !drop_vars || sym.id in in_use_ids) {
|
||||||
if (def.value && indexOf_assign(sym, def) < 0) {
|
if (def.value && indexOf_assign(sym, def) < 0) {
|
||||||
var write_only = def.value.write_only;
|
var write_only = def.value.write_only;
|
||||||
|
|||||||
@@ -1257,3 +1257,51 @@ issue_4290_1: {
|
|||||||
}
|
}
|
||||||
expect_stdout: true
|
expect_stdout: true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_4305_1: {
|
||||||
|
options = {
|
||||||
|
reduce_vars: true,
|
||||||
|
unused: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
(function() {
|
||||||
|
const arguments = function() {
|
||||||
|
while (console.log("PASS"));
|
||||||
|
};
|
||||||
|
arguments();
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
(function() {
|
||||||
|
const arguments = function() {
|
||||||
|
while (console.log("PASS"));
|
||||||
|
};
|
||||||
|
arguments();
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
expect_stdout: true
|
||||||
|
}
|
||||||
|
|
||||||
|
issue_4305_2: {
|
||||||
|
options = {
|
||||||
|
reduce_vars: true,
|
||||||
|
unused: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
(function(a) {
|
||||||
|
const a = function() {
|
||||||
|
while (console.log("aaaaa"));
|
||||||
|
};
|
||||||
|
a();
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
(function(a) {
|
||||||
|
const a = function() {
|
||||||
|
while (console.log("aaaaa"));
|
||||||
|
};
|
||||||
|
a();
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
expect_stdout: true
|
||||||
|
}
|
||||||
|
|||||||
@@ -1134,3 +1134,55 @@ issue_4290_2: {
|
|||||||
expect_stdout: "PASS"
|
expect_stdout: "PASS"
|
||||||
node_version: ">=4"
|
node_version: ">=4"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_4305_1: {
|
||||||
|
options = {
|
||||||
|
reduce_vars: true,
|
||||||
|
unused: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
(function() {
|
||||||
|
let arguments = function() {
|
||||||
|
while (console.log("PASS"));
|
||||||
|
};
|
||||||
|
arguments();
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
(function() {
|
||||||
|
let arguments = function() {
|
||||||
|
while (console.log("PASS"));
|
||||||
|
};
|
||||||
|
arguments();
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
expect_stdout: true
|
||||||
|
node_version: ">=6"
|
||||||
|
}
|
||||||
|
|
||||||
|
issue_4305_2: {
|
||||||
|
options = {
|
||||||
|
reduce_vars: true,
|
||||||
|
unused: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
"use strict";
|
||||||
|
(function(a) {
|
||||||
|
let a = function() {
|
||||||
|
while (console.log("aaaaa"));
|
||||||
|
};
|
||||||
|
a();
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
"use strict";
|
||||||
|
(function(a) {
|
||||||
|
let a = function() {
|
||||||
|
while (console.log("aaaaa"));
|
||||||
|
};
|
||||||
|
a();
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
expect_stdout: true
|
||||||
|
node_version: ">=4"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user