fix corner case in conditionals (#5676)

This commit is contained in:
Alex Lam S.L
2022-09-23 04:09:55 +01:00
committed by GitHub
parent 37d3e4feaa
commit 9ac3879b06
3 changed files with 74 additions and 10 deletions

View File

@@ -278,6 +278,36 @@ merge_tail_2: {
]
}
merge_tail_3: {
options = {
conditionals: true,
reduce_vars: true,
unused: true,
}
input: {
(function(a, b) {
if (b = a.shift())
console.log(b);
else {
if (b = a.shift())
while (console.log("foo"));
console.log(b);
}
})([ false, "bar" ]);
}
expect: {
(function(a, b) {
if (!(b = a.shift()) && (b = a.shift()))
while (console.log("foo"));
console.log(b);
})([ false, "bar" ]);
}
expect_stdout: [
"foo",
"bar",
]
}
merge_tail_sequence_1: {
options = {
conditionals: true,
@@ -368,6 +398,39 @@ merge_tail_sequence_2: {
]
}
merge_tail_sequence_3: {
options = {
conditionals: true,
reduce_vars: true,
unused: true,
}
input: {
(function(a, b) {
if (b = a.shift())
console.log("foo"),
console.log(b);
else {
if (b = a.shift())
while (console.log("bar"));
console.log(b);
}
})([ false, "baz" ]);
}
expect: {
(function(a, b) {
if (b = a.shift())
console.log("foo");
else if (b = a.shift())
while (console.log("bar"));
console.log(b);
})([ false, "baz" ]);
}
expect_stdout: [
"bar",
"baz",
]
}
cond_1: {
options = {
conditionals: true,