enhance arrows (#4403)
This commit is contained in:
@@ -4670,22 +4670,19 @@ merge(Compressor.prototype, {
|
||||
|
||||
OPT(AST_Arrow, function(self, compressor) {
|
||||
if (!compressor.option("arrows")) return self;
|
||||
if (self.value) {
|
||||
var value = self.value;
|
||||
if (is_undefined(value, compressor)) {
|
||||
self.value = null;
|
||||
} else if (value instanceof AST_UnaryPrefix && value.operator == "void") {
|
||||
self.body.push(make_node(AST_SimpleStatement, value, {
|
||||
body: value.expression
|
||||
}));
|
||||
self.value = null;
|
||||
}
|
||||
} else if (self.body.length == 1) {
|
||||
var stat = self.body[0];
|
||||
if (stat instanceof AST_Return && stat.value) {
|
||||
self.body.pop();
|
||||
var body = tighten_body(self.value ? [ self.first_statement() ] : self.body, compressor);
|
||||
switch (body.length) {
|
||||
case 1:
|
||||
var stat = body[0];
|
||||
if (stat instanceof AST_Return) {
|
||||
self.body.length = 0;
|
||||
self.value = stat.value;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
self.body = body;
|
||||
self.value = null;
|
||||
break;
|
||||
}
|
||||
return self;
|
||||
});
|
||||
|
||||
@@ -320,6 +320,8 @@ inline_this: {
|
||||
trim_body: {
|
||||
options = {
|
||||
arrows: true,
|
||||
if_return: true,
|
||||
side_effects: true,
|
||||
}
|
||||
input: {
|
||||
var f = a => {
|
||||
@@ -337,6 +339,25 @@ trim_body: {
|
||||
node_version: ">=4"
|
||||
}
|
||||
|
||||
collapse_value: {
|
||||
options = {
|
||||
arrows: true,
|
||||
collapse_vars: true,
|
||||
keep_fargs: "strict",
|
||||
unused: true,
|
||||
}
|
||||
input: {
|
||||
var a = 42;
|
||||
console.log((b => Math.floor(b))(a));
|
||||
}
|
||||
expect: {
|
||||
var a = 42;
|
||||
console.log((() => Math.floor(a))());
|
||||
}
|
||||
expect_stdout: "42"
|
||||
node_version: ">=4"
|
||||
}
|
||||
|
||||
reduce_iife_1: {
|
||||
options = {
|
||||
evaluate: true,
|
||||
|
||||
Reference in New Issue
Block a user