improve inline of /*@__PURE__*/ calls (#3865)

This commit is contained in:
Alex Lam S.L
2020-05-10 00:16:09 +01:00
committed by GitHub
parent 97728c4f0b
commit abb8ae02a5
2 changed files with 77 additions and 1 deletions

View File

@@ -745,7 +745,7 @@ function must_be_expressions(node, prop) {
}); });
} }
var AST_Call = DEFNODE("Call", "expression args", { var AST_Call = DEFNODE("Call", "expression args pure", {
$documentation: "A function call expression", $documentation: "A function call expression",
$propdoc: { $propdoc: {
expression: "[AST_Node] expression to invoke as function", expression: "[AST_Node] expression to invoke as function",

View File

@@ -706,3 +706,79 @@ issue_3858: {
} }
expect_stdout: "PASS" expect_stdout: "PASS"
} }
inline_pure_call_1: {
options = {
collapse_vars: true,
inline: true,
keep_fargs: "strict",
reduce_vars: true,
sequences: true,
side_effects: true,
toplevel: true,
unused: true,
}
input: {
var f = function(a) {
return /*@__PURE__*/ function(b) {
console.log(b);
}(a);
};
f("PASS");
}
expect: {}
}
inline_pure_call_2: {
options = {
collapse_vars: true,
inline: true,
keep_fargs: "strict",
reduce_vars: true,
sequences: true,
side_effects: true,
toplevel: true,
unused: true,
}
input: {
var f = function(a) {
return /*@__PURE__*/ function(b) {
console.log(b);
}(a);
};
var a = f("PASS");
}
expect: {}
}
inline_pure_call_3: {
options = {
collapse_vars: true,
evaluate: true,
inline: true,
keep_fargs: "strict",
passes: 2,
reduce_vars: true,
toplevel: true,
unused: true,
}
input: {
var f = function(a) {
return /*@__PURE__*/ function(b) {
console.log(b);
}(a);
};
var a = f("PASS");
console.log(a);
}
expect: {
var a = function() {
console.log("PASS");
}();
console.log(a);
}
expect_stdout: [
"PASS",
"undefined",
]
}