diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2019-10-16 01:09:16 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-16 01:09:16 +0800 |
commit | 91cae51d8f8a7f06e55dba7d100bbb663448875b (patch) | |
tree | 9c5f4ad80ed0dd9ae2e6e2312ad11fd63c92ac09 /test/compress/ie8.js | |
parent | 8af2f5fbcf91279db86f71e9a889d69b262370c5 (diff) | |
download | tracifyjs-91cae51d8f8a7f06e55dba7d100bbb663448875b.tar.gz tracifyjs-91cae51d8f8a7f06e55dba7d100bbb663448875b.zip |
fix corner case in `evaluate` & `ie8` (#3483)
fixes #3482
Diffstat (limited to 'test/compress/ie8.js')
-rw-r--r-- | test/compress/ie8.js | 166 |
1 files changed, 144 insertions, 22 deletions
diff --git a/test/compress/ie8.js b/test/compress/ie8.js index f371bbf0..e57c233e 100644 --- a/test/compress/ie8.js +++ b/test/compress/ie8.js @@ -125,28 +125,36 @@ do_screw_try_catch_undefined: { ie8: false, } input: { - function a(b){ + function a(b) { try { - throw 'Stuff'; + throw "Stuff"; } catch (undefined) { - console.log('caught: ' + undefined); + console.log("caught: " + undefined); } - console.log('undefined is ' + undefined); + console.log("undefined is " + undefined); return b === undefined; - }; + } + console.log(a(42), a(void 0)); } expect: { - function a(o){ + function a(o) { try { - throw "Stuff" + throw "Stuff"; } catch (o) { - console.log("caught: "+o) + console.log("caught: " + o); } console.log("undefined is " + void 0); - return void 0===o + return void 0 === o; } - } - expect_stdout: true + console.log(a(42), a(void 0)); + } + expect_stdout: [ + "caught: Stuff", + "undefined is undefined", + "caught: Stuff", + "undefined is undefined", + "false true", + ] } dont_screw_try_catch_undefined: { @@ -160,28 +168,37 @@ dont_screw_try_catch_undefined: { ie8: true, } input: { - function a(b){ + function a(b) { try { - throw 'Stuff'; + throw "Stuff"; } catch (undefined) { - console.log('caught: ' + undefined); + console.log("caught: " + undefined); } - console.log('undefined is ' + undefined); + // IE8: undefined is Stuff + console.log("undefined is " + undefined); return b === undefined; - }; + } + console.log(a(42), a(void 0)); } expect: { - function a(n){ + function a(n) { try { - throw "Stuff" + throw "Stuff"; } catch (undefined) { - console.log("caught: " + undefined) + console.log("caught: " + undefined); } console.log("undefined is " + undefined); - return n === undefined + return n === undefined; } - } - expect_stdout: true + console.log(a(42), a(void 0)); + } + expect_stdout: [ + "caught: Stuff", + "undefined is undefined", + "caught: Stuff", + "undefined is undefined", + "false true", + ] } reduce_vars: { @@ -1561,3 +1578,108 @@ issue_3478_2_ie8_toplevel: { } expect_stdout: "PASS" } + +issue_3482_1: { + options = { + evaluate: true, + ie8: false, + } + input: { + try { + throw 42; + } catch (NaN) { + var a = +"a"; + } + console.log(a, NaN, 0 / 0); + } + expect: { + try { + throw 42; + } catch (NaN) { + var a = 0 / 0; + } + console.log(a, NaN, NaN); + } + expect_stdout: "NaN NaN NaN" +} + +issue_3482_1_ie8: { + options = { + evaluate: true, + ie8: true, + } + input: { + try { + throw 42; + } catch (NaN) { + var a = +"a"; + } + // IE8: NaN 42 NaN + console.log(a, NaN, 0 / 0); + } + expect: { + try { + throw 42; + } catch (NaN) { + var a = 0 / 0; + } + console.log(a, NaN, 0 / 0); + } + expect_stdout: "NaN NaN NaN" +} + +issue_3482_2: { + options = { + evaluate: true, + ie8: false, + } + input: { + (function() { + try { + throw 42; + } catch (NaN) { + a = +"a"; + } + })(); + console.log(a, NaN, 0 / 0); + } + expect: { + (function() { + try { + throw 42; + } catch (NaN) { + a = 0 / 0; + } + })(); + console.log(a, NaN, NaN); + } + expect_stdout: "NaN NaN NaN" +} + +issue_3482_2_ie8: { + options = { + evaluate: true, + ie8: true, + } + input: { + (function() { + try { + throw 42; + } catch (NaN) { + a = +"a"; + } + })(); + console.log(a, NaN, 0 / 0); + } + expect: { + (function() { + try { + throw 42; + } catch (NaN) { + a = 0 / 0; + } + })(); + console.log(a, NaN, 0 / 0); + } + expect_stdout: "NaN NaN NaN" +} |