enhance collapse_vars (#3611)

This commit is contained in:
Alex Lam S.L
2019-11-28 03:57:10 +08:00
committed by GitHub
parent d4b7010678
commit 168ae747ad
2 changed files with 209 additions and 13 deletions

View File

@@ -669,7 +669,7 @@ collapse_vars_throw: {
expect_stdout: "13"
}
collapse_vars_switch: {
collapse_vars_switch_1: {
options = {
booleans: true,
collapse_vars: true,
@@ -721,6 +721,31 @@ collapse_vars_switch: {
}
}
collapse_vars_switch_2: {
options = {
collapse_vars: true,
}
input: {
var c = 0;
(function(b) {
switch (b && [ b = 0, (c++, 0) ]) {
case c = 1 + c:
}
})();
console.log(c);
}
expect: {
var c = 0;
(function(b) {
switch (b && [ b = 0, (c++, 0) ]) {
case c = 1 + c:
}
})();
console.log(c);
}
expect_stdout: "1"
}
collapse_vars_assignment: {
options = {
booleans: true,
@@ -1234,7 +1259,7 @@ collapse_vars_try: {
}
}
collapse_vars_array: {
collapse_vars_array_1: {
options = {
booleans: true,
collapse_vars: true,
@@ -1280,7 +1305,58 @@ collapse_vars_array: {
}
}
collapse_vars_object: {
collapse_vars_array_2: {
options = {
collapse_vars: true,
unused: true,
}
input: {
function f(a) {
var b;
return [ (b = a, b.g()) ];
}
console.log(f({
g: function() {
return "PASS";
}
})[0]);
}
expect: {
function f(a) {
return [ a.g() ];
}
console.log(f({
g: function() {
return "PASS";
}
})[0]);
}
expect_stdout: "PASS"
}
collapse_vars_array_3: {
options = {
collapse_vars: true,
unused: true,
}
input: {
function f(a) {
var b;
return [ b = a, b, b ];
}
console.log(f().length);
}
expect: {
function f(a) {
var b;
return [ b = a, b, b ];
}
console.log(f().length);
}
expect_stdout: "3"
}
collapse_vars_object_1: {
options = {
booleans: true,
collapse_vars: true,
@@ -1360,6 +1436,69 @@ collapse_vars_object: {
}
}
collapse_vars_object_2: {
options = {
collapse_vars: true,
unused: true,
}
input: {
function f(a) {
var b;
return {
p: (b = a, b.g())
};
}
console.log(f({
g: function() {
return "PASS";
}
}).p);
}
expect: {
function f(a) {
return {
p: a.g()
};
}
console.log(f({
g: function() {
return "PASS";
}
}).p);
}
expect_stdout: "PASS"
}
collapse_vars_object_3: {
options = {
collapse_vars: true,
unused: true,
}
input: {
function f(a) {
var b;
return {
p: b = a,
q: b,
r: b,
};
}
console.log(f("PASS").r);
}
expect: {
function f(a) {
var b;
return {
p: b = a,
q: b,
r: b,
};
}
console.log(f("PASS").r);
}
expect_stdout: "PASS"
}
collapse_vars_eval_and_with: {
options = {
booleans: true,
@@ -6624,3 +6763,45 @@ local_value_replacement: {
}
expect_stdout: "PASS"
}
array_in_object_1: {
options = {
collapse_vars: true,
}
input: {
var a = 2;
console.log({
p: [ a, a-- ],
q: a,
}.q, a);
}
expect: {
var a = 2;
console.log({
p: [ a, a-- ],
q: a,
}.q, a);
}
expect_stdout: "1 1"
}
array_in_object_2: {
options = {
collapse_vars: true,
}
input: {
var a = 2;
console.log({
p: [ a, (a--, 42) ],
q: a,
}.q, a);
}
expect: {
var a = 2;
console.log({
p: [ a, 42 ],
q: --a,
}.q, a);
}
expect_stdout: "1 1"
}