diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2019-10-16 12:18:27 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-16 12:18:27 +0800 |
commit | 1549db70e60a1ae74f2b7ffc511ef123733f9557 (patch) | |
tree | 418015e8724ba48051aff3b9dfe0b4d5d15ca04b | |
parent | 8ff9a3c8fb89ac40fea0dd1cd249e8b94a690c2e (diff) | |
download | tracifyjs-1549db70e60a1ae74f2b7ffc511ef123733f9557.tar.gz tracifyjs-1549db70e60a1ae74f2b7ffc511ef123733f9557.zip |
fix corner case in `ie8` (#3487)
fixes #3486
-rw-r--r-- | lib/scope.js | 8 | ||||
-rw-r--r-- | test/compress/ie8.js | 46 |
2 files changed, 52 insertions, 2 deletions
diff --git a/lib/scope.js b/lib/scope.js index b40807fa..131235f6 100644 --- a/lib/scope.js +++ b/lib/scope.js @@ -194,7 +194,7 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options) { if (node instanceof AST_SymbolCatch) { var scope = node.thedef.defun; if (scope.name instanceof AST_SymbolLambda && scope.name.name == node.name) { - scope = scope.parent_scope; + scope = scope.parent_scope.resolve(); } redefine(node, scope); return true; @@ -202,7 +202,11 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options) { if (node instanceof AST_SymbolLambda) { var def = node.thedef; redefine(node, node.scope.parent_scope.resolve()); - if (def.init) node.thedef.init = def.init; + if (typeof node.thedef.init !== "undefined") { + node.thedef.init = false; + } else if (def.init) { + node.thedef.init = def.init; + } return true; } })); diff --git a/test/compress/ie8.js b/test/compress/ie8.js index c6b51d63..223da329 100644 --- a/test/compress/ie8.js +++ b/test/compress/ie8.js @@ -1841,3 +1841,49 @@ issue_3484_2_ie8_toplevel: { } expect_stdout: "number number" } + +issue_3486: { + options = { + conditionals: true, + ie8: false, + reduce_vars: true, + } + input: { + (function a() { + (function a(a) { + console.log(a ? "FAIL" : "PASS"); + })(); + })(); + } + expect: { + (function a() { + (function a(a) { + console.log(a ? "FAIL" : "PASS"); + })(); + })(); + } + expect_stdout: "PASS" +} + +issue_3486_ie8: { + options = { + conditionals: true, + ie8: true, + reduce_vars: true, + } + input: { + (function a() { + (function a(a) { + console.log(a ? "FAIL" : "PASS"); + })(); + })(); + } + expect: { + (function a() { + (function a(a) { + console.log(a ? "FAIL" : "PASS"); + })(); + })(); + } + expect_stdout: "PASS" +} |