@@ -13523,7 +13523,9 @@ Compressor.prototype.compress = function(node) {
|
|||||||
return make_node(AST_If, self, {
|
return make_node(AST_If, self, {
|
||||||
condition: make_condition(self.left),
|
condition: make_condition(self.left),
|
||||||
body: inlined,
|
body: inlined,
|
||||||
alternative: no_return ? null : make_node(AST_Return, self, { value: null }),
|
alternative: no_return ? null : make_node(AST_Return, self, {
|
||||||
|
value: make_node(AST_Undefined, self).transform(compressor),
|
||||||
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
function make_condition(cond) {
|
function make_condition(cond) {
|
||||||
@@ -13723,7 +13725,9 @@ Compressor.prototype.compress = function(node) {
|
|||||||
if (is_undefined(value)) return;
|
if (is_undefined(value)) return;
|
||||||
node.value = make_node(AST_Await, call, { expression: value });
|
node.value = make_node(AST_Await, call, { expression: value });
|
||||||
});
|
});
|
||||||
body.push(make_node(AST_Return, call, { value: null }));
|
body.push(make_node(AST_Return, call, {
|
||||||
|
value: make_node(AST_Undefined, call).transform(compressor),
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
return inlined;
|
return inlined;
|
||||||
|
|
||||||
|
|||||||
@@ -1024,6 +1024,7 @@ issue_5414_1: {
|
|||||||
arrows: true,
|
arrows: true,
|
||||||
if_return: true,
|
if_return: true,
|
||||||
inline: true,
|
inline: true,
|
||||||
|
side_effects: true,
|
||||||
toplevel: true,
|
toplevel: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
|
|||||||
@@ -415,6 +415,7 @@ inline_block: {
|
|||||||
awaits: true,
|
awaits: true,
|
||||||
if_return: true,
|
if_return: true,
|
||||||
inline: true,
|
inline: true,
|
||||||
|
side_effects: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
console.log("foo");
|
console.log("foo");
|
||||||
@@ -450,6 +451,7 @@ inline_block_async: {
|
|||||||
awaits: true,
|
awaits: true,
|
||||||
if_return: true,
|
if_return: true,
|
||||||
inline: true,
|
inline: true,
|
||||||
|
side_effects: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
console.log("foo");
|
console.log("foo");
|
||||||
|
|||||||
@@ -1815,6 +1815,7 @@ issue_4725_2: {
|
|||||||
options = {
|
options = {
|
||||||
if_return: true,
|
if_return: true,
|
||||||
inline: true,
|
inline: true,
|
||||||
|
side_effects: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|||||||
@@ -9611,6 +9611,7 @@ inline_throw: {
|
|||||||
collapse_vars: true,
|
collapse_vars: true,
|
||||||
inline: true,
|
inline: true,
|
||||||
keep_fargs: false,
|
keep_fargs: false,
|
||||||
|
side_effects: true,
|
||||||
unused: true,
|
unused: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
@@ -9630,7 +9631,6 @@ inline_throw: {
|
|||||||
try {
|
try {
|
||||||
(function(a) {
|
(function(a) {
|
||||||
throw a;
|
throw a;
|
||||||
return;
|
|
||||||
})("PASS");
|
})("PASS");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
|
|||||||
@@ -1287,6 +1287,7 @@ issue_4261_2: {
|
|||||||
inline: true,
|
inline: true,
|
||||||
reduce_funcs: true,
|
reduce_funcs: true,
|
||||||
reduce_vars: true,
|
reduce_vars: true,
|
||||||
|
side_effects: true,
|
||||||
toplevel: true,
|
toplevel: true,
|
||||||
unused: true,
|
unused: true,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1930,6 +1930,7 @@ issue_5057_4: {
|
|||||||
var b = "FAIL 2";
|
var b = "FAIL 2";
|
||||||
(function(a = console.log("FAIL 1")) {})(b);
|
(function(a = console.log("FAIL 1")) {})(b);
|
||||||
console.log(a);
|
console.log(a);
|
||||||
|
0;
|
||||||
})("PASS");
|
})("PASS");
|
||||||
}
|
}
|
||||||
expect_stdout: "PASS"
|
expect_stdout: "PASS"
|
||||||
|
|||||||
@@ -607,6 +607,7 @@ empty_body: {
|
|||||||
inline_binary_and: {
|
inline_binary_and: {
|
||||||
options = {
|
options = {
|
||||||
inline: true,
|
inline: true,
|
||||||
|
side_effects: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
console.log(function() {
|
console.log(function() {
|
||||||
@@ -626,7 +627,6 @@ inline_binary_and: {
|
|||||||
return "bar";
|
return "bar";
|
||||||
}()) {
|
}()) {
|
||||||
while (console.log("baz"));
|
while (console.log("baz"));
|
||||||
return void "moo";
|
|
||||||
return;
|
return;
|
||||||
} else
|
} else
|
||||||
return;
|
return;
|
||||||
@@ -1121,6 +1121,7 @@ inline_return_binary: {
|
|||||||
inline_return_conditional: {
|
inline_return_conditional: {
|
||||||
options = {
|
options = {
|
||||||
inline: true,
|
inline: true,
|
||||||
|
side_effects: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
console.log(function() {
|
console.log(function() {
|
||||||
@@ -2295,6 +2296,7 @@ duplicate_argnames_4: {
|
|||||||
options = {
|
options = {
|
||||||
if_return: true,
|
if_return: true,
|
||||||
inline: true,
|
inline: true,
|
||||||
|
side_effects: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
(function() {
|
(function() {
|
||||||
@@ -5545,6 +5547,7 @@ issue_3833_2: {
|
|||||||
inline: true,
|
inline: true,
|
||||||
keep_fargs: false,
|
keep_fargs: false,
|
||||||
reduce_vars: true,
|
reduce_vars: true,
|
||||||
|
side_effects: true,
|
||||||
toplevel: true,
|
toplevel: true,
|
||||||
unused: true,
|
unused: true,
|
||||||
}
|
}
|
||||||
@@ -5582,7 +5585,7 @@ issue_3835: {
|
|||||||
return f();
|
return f();
|
||||||
})();
|
})();
|
||||||
}
|
}
|
||||||
expect_stdout: true
|
expect_stdout: RangeError("Maximum call stack size exceeded")
|
||||||
}
|
}
|
||||||
|
|
||||||
issue_3836_1: {
|
issue_3836_1: {
|
||||||
@@ -5610,6 +5613,7 @@ issue_3836_2: {
|
|||||||
options = {
|
options = {
|
||||||
if_return: true,
|
if_return: true,
|
||||||
inline: true,
|
inline: true,
|
||||||
|
side_effects: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
(function() {
|
(function() {
|
||||||
@@ -5867,6 +5871,7 @@ statement_var_inline: {
|
|||||||
options = {
|
options = {
|
||||||
inline: true,
|
inline: true,
|
||||||
join_vars: true,
|
join_vars: true,
|
||||||
|
side_effects: true,
|
||||||
unused: true,
|
unused: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
@@ -6157,6 +6162,7 @@ issue_4261: {
|
|||||||
inline: true,
|
inline: true,
|
||||||
reduce_funcs: true,
|
reduce_funcs: true,
|
||||||
reduce_vars: true,
|
reduce_vars: true,
|
||||||
|
side_effects: true,
|
||||||
toplevel: true,
|
toplevel: true,
|
||||||
unused: true,
|
unused: true,
|
||||||
}
|
}
|
||||||
@@ -6449,6 +6455,7 @@ issue_4659_1: {
|
|||||||
if_return: true,
|
if_return: true,
|
||||||
inline: true,
|
inline: true,
|
||||||
reduce_vars: true,
|
reduce_vars: true,
|
||||||
|
side_effects: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
var a = 0;
|
var a = 0;
|
||||||
@@ -6486,6 +6493,7 @@ issue_4659_2: {
|
|||||||
if_return: true,
|
if_return: true,
|
||||||
inline: true,
|
inline: true,
|
||||||
reduce_vars: true,
|
reduce_vars: true,
|
||||||
|
side_effects: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
var a = 0;
|
var a = 0;
|
||||||
@@ -6510,7 +6518,7 @@ issue_4659_2: {
|
|||||||
function f() {
|
function f() {
|
||||||
return a++;
|
return a++;
|
||||||
}
|
}
|
||||||
void (f && a++);
|
f && a++;
|
||||||
(function() {
|
(function() {
|
||||||
var a = console && a;
|
var a = console && a;
|
||||||
})();
|
})();
|
||||||
@@ -6525,6 +6533,7 @@ issue_4659_3: {
|
|||||||
if_return: true,
|
if_return: true,
|
||||||
inline: true,
|
inline: true,
|
||||||
reduce_vars: true,
|
reduce_vars: true,
|
||||||
|
side_effects: true,
|
||||||
unused: true,
|
unused: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
@@ -6731,6 +6740,7 @@ issue_4725_2: {
|
|||||||
options = {
|
options = {
|
||||||
if_return: true,
|
if_return: true,
|
||||||
inline: true,
|
inline: true,
|
||||||
|
side_effects: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
var o = {
|
var o = {
|
||||||
@@ -7715,6 +7725,7 @@ issue_5239: {
|
|||||||
functions: true,
|
functions: true,
|
||||||
inline: true,
|
inline: true,
|
||||||
reduce_vars: true,
|
reduce_vars: true,
|
||||||
|
side_effects: true,
|
||||||
unused: true,
|
unused: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
@@ -7730,7 +7741,6 @@ issue_5239: {
|
|||||||
var f = void 0;
|
var f = void 0;
|
||||||
var a = 42, f = function() {};
|
var a = 42, f = function() {};
|
||||||
while (console.log(f.p || a++));
|
while (console.log(f.p || a++));
|
||||||
return;
|
|
||||||
})();
|
})();
|
||||||
}
|
}
|
||||||
expect_stdout: "42"
|
expect_stdout: "42"
|
||||||
@@ -7833,9 +7843,9 @@ issue_5249_1: {
|
|||||||
var a = "FAIL 1";
|
var a = "FAIL 1";
|
||||||
else if (a) {
|
else if (a) {
|
||||||
while (console.log("FAIL 2"));
|
while (console.log("FAIL 2"));
|
||||||
return;
|
return void 0;
|
||||||
} else
|
} else
|
||||||
return;
|
return void 0;
|
||||||
throw "FAIL 3";
|
throw "FAIL 3";
|
||||||
}());
|
}());
|
||||||
}
|
}
|
||||||
@@ -7996,6 +8006,7 @@ issue_5264_1: {
|
|||||||
(function(arguments) {
|
(function(arguments) {
|
||||||
console.log(arguments);
|
console.log(arguments);
|
||||||
while (console.log("foo"));
|
while (console.log("foo"));
|
||||||
|
0;
|
||||||
})("bar");
|
})("bar");
|
||||||
return arguments;
|
return arguments;
|
||||||
}("baz")[0]);
|
}("baz")[0]);
|
||||||
@@ -8114,6 +8125,7 @@ issue_5290: {
|
|||||||
issue_5296: {
|
issue_5296: {
|
||||||
options = {
|
options = {
|
||||||
inline: true,
|
inline: true,
|
||||||
|
side_effects: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
var a = "PASS";
|
var a = "PASS";
|
||||||
@@ -8376,6 +8388,7 @@ issue_5409: {
|
|||||||
inline: true,
|
inline: true,
|
||||||
merge_vars: true,
|
merge_vars: true,
|
||||||
reduce_vars: true,
|
reduce_vars: true,
|
||||||
|
side_effects: true,
|
||||||
unused: true,
|
unused: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
@@ -8393,7 +8406,6 @@ issue_5409: {
|
|||||||
a = void 0;
|
a = void 0;
|
||||||
console.log(a && a);
|
console.log(a && a);
|
||||||
while (!console);
|
while (!console);
|
||||||
return;
|
|
||||||
})();
|
})();
|
||||||
}
|
}
|
||||||
expect_stdout: "undefined"
|
expect_stdout: "undefined"
|
||||||
|
|||||||
@@ -308,6 +308,7 @@ issue_4679: {
|
|||||||
issue_5266: {
|
issue_5266: {
|
||||||
options = {
|
options = {
|
||||||
inline: true,
|
inline: true,
|
||||||
|
side_effects: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
[
|
[
|
||||||
|
|||||||
@@ -188,6 +188,7 @@ do_inline_3: {
|
|||||||
options = {
|
options = {
|
||||||
if_return: true,
|
if_return: true,
|
||||||
inline: true,
|
inline: true,
|
||||||
|
side_effects: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
(function() {
|
(function() {
|
||||||
|
|||||||
@@ -836,8 +836,10 @@ inline_nested_async: {
|
|||||||
|
|
||||||
inline_nested_block: {
|
inline_nested_block: {
|
||||||
options = {
|
options = {
|
||||||
|
dead_code: true,
|
||||||
if_return: true,
|
if_return: true,
|
||||||
inline: true,
|
inline: true,
|
||||||
|
side_effects: true,
|
||||||
yields: true,
|
yields: true,
|
||||||
}
|
}
|
||||||
input: {
|
input: {
|
||||||
@@ -857,7 +859,6 @@ inline_nested_block: {
|
|||||||
var a = function*() {
|
var a = function*() {
|
||||||
for (var a of [ "foo", "bar" ])
|
for (var a of [ "foo", "bar" ])
|
||||||
yield a;
|
yield a;
|
||||||
"FAIL";
|
|
||||||
}(), b;
|
}(), b;
|
||||||
do {
|
do {
|
||||||
b = a.next();
|
b = a.next();
|
||||||
@@ -1562,3 +1563,39 @@ issue_5506: {
|
|||||||
expect_stdout: "PASS"
|
expect_stdout: "PASS"
|
||||||
node_version: ">=4"
|
node_version: ">=4"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_5526: {
|
||||||
|
options = {
|
||||||
|
inline: true,
|
||||||
|
side_effects: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
(async function*() {
|
||||||
|
try {
|
||||||
|
return function() {
|
||||||
|
while (console.log("foo"));
|
||||||
|
}();
|
||||||
|
} finally {
|
||||||
|
console.log("bar");
|
||||||
|
}
|
||||||
|
})().next();
|
||||||
|
console.log("baz");
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
(async function*() {
|
||||||
|
try {
|
||||||
|
while (console.log("foo"));
|
||||||
|
return void 0;
|
||||||
|
} finally {
|
||||||
|
console.log("bar");
|
||||||
|
}
|
||||||
|
})().next();
|
||||||
|
console.log("baz");
|
||||||
|
}
|
||||||
|
expect_stdout: [
|
||||||
|
"foo",
|
||||||
|
"baz",
|
||||||
|
"bar",
|
||||||
|
]
|
||||||
|
node_version: ">=10"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user