ev() should do a single thing — evaluate constant expressions. if that's not possible, just return the original node. it's not the best place for partial evaluation there, instead doing it in the compress functions.
75 lines
2.4 KiB
JavaScript
75 lines
2.4 KiB
JavaScript
holes_and_undefined: {
|
|
input: {
|
|
w = [1,,];
|
|
x = [1, 2, undefined];
|
|
y = [1, , 2, ];
|
|
z = [1, undefined, 3];
|
|
}
|
|
expect: {
|
|
w=[1,,];
|
|
x=[1,2,void 0];
|
|
y=[1,,2];
|
|
z=[1,void 0,3];
|
|
}
|
|
}
|
|
|
|
constant_join: {
|
|
options = {
|
|
unsafe : true,
|
|
evaluate : true
|
|
};
|
|
input: {
|
|
var a = [ "foo", "bar", "baz" ].join("");
|
|
var a1 = [ "foo", "bar", "baz" ].join();
|
|
var b = [ "foo", 1, 2, 3, "bar" ].join("");
|
|
var c = [ boo(), "foo", 1, 2, 3, "bar", bar() ].join("");
|
|
var c1 = [ boo(), bar(), "foo", 1, 2, 3, "bar", bar() ].join("");
|
|
var c2 = [ 1, 2, "foo", "bar", baz() ].join("");
|
|
var d = [ "foo", 1 + 2 + "bar", "baz" ].join("-");
|
|
var e = [].join(foo + bar);
|
|
var f = [].join("");
|
|
var g = [].join("foo");
|
|
}
|
|
expect: {
|
|
var a = "foobarbaz";
|
|
var a1 = "foo,bar,baz";
|
|
var b = "foo123bar";
|
|
var c = boo() + "foo123bar" + bar();
|
|
var c1 = "" + boo() + bar() + "foo123bar" + bar();
|
|
var c2 = "12foobar" + baz();
|
|
var d = "foo-3bar-baz";
|
|
var e = [].join(foo + bar);
|
|
var f = "";
|
|
var g = "";
|
|
}
|
|
}
|
|
|
|
constant_join_2: {
|
|
options = {
|
|
unsafe : true,
|
|
evaluate : true
|
|
};
|
|
input: {
|
|
var a = [ "foo", "bar", boo(), "baz", "x", "y" ].join("");
|
|
var b = [ "foo", "bar", boo(), "baz", "x", "y" ].join("-");
|
|
var c = [ "foo", "bar", boo(), "baz", "x", "y" ].join("really-long-separator");
|
|
var d = [ "foo", "bar", boo(),
|
|
[ "foo", 1, 2, 3, "bar" ].join("+"),
|
|
"baz", "x", "y" ].join("-");
|
|
var e = [ "foo", "bar", boo(),
|
|
[ "foo", 1, 2, 3, "bar" ].join("+"),
|
|
"baz", "x", "y" ].join("really-long-separator");
|
|
var f = [ "str", "str" + variable, "foo", "bar", "moo" + foo ].join("");
|
|
}
|
|
expect: {
|
|
var a = "foobar" + boo() + "bazxy";
|
|
var b = [ "foo-bar", boo(), "baz-x-y" ].join("-");
|
|
var c = [ "foo", "bar", boo(), "baz", "x", "y" ].join("really-long-separator");
|
|
var d = [ "foo-bar", boo(), "foo+1+2+3+bar-baz-x-y" ].join("-");
|
|
var e = [ "foo", "bar", boo(),
|
|
"foo+1+2+3+bar",
|
|
"baz", "x", "y" ].join("really-long-separator");
|
|
var f = "strstr" + variable + "foobar" + ("moo" + foo);
|
|
}
|
|
}
|