enhance conditionals, if_return & side_effects (#5348)
This commit is contained in:
@@ -489,7 +489,7 @@ issue_3413: {
|
||||
}
|
||||
expect: {
|
||||
var b;
|
||||
void 0 !== ("" < b || void 0) || console.log("PASS");
|
||||
void 0 === ("" < b || void 0) && console.log("PASS");
|
||||
}
|
||||
expect_stdout: "PASS"
|
||||
}
|
||||
|
||||
@@ -597,8 +597,7 @@ do_if_continue_1: {
|
||||
}
|
||||
expect: {
|
||||
do {
|
||||
if (!console);
|
||||
else {
|
||||
if (console) {
|
||||
console.log("PASS");
|
||||
{
|
||||
const a = 0;
|
||||
@@ -628,8 +627,7 @@ do_if_continue_2: {
|
||||
}
|
||||
expect: {
|
||||
do {
|
||||
if (!console);
|
||||
else {
|
||||
if (console) {
|
||||
console.log("PASS");
|
||||
{
|
||||
const a = 0;
|
||||
@@ -1518,6 +1516,7 @@ issue_4689: {
|
||||
|
||||
issue_4691: {
|
||||
options = {
|
||||
conditionals: true,
|
||||
if_return: true,
|
||||
toplevel: true,
|
||||
}
|
||||
|
||||
@@ -7981,6 +7981,7 @@ issue_5264_2: {
|
||||
|
||||
issue_5283: {
|
||||
options = {
|
||||
conditionals: true,
|
||||
if_return: true,
|
||||
inline: true,
|
||||
pure_getters: "strict",
|
||||
@@ -8005,11 +8006,10 @@ issue_5283: {
|
||||
var a = "FAIL 1";
|
||||
(function() {
|
||||
a = "PASS";
|
||||
if (!console)
|
||||
(function(a) {
|
||||
console.log("FAIL 2");
|
||||
a.p;
|
||||
})();
|
||||
console || function(a) {
|
||||
console.log("FAIL 2");
|
||||
a.p;
|
||||
}();
|
||||
})();
|
||||
console.log(a);
|
||||
}
|
||||
|
||||
@@ -698,7 +698,9 @@ iife_if_return_simple: {
|
||||
|
||||
nested_if_break: {
|
||||
options = {
|
||||
conditionals: true,
|
||||
if_return: true,
|
||||
side_effects: true,
|
||||
}
|
||||
input: {
|
||||
for (var i = 0; i < 3; i++)
|
||||
@@ -709,8 +711,7 @@ nested_if_break: {
|
||||
}
|
||||
expect: {
|
||||
for (var i = 0; i < 3; i++)
|
||||
L1: if ("number" == typeof i)
|
||||
if (0 !== i) console.log(i);
|
||||
L1: "number" == typeof i && 0 !== i && console.log(i);
|
||||
}
|
||||
expect_stdout: [
|
||||
"1",
|
||||
@@ -749,11 +750,11 @@ nested_if_continue: {
|
||||
function f(n) {
|
||||
for (var i = 0;
|
||||
"number" == typeof n
|
||||
&& (0 !== n
|
||||
? 1 !== n
|
||||
? i++
|
||||
: console.log("odd", i)
|
||||
: console.log("even", i)),
|
||||
&& (0 === n
|
||||
? console.log("even", i)
|
||||
: 1 === n
|
||||
? console.log("odd", i)
|
||||
: i++),
|
||||
0 <= (n -= 2););
|
||||
}
|
||||
f(37);
|
||||
|
||||
@@ -4,22 +4,21 @@ multiple_functions: {
|
||||
if_return: true,
|
||||
}
|
||||
input: {
|
||||
( function() {
|
||||
if ( !window ) {
|
||||
(function() {
|
||||
if (!window)
|
||||
return;
|
||||
}
|
||||
function f() {}
|
||||
function g() {}
|
||||
} )();
|
||||
})();
|
||||
}
|
||||
expect: {
|
||||
( function() {
|
||||
(function() {
|
||||
// NOTE: other compression steps will reduce this
|
||||
// down to just `window`.
|
||||
if ( !window );
|
||||
if (!window);
|
||||
function f() {}
|
||||
function g() {}
|
||||
} )();
|
||||
})();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,18 +28,17 @@ single_function: {
|
||||
if_return: true,
|
||||
}
|
||||
input: {
|
||||
( function() {
|
||||
if ( !window ) {
|
||||
(function() {
|
||||
if (!window)
|
||||
return;
|
||||
}
|
||||
function f() {}
|
||||
} )();
|
||||
})();
|
||||
}
|
||||
expect: {
|
||||
( function() {
|
||||
if ( !window );
|
||||
(function() {
|
||||
if (!window);
|
||||
function f() {}
|
||||
} )();
|
||||
})();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,28 +48,26 @@ deeply_nested: {
|
||||
if_return: true,
|
||||
}
|
||||
input: {
|
||||
( function() {
|
||||
if ( !window ) {
|
||||
(function() {
|
||||
if (!window)
|
||||
return;
|
||||
}
|
||||
function f() {}
|
||||
function g() {}
|
||||
if ( !document ) {
|
||||
if (!document)
|
||||
return;
|
||||
}
|
||||
function h() {}
|
||||
} )();
|
||||
})();
|
||||
}
|
||||
expect: {
|
||||
( function() {
|
||||
(function() {
|
||||
// NOTE: other compression steps will reduce this
|
||||
// down to just `window`.
|
||||
if ( window )
|
||||
if ( !document );
|
||||
if (!window);
|
||||
else if (!document);
|
||||
function f() {}
|
||||
function g() {}
|
||||
function h() {}
|
||||
} )();
|
||||
})();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,18 +77,18 @@ not_hoisted_when_already_nested: {
|
||||
if_return: true,
|
||||
}
|
||||
input: {
|
||||
( function() {
|
||||
if ( !window ) {
|
||||
(function() {
|
||||
if (!window)
|
||||
return;
|
||||
}
|
||||
if ( foo ) function f() {}
|
||||
} )();
|
||||
if (foo) function f() {}
|
||||
})();
|
||||
}
|
||||
expect: {
|
||||
( function() {
|
||||
if ( window )
|
||||
if ( foo ) function f() {}
|
||||
} )();
|
||||
(function() {
|
||||
if (!window);
|
||||
else if (foo)
|
||||
function f() {}
|
||||
})();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -104,15 +100,19 @@ defun_if_return: {
|
||||
input: {
|
||||
function e() {
|
||||
function f() {}
|
||||
if (!window) return;
|
||||
else function g() {}
|
||||
if (!window)
|
||||
return;
|
||||
else
|
||||
function g() {}
|
||||
function h() {}
|
||||
}
|
||||
}
|
||||
expect: {
|
||||
function e() {
|
||||
function f() {}
|
||||
if (window) function g() {}
|
||||
if (!window);
|
||||
else
|
||||
function g() {}
|
||||
function h() {}
|
||||
}
|
||||
}
|
||||
@@ -126,8 +126,10 @@ defun_hoist_funs: {
|
||||
input: {
|
||||
function e() {
|
||||
function f() {}
|
||||
if (!window) return;
|
||||
else function g() {}
|
||||
if (!window)
|
||||
return;
|
||||
else
|
||||
function g() {}
|
||||
function h() {}
|
||||
}
|
||||
}
|
||||
@@ -136,7 +138,7 @@ defun_hoist_funs: {
|
||||
function f() {}
|
||||
function g() {}
|
||||
function h() {}
|
||||
if (window);
|
||||
if (!window);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -149,15 +151,18 @@ defun_else_if_return: {
|
||||
input: {
|
||||
function e() {
|
||||
function f() {}
|
||||
if (window) function g() {}
|
||||
else return;
|
||||
if (window)
|
||||
function g() {}
|
||||
else
|
||||
return;
|
||||
function h() {}
|
||||
}
|
||||
}
|
||||
expect: {
|
||||
function e() {
|
||||
function f() {}
|
||||
if (window) function g() {}
|
||||
if (window)
|
||||
function g() {}
|
||||
function h() {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,6 +40,9 @@ conditional_false_stray_else_in_loop: {
|
||||
console.log(i);
|
||||
}
|
||||
}
|
||||
expect_exact: "for(var i=1;i<=4;++i)if(!(i<=2))console.log(i);"
|
||||
expect_stdout: true
|
||||
expect_exact: "for(var i=1;i<=4;++i)if(i<=2);else console.log(i);"
|
||||
expect_stdout: [
|
||||
"3",
|
||||
"4",
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
issue979_reported: {
|
||||
reported: {
|
||||
options = {
|
||||
booleans: true,
|
||||
comparisons: true,
|
||||
@@ -17,29 +17,26 @@ issue979_reported: {
|
||||
}
|
||||
input: {
|
||||
function f1() {
|
||||
if (a == 1 || b == 2) {
|
||||
if (a == 1 || b == 2)
|
||||
foo();
|
||||
}
|
||||
}
|
||||
function f2() {
|
||||
if (!(a == 1 || b == 2)) {
|
||||
}
|
||||
else {
|
||||
if (!(a == 1 || b == 2));
|
||||
else
|
||||
foo();
|
||||
}
|
||||
}
|
||||
}
|
||||
expect: {
|
||||
function f1() {
|
||||
1!=a&&2!=b||foo();
|
||||
1 != a && 2 != b || foo();
|
||||
}
|
||||
function f2() {
|
||||
1!=a&&2!=b||foo();
|
||||
1 != a && 2 != b || foo();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
issue979_test_negated_is_best: {
|
||||
test_negated_is_best: {
|
||||
options = {
|
||||
booleans: true,
|
||||
comparisons: true,
|
||||
@@ -58,53 +55,47 @@ issue979_test_negated_is_best: {
|
||||
}
|
||||
input: {
|
||||
function f3() {
|
||||
if (a == 1 | b == 2) {
|
||||
if (a == 1 | b == 2)
|
||||
foo();
|
||||
}
|
||||
}
|
||||
function f4() {
|
||||
if (!(a == 1 | b == 2)) {
|
||||
}
|
||||
else {
|
||||
if (!(a == 1 | b == 2));
|
||||
else
|
||||
foo();
|
||||
}
|
||||
}
|
||||
function f5() {
|
||||
if (a == 1 && b == 2) {
|
||||
if (a == 1 && b == 2)
|
||||
foo();
|
||||
}
|
||||
}
|
||||
function f6() {
|
||||
if (!(a == 1 && b == 2)) {
|
||||
}
|
||||
else {
|
||||
if (!(a == 1 && b == 2));
|
||||
else
|
||||
foo();
|
||||
}
|
||||
}
|
||||
function f7() {
|
||||
if (a == 1 || b == 2) {
|
||||
if (a == 1 || b == 2)
|
||||
foo();
|
||||
}
|
||||
else {
|
||||
else
|
||||
return bar();
|
||||
}
|
||||
}
|
||||
}
|
||||
expect: {
|
||||
function f3() {
|
||||
1==a|2==b&&foo();
|
||||
1 == a | 2 == b && foo();
|
||||
}
|
||||
function f4() {
|
||||
1==a|2==b&&foo();
|
||||
1 == a | 2 == b && foo();
|
||||
}
|
||||
function f5() {
|
||||
1==a&&2==b&&foo();
|
||||
1 == a && 2 == b && foo();
|
||||
}
|
||||
function f6() {
|
||||
1!=a||2!=b||foo();
|
||||
1 == a && 2 == b && foo();
|
||||
}
|
||||
function f7() {
|
||||
if(1!=a&&2!=b)return bar();foo()
|
||||
if (1 != a && 2 != b)
|
||||
return bar();
|
||||
foo();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -912,8 +912,7 @@ do_if_continue_1: {
|
||||
expect: {
|
||||
"use strict";
|
||||
do {
|
||||
if (!console);
|
||||
else {
|
||||
if (console) {
|
||||
console.log("PASS");
|
||||
{
|
||||
let a = 0;
|
||||
@@ -946,8 +945,7 @@ do_if_continue_2: {
|
||||
expect: {
|
||||
"use strict";
|
||||
do {
|
||||
if (!console);
|
||||
else {
|
||||
if (console) {
|
||||
console.log("FAIL");
|
||||
{
|
||||
let a = 0;
|
||||
@@ -1667,9 +1665,7 @@ issue_4438: {
|
||||
expect: {
|
||||
"use strict";
|
||||
function f() {
|
||||
if (!console)
|
||||
;
|
||||
else {
|
||||
if (console) {
|
||||
let a = console.log;
|
||||
void a("PASS");
|
||||
}
|
||||
@@ -1757,6 +1753,7 @@ issue_4689: {
|
||||
|
||||
issue_4691: {
|
||||
options = {
|
||||
conditionals: true,
|
||||
if_return: true,
|
||||
toplevel: true,
|
||||
}
|
||||
|
||||
@@ -617,7 +617,7 @@ issue_4730_2: {
|
||||
}
|
||||
expect: {
|
||||
var a;
|
||||
!console.log("PASS") || a && a[a.p];
|
||||
console.log("PASS") && a && a[a.p];
|
||||
}
|
||||
expect_stdout: "PASS"
|
||||
}
|
||||
|
||||
@@ -307,7 +307,7 @@ typeof_defined_1: {
|
||||
}
|
||||
expect: {
|
||||
"undefined" == typeof A && A;
|
||||
"undefined" != typeof A || A;
|
||||
"undefined" == typeof A && A;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -324,7 +324,7 @@ typeof_defined_2: {
|
||||
}
|
||||
expect: {
|
||||
"function" != typeof A && A;
|
||||
"function" == typeof A || A;
|
||||
"function" != typeof A && A;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -355,16 +355,19 @@ typeof_defined_3: {
|
||||
"undefined" == typeof A && "undefined" == typeof B && (A, B);
|
||||
"undefined" == typeof A && "undefined" != typeof B && A;
|
||||
"undefined" != typeof A && "undefined" == typeof B && B;
|
||||
// dropped
|
||||
"undefined" == typeof A && "undefined" == typeof B || (A, B);
|
||||
"undefined" == typeof A && "undefined" != typeof B || (A, B);
|
||||
"undefined" != typeof A && "undefined" == typeof B || (A, B);
|
||||
"undefined" != typeof A && "undefined" != typeof B || (A, B);
|
||||
"undefined" == typeof A || "undefined" == typeof B && B;
|
||||
"undefined" != typeof A || "undefined" == typeof B && (A, B);
|
||||
"undefined" != typeof A || "undefined" != typeof B && A;
|
||||
"undefined" == typeof A || "undefined" != typeof B || B;
|
||||
"undefined" != typeof A || "undefined" == typeof B || A;
|
||||
"undefined" != typeof A || "undefined" != typeof B || (A, B);
|
||||
"undefined" != typeof A && "undefined" == typeof B && B;
|
||||
// dropped
|
||||
"undefined" == typeof A && "undefined" == typeof B && (A, B);
|
||||
"undefined" == typeof A && "undefined" != typeof B && A;
|
||||
// dropped
|
||||
"undefined" != typeof A && "undefined" == typeof B && B;
|
||||
"undefined" == typeof A && "undefined" != typeof B && A;
|
||||
"undefined" == typeof A && "undefined" == typeof B && (A, B);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -392,6 +395,7 @@ typeof_defined_4: {
|
||||
"object" != typeof A || "object" != typeof B || (A, B);
|
||||
}
|
||||
expect: {
|
||||
// dropped
|
||||
"object" == typeof A && "object" != typeof B && B;
|
||||
"object" != typeof A && "object" == typeof B && A;
|
||||
"object" != typeof A && "object" != typeof B && (A, B);
|
||||
@@ -399,12 +403,14 @@ typeof_defined_4: {
|
||||
"object" == typeof A && "object" != typeof B || (A, B);
|
||||
"object" != typeof A && "object" == typeof B || (A, B);
|
||||
"object" != typeof A && "object" != typeof B || (A, B);
|
||||
"object" == typeof A || "object" == typeof B && A;
|
||||
"object" == typeof A || "object" != typeof B && (A, B);
|
||||
"object" != typeof A || "object" != typeof B && B;
|
||||
"object" == typeof A || "object" == typeof B || (A, B);
|
||||
"object" == typeof A || "object" != typeof B || A;
|
||||
"object" != typeof A || "object" == typeof B || B;
|
||||
"object" != typeof A && "object" == typeof B && A;
|
||||
"object" != typeof A && "object" != typeof B && (A, B);
|
||||
// dropped
|
||||
"object" == typeof A && "object" != typeof B && B;
|
||||
"object" != typeof A && "object" != typeof B && (A, B);
|
||||
"object" != typeof A && "object" == typeof B && A;
|
||||
"object" == typeof A && "object" != typeof B && B;
|
||||
// dropped
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user