fix corner case with collapse_vars & ie8 (#3469)

fixes #3468
This commit is contained in:
Alex Lam S.L
2019-10-14 13:34:35 +08:00
committed by GitHub
parent e8ab0a44b2
commit a39bdb5840
3 changed files with 47 additions and 2 deletions

View File

@@ -896,8 +896,7 @@ merge(Compressor.prototype, {
if (lhs instanceof AST_This) return true;
if (lhs instanceof AST_SymbolRef) {
var def = lhs.definition();
return def.orig[0] instanceof AST_SymbolLambda
|| compressor.exposed(def) && identifier_atom[def.name];
return def.lambda || compressor.exposed(def) && identifier_atom[def.name];
}
if (lhs instanceof AST_PropAccess) {
lhs = lhs.expression;

View File

@@ -55,6 +55,7 @@ function SymbolDef(scope, orig, init) {
this.mangled_name = null;
this.undeclared = false;
this.id = SymbolDef.next_id++;
this.lambda = orig instanceof AST_SymbolLambda;
}
SymbolDef.next_id = 1;
@@ -210,6 +211,7 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options) {
node.thedef = new_def;
node.reference(options);
});
if (old_def.lambda) new_def.lambda = true;
}
});

View File

@@ -969,3 +969,47 @@ issue_3355_4: {
}
expect_stdout: "PASS"
}
issue_3468: {
options = {
collapse_vars: true,
ie8: false,
}
input: {
var a = 42;
console.log(function a() {
a++;
return typeof a;
}());
}
expect: {
var a = 42;
console.log(function a() {
a++;
return typeof a;
}());
}
expect_stdout: "function"
}
issue_3468_ie8: {
options = {
collapse_vars: true,
ie8: true,
}
input: {
var a = 42;
console.log(function a() {
a++;
return typeof a;
}());
}
expect: {
var a = 42;
console.log(function a() {
a++;
return typeof a;
}());
}
expect_stdout: "function"
}