JS/Inlining: rename IneffectiveStatementElimination to RedundantStatementElimination
This commit is contained in:
+76
@@ -0,0 +1,76 @@
|
||||
var global = 0;
|
||||
|
||||
function se() {
|
||||
return ++global;
|
||||
}
|
||||
|
||||
function se2(value) {
|
||||
++global;
|
||||
return value;
|
||||
}
|
||||
|
||||
function test1() {
|
||||
var $a = (se("a1") - se("a2") + se("a3")) * se("a4");
|
||||
var $b = se("b1") % se("b2") / se("b3");
|
||||
var $c = se("c1") >> se("c2");
|
||||
var $d = se("d1") << se("d2");
|
||||
var $e = se("e1") >>> se("e2");
|
||||
var $f = se("f1") | se("f2") & se("f3") ^ se("f4");
|
||||
var $g1 = se("g1_1") == se("g1_2");
|
||||
var $g2 = se("g2_1") === se("g2_2");
|
||||
var $g3 = se("g3_1") != se("g3_2");
|
||||
var $g4 = se("g4_1") !== se("g4_2");
|
||||
var $h1 = se("h1_1") > se("h1_2");
|
||||
var $h2 = se("h2_1") >= se("h2_2");
|
||||
var $h3 = se("h3_1") < se("h3_2");
|
||||
var $h4 = se("h4_1") <= se("h4_2");
|
||||
}
|
||||
|
||||
function test2() {
|
||||
try {
|
||||
var $a = se() in se();
|
||||
return "fail2a: `in` should not be removed"
|
||||
}
|
||||
catch (e) {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
try {
|
||||
var $b = se() instanceof se();
|
||||
return "fail2b: `instanceof` should not be removed"
|
||||
}
|
||||
catch (e) {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
function test3() {
|
||||
var x = true;
|
||||
var y = false;
|
||||
|
||||
var $a1 = se2(true) && x;
|
||||
var $a2 = x && se2(true);
|
||||
var $a3 = se2(true) && se2(true);
|
||||
var $a4 = x && x;
|
||||
|
||||
var $b1 = se2(false) || y;
|
||||
var $b2 = y || se2(false);
|
||||
var $b3 = se2(false) || se2(false);
|
||||
var $b4 = y || y;
|
||||
}
|
||||
|
||||
function box() {
|
||||
test1();
|
||||
if (global != 33) return "fail1: " + global;
|
||||
|
||||
var result = test2();
|
||||
if (result !== "OK") return result;
|
||||
if (global != 37) return "fail2: " + global;
|
||||
|
||||
test3();
|
||||
if (global != 45) return "fail3: " + global;
|
||||
|
||||
return "OK";
|
||||
}
|
||||
Reference in New Issue
Block a user