aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2017-04-18 21:45:34 +0800
committerGitHub <noreply@github.com>2017-04-18 21:45:34 +0800
commit0f4f01b66cb2aa4356309c70a7d6a95618603630 (patch)
tree2a7abe8cdb761302cfe9d3afd3e979aaa5ce9e1e /test
parent5d9f1da3abc58bce95dd240bd586bedb4eb04771 (diff)
downloadtracifyjs-0f4f01b66cb2aa4356309c70a7d6a95618603630.tar.gz
tracifyjs-0f4f01b66cb2aa4356309c70a7d6a95618603630.zip
clean up `collapse_vars` (#1826)
- remove overlap in functionality of singular, consecutive reference of constant value - remove workarounds for previous bugs in `lib/scope.js` - distribute recursive `collapse_single_use_vars()` calls to their respective `OPT(AST_Node)` - enable collapsing of variables within a single `AST_Definitions`
Diffstat (limited to 'test')
-rw-r--r--test/compress/collapse_vars.js104
1 files changed, 72 insertions, 32 deletions
diff --git a/test/compress/collapse_vars.js b/test/compress/collapse_vars.js
index c01572dd..0f82b743 100644
--- a/test/compress/collapse_vars.js
+++ b/test/compress/collapse_vars.js
@@ -2,7 +2,7 @@ collapse_vars_side_effects_1: {
options = {
collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true,
comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true,
- keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true
+ keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true, reduce_vars:true
}
input: {
function f1() {
@@ -151,7 +151,7 @@ collapse_vars_issue_721: {
options = {
collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true,
comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true,
- keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true
+ keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true, reduce_vars:true
}
input: {
define(["require", "exports", 'handlebars'], function (require, exports, hb) {
@@ -217,7 +217,7 @@ collapse_vars_properties: {
options = {
collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true,
comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true,
- keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true
+ keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true, reduce_vars:true
}
input: {
function f1(obj) {
@@ -244,7 +244,7 @@ collapse_vars_if: {
options = {
collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true,
comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true,
- keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true
+ keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true, reduce_vars:true
}
input: {
function f1() {
@@ -294,7 +294,7 @@ collapse_vars_while: {
options = {
collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true,
comparisons:true, evaluate:true, booleans:true, loops:false, unused:true, hoist_funs:true,
- keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true
+ keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true, reduce_vars:true
}
input: {
function f1(y) {
@@ -393,9 +393,9 @@ collapse_vars_do_while: {
}
function f3(y) {
function fn(n) { console.log(n); }
- var a = 2;
+ var a = 2, x = 7;
do {
- fn(a = 7);
+ fn(a = x);
break;
} while (y);
}
@@ -468,8 +468,9 @@ collapse_vars_do_while_drop_assign: {
}
function f3(y) {
function fn(n) { console.log(n); }
+ var x = 7;
do {
- fn(7);
+ fn(x);
break;
} while (y);
}
@@ -670,7 +671,7 @@ collapse_vars_lvalues: {
function f4(x) { var a = (x -= 3); return x + a; }
function f5(x) { var w = e1(), v = e2(), c = v = --x; return (w = x) - c; }
function f6(x) { var w = e1(), v = e2(); return (v = --x) - (w = x); }
- function f7(x) { var w = e1(), v = e2(), c = v - x; return (w = x) - c; }
+ function f7(x) { var w = e1(), c = e2() - x; return (w = x) - c; }
function f8(x) { var w = e1(), v = e2(); return (w = x) - (v - x); }
function f9(x) { var w = e1(); return e2() - x - (w = x); }
}
@@ -702,7 +703,7 @@ collapse_vars_lvalues_drop_assign: {
function f4(x) { var a = (x -= 3); return x + a; }
function f5(x) { var v = (e1(), e2()), c = v = --x; return x - c; }
function f6(x) { e1(), e2(); return --x - x; }
- function f7(x) { var v = (e1(), e2()), c = v - x; return x - c; }
+ function f7(x) { var c = (e1(), e2() - x); return x - c; }
function f8(x) { var v = (e1(), e2()); return x - (v - x); }
function f9(x) { e1(); return e2() - x - x; }
}
@@ -712,7 +713,7 @@ collapse_vars_misc1: {
options = {
collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true,
comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true,
- keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true
+ keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true, reduce_vars:true
}
input: {
function f0(o, a, h) {
@@ -789,7 +790,7 @@ collapse_vars_repeated: {
options = {
collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true,
comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true,
- keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true
+ keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true, reduce_vars:true
}
input: {
function f1() {
@@ -812,19 +813,17 @@ collapse_vars_repeated: {
}
expect: {
function f1() {
- return -3
+ return -3;
}
function f2(x) {
- return x
+ return x;
}
(function(x){
- var a = "GOOD" + x, e = "BAD", e = a;
- console.log(e + "!");
- })("!"),
+ console.log("GOOD!!");
+ })(),
(function(x){
- var a = "GOOD" + x, e = "BAD" + x, e = a;
- console.log(e + "!");
- })("!");
+ console.log("GOOD!!");
+ })();
}
expect_stdout: true
}
@@ -833,7 +832,7 @@ collapse_vars_closures: {
options = {
collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true,
comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true,
- keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true
+ keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true, reduce_vars:true
}
input: {
function constant_vars_can_be_replaced_in_any_scope() {
@@ -923,7 +922,7 @@ collapse_vars_try: {
options = {
collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true,
comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true,
- keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true
+ keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true, reduce_vars:true
}
input: {
function f1() {
@@ -1121,7 +1120,7 @@ collapse_vars_constants: {
options = {
collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true,
comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true,
- keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true
+ keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true, reduce_vars:true
}
input: {
function f1(x) {
@@ -1159,7 +1158,7 @@ collapse_vars_arguments: {
collapse_vars:true, sequences:true, properties:true, dead_code:true, conditionals:true,
comparisons:true, evaluate:true, booleans:true, loops:true, unused:true, hoist_funs:true,
keep_fargs:true, if_return:true, join_vars:true, cascade:true, side_effects:true,
- toplevel:true
+ toplevel:true, reduce_vars:true
}
input: {
var outer = function() {
@@ -1286,6 +1285,7 @@ collapse_vars_regexp: {
join_vars: true,
cascade: true,
side_effects: true,
+ reduce_vars: true,
}
input: {
function f1() {
@@ -1319,8 +1319,8 @@ collapse_vars_regexp: {
};
}
(function(){
- var result, s = "acdabcdeabbb", rx = /ab*/g;
- while (result = rx.exec(s))
+ var result, rx = /ab*/g;
+ while (result = rx.exec("acdabcdeabbb"))
console.log(result[0]);
})();
}
@@ -1344,7 +1344,10 @@ issue_1537: {
issue_1562: {
options = {
collapse_vars: true,
+ evaluate: true,
+ reduce_vars: true,
toplevel: true,
+ unused: true,
}
input: {
var v = 1, B = 2;
@@ -1363,14 +1366,11 @@ issue_1562: {
var v = 1;
for (v in objs) f(2);
- var x = 3;
- while(x + 2) bar(10);
+ while(5) bar(10);
- var y = 4;
- do bar(20); while(y + 2);
+ do bar(20); while(6);
- var z = 5;
- for (; f(z + 2) ;) bar(30);
+ for (; f(7) ;) bar(30);
}
}
@@ -1614,3 +1614,43 @@ reduce_vars_assign: {
}
expect_stdout: "0"
}
+
+iife_1: {
+ options = {
+ collapse_vars: true,
+ reduce_vars: true,
+ toplevel: true,
+ unused: true,
+ }
+ input: {
+ var log = function(x) {
+ console.log(x);
+ }, foo = bar();
+ log(foo);
+ }
+ expect: {
+ (function(x) {
+ console.log(x);
+ })(bar());
+ }
+}
+
+iife_2: {
+ options = {
+ collapse_vars: true,
+ reduce_vars: false,
+ toplevel: true,
+ unused: false,
+ }
+ input: {
+ var foo = bar();
+ !function(x) {
+ console.log(x);
+ }(foo);
+ }
+ expect: {
+ !function(x) {
+ console.log(x);
+ }(bar());
+ }
+}