aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/compress.js3
-rw-r--r--lib/scope.js2
-rw-r--r--test/compress/ie8.js44
3 files changed, 47 insertions, 2 deletions
diff --git a/lib/compress.js b/lib/compress.js
index 29ef07c3..06ba43c0 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -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;
diff --git a/lib/scope.js b/lib/scope.js
index 08c9efd8..83df3fde 100644
--- a/lib/scope.js
+++ b/lib/scope.js
@@ -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;
}
});
diff --git a/test/compress/ie8.js b/test/compress/ie8.js
index e81e1a01..f0298de3 100644
--- a/test/compress/ie8.js
+++ b/test/compress/ie8.js
@@ -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"
+}