257 lines
5.7 KiB
JavaScript
257 lines
5.7 KiB
JavaScript
concat_1: {
|
|
options = {
|
|
evaluate: true,
|
|
}
|
|
input: {
|
|
var a = "foo" + "bar" + x() + "moo" + "foo" + y() + "x" + "y" + "z" + q();
|
|
var b = "foo" + 1 + x() + 2 + "boo";
|
|
var c = 1 + x() + 2 + "boo";
|
|
|
|
// this CAN'T safely be shortened to 1 + x() + "5boo"
|
|
var d = 1 + x() + 2 + 3 + "boo";
|
|
|
|
var e = 1 + x() + 2 + "X" + 3 + "boo";
|
|
|
|
// be careful with concatentation with "\0" with octal-looking strings.
|
|
var f = "\0" + 360 + "\0" + 8 + "\0";
|
|
}
|
|
expect: {
|
|
var a = "foobar" + x() + "moofoo" + y() + "xyz" + q();
|
|
var b = "foo1" + x() + "2boo";
|
|
var c = 1 + x() + 2 + "boo";
|
|
var d = 1 + x() + 2 + 3 + "boo";
|
|
var e = 1 + x() + 2 + "X3boo";
|
|
var f = "\x00360\x008\0";
|
|
}
|
|
}
|
|
|
|
concat_2: {
|
|
options = {
|
|
strings: true,
|
|
}
|
|
input: {
|
|
console.log(
|
|
1 + (2 + 3),
|
|
1 + (2 + "3"),
|
|
1 + ("2" + 3),
|
|
1 + ("2" + "3"),
|
|
"1" + (2 + 3),
|
|
"1" + (2 + "3"),
|
|
"1" + ("2" + 3),
|
|
"1" + ("2" + "3")
|
|
);
|
|
}
|
|
expect: {
|
|
console.log(
|
|
1 + (2 + 3),
|
|
1 + (2 + "3"),
|
|
1 + "2" + 3,
|
|
1 + "2" + "3",
|
|
"1" + (2 + 3),
|
|
"1" + 2 + "3",
|
|
"1" + "2" + 3,
|
|
"1" + "2" + "3"
|
|
);
|
|
}
|
|
expect_stdout: true
|
|
}
|
|
|
|
concat_3: {
|
|
options = {
|
|
strings: true,
|
|
}
|
|
input: {
|
|
console.log(
|
|
1 + 2 + (3 + 4 + 5),
|
|
1 + 2 + (3 + 4 + "5"),
|
|
1 + 2 + (3 + "4" + 5),
|
|
1 + 2 + (3 + "4" + "5"),
|
|
1 + 2 + ("3" + 4 + 5),
|
|
1 + 2 + ("3" + 4 + "5"),
|
|
1 + 2 + ("3" + "4" + 5),
|
|
1 + 2 + ("3" + "4" + "5")
|
|
);
|
|
}
|
|
expect: {
|
|
console.log(
|
|
1 + 2 + (3 + 4 + 5),
|
|
1 + 2 + (3 + 4 + "5"),
|
|
1 + 2 + (3 + "4") + 5,
|
|
1 + 2 + (3 + "4") + "5",
|
|
1 + 2 + "3" + 4 + 5,
|
|
1 + 2 + "3" + 4 + "5",
|
|
1 + 2 + "3" + "4" + 5,
|
|
1 + 2 + "3" + "4" + "5"
|
|
);
|
|
}
|
|
expect_stdout: true
|
|
}
|
|
|
|
concat_4: {
|
|
options = {
|
|
strings: true,
|
|
}
|
|
input: {
|
|
console.log(
|
|
1 + "2" + (3 + 4 + 5),
|
|
1 + "2" + (3 + 4 + "5"),
|
|
1 + "2" + (3 + "4" + 5),
|
|
1 + "2" + (3 + "4" + "5"),
|
|
1 + "2" + ("3" + 4 + 5),
|
|
1 + "2" + ("3" + 4 + "5"),
|
|
1 + "2" + ("3" + "4" + 5),
|
|
1 + "2" + ("3" + "4" + "5")
|
|
);
|
|
}
|
|
expect: {
|
|
console.log(
|
|
1 + "2" + (3 + 4 + 5),
|
|
1 + "2" + (3 + 4) + "5",
|
|
1 + "2" + 3 + "4" + 5,
|
|
1 + "2" + 3 + "4" + "5",
|
|
1 + "2" + "3" + 4 + 5,
|
|
1 + "2" + "3" + 4 + "5",
|
|
1 + "2" + "3" + "4" + 5,
|
|
1 + "2" + "3" + "4" + "5"
|
|
);
|
|
}
|
|
expect_stdout: true
|
|
}
|
|
|
|
concat_5: {
|
|
options = {
|
|
strings: true,
|
|
}
|
|
input: {
|
|
console.log(
|
|
"1" + 2 + (3 + 4 + 5),
|
|
"1" + 2 + (3 + 4 + "5"),
|
|
"1" + 2 + (3 + "4" + 5),
|
|
"1" + 2 + (3 + "4" + "5"),
|
|
"1" + 2 + ("3" + 4 + 5),
|
|
"1" + 2 + ("3" + 4 + "5"),
|
|
"1" + 2 + ("3" + "4" + 5),
|
|
"1" + 2 + ("3" + "4" + "5")
|
|
);
|
|
}
|
|
expect: {
|
|
console.log(
|
|
"1" + 2 + (3 + 4 + 5),
|
|
"1" + 2 + (3 + 4) + "5",
|
|
"1" + 2 + 3 + "4" + 5,
|
|
"1" + 2 + 3 + "4" + "5",
|
|
"1" + 2 + "3" + 4 + 5,
|
|
"1" + 2 + "3" + 4 + "5",
|
|
"1" + 2 + "3" + "4" + 5,
|
|
"1" + 2 + "3" + "4" + "5"
|
|
);
|
|
}
|
|
expect_stdout: true
|
|
}
|
|
|
|
concat_6: {
|
|
options = {
|
|
strings: true,
|
|
}
|
|
input: {
|
|
console.log(
|
|
"1" + "2" + (3 + 4 + 5),
|
|
"1" + "2" + (3 + 4 + "5"),
|
|
"1" + "2" + (3 + "4" + 5),
|
|
"1" + "2" + (3 + "4" + "5"),
|
|
"1" + "2" + ("3" + 4 + 5),
|
|
"1" + "2" + ("3" + 4 + "5"),
|
|
"1" + "2" + ("3" + "4" + 5),
|
|
"1" + "2" + ("3" + "4" + "5")
|
|
);
|
|
}
|
|
expect: {
|
|
console.log(
|
|
"1" + "2" + (3 + 4 + 5),
|
|
"1" + "2" + (3 + 4) + "5",
|
|
"1" + "2" + 3 + "4" + 5,
|
|
"1" + "2" + 3 + "4" + "5",
|
|
"1" + "2" + "3" + 4 + 5,
|
|
"1" + "2" + "3" + 4 + "5",
|
|
"1" + "2" + "3" + "4" + 5,
|
|
"1" + "2" + "3" + "4" + "5"
|
|
);
|
|
}
|
|
expect_stdout: true
|
|
}
|
|
|
|
concat_7: {
|
|
options = {
|
|
strings: true,
|
|
}
|
|
input: {
|
|
console.log(
|
|
"" + 1,
|
|
"" + "1",
|
|
"" + 1 + 2,
|
|
"" + 1 + "2",
|
|
"" + "1" + 2,
|
|
"" + "1" + "2",
|
|
"" + (x += "foo")
|
|
);
|
|
}
|
|
expect: {
|
|
console.log(
|
|
"" + 1,
|
|
"1",
|
|
"" + 1 + 2,
|
|
1 + "2",
|
|
"1" + 2,
|
|
"1" + "2",
|
|
x += "foo"
|
|
);
|
|
}
|
|
expect_stdout: true
|
|
}
|
|
|
|
concat_8: {
|
|
options = {
|
|
strings: true,
|
|
}
|
|
input: {
|
|
console.log(
|
|
1 + "",
|
|
"1" + "",
|
|
1 + 2 + "",
|
|
1 + "2" + "",
|
|
"1" + 2 + "",
|
|
"1" + "2" + "",
|
|
(x += "foo") + ""
|
|
);
|
|
}
|
|
expect: {
|
|
console.log(
|
|
1 + "",
|
|
"1",
|
|
1 + 2 + "",
|
|
1 + "2",
|
|
"1" + 2,
|
|
"1" + "2",
|
|
x += "foo"
|
|
);
|
|
}
|
|
expect_stdout: true
|
|
}
|
|
|
|
issue_3689: {
|
|
options = {
|
|
strings: true,
|
|
}
|
|
input: {
|
|
console.log(function(a) {
|
|
return a + ("" + (a[0] = 0));
|
|
}([]));
|
|
}
|
|
expect: {
|
|
console.log(function(a) {
|
|
return a + ("" + (a[0] = 0));
|
|
}([]));
|
|
}
|
|
expect_stdout: "00"
|
|
}
|