make collapse_vars consistent with toplevel (#1608)

fixes #1605
This commit is contained in:
Alex Lam S.L
2017-03-16 13:22:26 +08:00
committed by GitHub
parent a80b228d8b
commit 5ae04b3545
5 changed files with 52 additions and 3 deletions

View File

@@ -521,6 +521,7 @@ merge(Compressor.prototype, {
var self = compressor.self();
var var_defs_removed = false;
var toplevel = compressor.option("toplevel");
for (var stat_index = statements.length; --stat_index >= 0;) {
var stat = statements[stat_index];
if (stat instanceof AST_Definitions) continue;
@@ -558,7 +559,8 @@ merge(Compressor.prototype, {
// Only interested in cases with just one reference to the variable.
var def = self.find_variable && self.find_variable(var_name);
if (!def || !def.references || def.references.length !== 1 || var_name == "arguments") {
if (!def || !def.references || def.references.length !== 1
|| var_name == "arguments" || (!toplevel && def.global)) {
side_effects_encountered = true;
continue;
}