aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2017-04-01 03:02:14 +0800
committerGitHub <noreply@github.com>2017-04-01 03:02:14 +0800
commit257ddc3bdb37efdb48fc23371f5f523e2044afd8 (patch)
tree8b91508961f0acd7c43db5a0e08dc8f932df4a55 /test
parent1ddc05725d078ccf73d711e376c3c530cd517cdb (diff)
downloadtracifyjs-257ddc3bdb37efdb48fc23371f5f523e2044afd8.tar.gz
tracifyjs-257ddc3bdb37efdb48fc23371f5f523e2044afd8.zip
improve compression of undefined, NaN & Infinitiy (#1748)
- migrate transformation logic from `OutputStream` to `Compressor` - always turn `undefined` into `void 0` (unless `unsafe`) - always keep `NaN` except when avoiding local variable redefinition - introduce `keep_infinity` to suppress `1/0` transform, except when avoiding local variable redefinition supersedes #1723 fixes #1730
Diffstat (limited to 'test')
-rw-r--r--test/compress/conditionals.js8
-rw-r--r--test/compress/evaluate.js8
-rw-r--r--test/compress/issue-1105.js68
-rw-r--r--test/compress/issue-597.js32
-rw-r--r--test/compress/numbers.js2
-rw-r--r--test/compress/properties.js2
6 files changed, 107 insertions, 13 deletions
diff --git a/test/compress/conditionals.js b/test/compress/conditionals.js
index 54d4264d..e7ea2bb2 100644
--- a/test/compress/conditionals.js
+++ b/test/compress/conditionals.js
@@ -840,8 +840,8 @@ equality_conditionals_false: {
f(0, true, 0),
f(1, 2, 3),
f(1, null, 3),
- f(0/0),
- f(0/0, "foo");
+ f(NaN),
+ f(NaN, "foo");
}
expect_stdout: true
}
@@ -888,8 +888,8 @@ equality_conditionals_true: {
f(0, true, 0),
f(1, 2, 3),
f(1, null, 3),
- f(0/0),
- f(0/0, "foo");
+ f(NaN),
+ f(NaN, "foo");
}
expect_stdout: true
}
diff --git a/test/compress/evaluate.js b/test/compress/evaluate.js
index 35b6b925..0d26e749 100644
--- a/test/compress/evaluate.js
+++ b/test/compress/evaluate.js
@@ -52,7 +52,7 @@ and: {
a = 7;
a = false;
- a = 0/0;
+ a = NaN;
a = 0;
a = void 0;
a = null;
@@ -67,7 +67,7 @@ and: {
a = 6 << condition && -4.5;
a = condition && false;
- a = console.log("b") && 0/0;
+ a = console.log("b") && NaN;
a = console.log("c") && 0;
a = 2 * condition && void 0;
a = condition + 3 && null;
@@ -149,7 +149,7 @@ or: {
a = 6 << condition || -4.5;
a = condition || false;
- a = console.log("b") || 0/0;
+ a = console.log("b") || NaN;
a = console.log("c") || 0;
a = 2 * condition || void 0;
a = condition + 3 || null;
@@ -533,7 +533,7 @@ unsafe_array: {
[1, 2, 3, a][0] + 1,
2,
3,
- 0/0,
+ NaN,
"1,21",
5,
(void 0)[1] + 1
diff --git a/test/compress/issue-1105.js b/test/compress/issue-1105.js
index f9412165..ea957930 100644
--- a/test/compress/issue-1105.js
+++ b/test/compress/issue-1105.js
@@ -193,6 +193,7 @@ assorted_Infinity_NaN_undefined_in_with_scope: {
cascade: true,
side_effects: true,
sequences: false,
+ keep_infinity: false,
}
input: {
var f = console.log;
@@ -224,10 +225,73 @@ assorted_Infinity_NaN_undefined_in_with_scope: {
};
if (o) {
f(void 0, void 0);
- f(0/0, 0/0);
+ f(NaN, NaN);
f(1/0, 1/0);
f(-1/0, -1/0);
- f(0/0, 0/0);
+ f(NaN, NaN);
+ }
+ with (o) {
+ f(undefined, void 0);
+ f(NaN, 0/0);
+ f(Infinity, 1/0);
+ f(-Infinity, -1/0);
+ f(9 + undefined, 9 + void 0);
+ }
+ }
+ expect_stdout: true
+}
+
+assorted_Infinity_NaN_undefined_in_with_scope_keep_infinity: {
+ options = {
+ unused: true,
+ evaluate: true,
+ dead_code: true,
+ conditionals: true,
+ comparisons: true,
+ booleans: true,
+ hoist_funs: true,
+ keep_fargs: true,
+ if_return: true,
+ join_vars: true,
+ cascade: true,
+ side_effects: true,
+ sequences: false,
+ keep_infinity: true,
+ }
+ input: {
+ var f = console.log;
+ var o = {
+ undefined : 3,
+ NaN : 4,
+ Infinity : 5,
+ };
+ if (o) {
+ f(undefined, void 0);
+ f(NaN, 0/0);
+ f(Infinity, 1/0);
+ f(-Infinity, -(1/0));
+ f(2 + 7 + undefined, 2 + 7 + void 0);
+ }
+ with (o) {
+ f(undefined, void 0);
+ f(NaN, 0/0);
+ f(Infinity, 1/0);
+ f(-Infinity, -(1/0));
+ f(2 + 7 + undefined, 2 + 7 + void 0);
+ }
+ }
+ expect: {
+ var f = console.log, o = {
+ undefined : 3,
+ NaN : 4,
+ Infinity : 5
+ };
+ if (o) {
+ f(void 0, void 0);
+ f(NaN, NaN);
+ f(Infinity, 1/0);
+ f(-Infinity, -1/0);
+ f(NaN, NaN);
}
with (o) {
f(undefined, void 0);
diff --git a/test/compress/issue-597.js b/test/compress/issue-597.js
index 987bcacc..143fcc22 100644
--- a/test/compress/issue-597.js
+++ b/test/compress/issue-597.js
@@ -6,7 +6,7 @@ NaN_and_Infinity_must_have_parens: {
}
expect: {
(1/0).toString();
- (0/0).toString();
+ NaN.toString();
}
}
@@ -24,6 +24,36 @@ NaN_and_Infinity_should_not_be_replaced_when_they_are_redefined: {
}
}
+NaN_and_Infinity_must_have_parens_evaluate: {
+ options = {
+ evaluate: true,
+ }
+ input: {
+ (123456789 / 0).toString();
+ (+"foo").toString();
+ }
+ expect: {
+ (1/0).toString();
+ NaN.toString();
+ }
+}
+
+NaN_and_Infinity_should_not_be_replaced_when_they_are_redefined_evaluate: {
+ options = {
+ evaluate: true,
+ }
+ input: {
+ var Infinity, NaN;
+ (123456789 / 0).toString();
+ (+"foo").toString();
+ }
+ expect: {
+ var Infinity, NaN;
+ (1/0).toString();
+ (0/0).toString();
+ }
+}
+
beautify_off_1: {
options = {
evaluate: true,
diff --git a/test/compress/numbers.js b/test/compress/numbers.js
index 946a7f2d..86545fba 100644
--- a/test/compress/numbers.js
+++ b/test/compress/numbers.js
@@ -186,7 +186,7 @@ unary_binary_parenthesis: {
});
}
expect: {
- var v = [ 0, 1, 0/0, 1/0, null, void 0, true, false, "", "foo", /foo/ ];
+ var v = [ 0, 1, NaN, 1/0, null, void 0, true, false, "", "foo", /foo/ ];
v.forEach(function(x) {
v.forEach(function(y) {
console.log(
diff --git a/test/compress/properties.js b/test/compress/properties.js
index 376fb9e2..29bdfe2a 100644
--- a/test/compress/properties.js
+++ b/test/compress/properties.js
@@ -77,7 +77,7 @@ sub_properties: {
a[3.14] = 3;
a.if = 4;
a["foo bar"] = 5;
- a[0/0] = 6;
+ a[NaN] = 6;
a[null] = 7;
a[void 0] = 8;
}