aboutsummaryrefslogtreecommitdiff
path: root/test/compress/ie8.js
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2019-10-16 01:09:16 +0800
committerGitHub <noreply@github.com>2019-10-16 01:09:16 +0800
commit91cae51d8f8a7f06e55dba7d100bbb663448875b (patch)
tree9c5f4ad80ed0dd9ae2e6e2312ad11fd63c92ac09 /test/compress/ie8.js
parent8af2f5fbcf91279db86f71e9a889d69b262370c5 (diff)
downloadtracifyjs-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.js166
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"
+}