added option for side-effect-free statements, fix test

This commit is contained in:
Mihai Bazon
2012-10-03 13:08:03 +03:00
parent e0f5075e45
commit c11de17e99
2 changed files with 24 additions and 4 deletions

View File

@@ -64,6 +64,7 @@ function Compressor(options, false_by_default) {
if_return : !false_by_default,
join_vars : !false_by_default,
cascade : !false_by_default,
side_effects : !false_by_default,
warnings : true,
global_defs : {}
@@ -998,9 +999,11 @@ merge(Compressor.prototype, {
});
OPT(AST_SimpleStatement, function(self, compressor){
if (!self.body.has_side_effects()) {
compressor.warn("Dropping side-effect-free statement [{file}:{line},{col}]", self.start);
return make_node(AST_EmptyStatement, self);
if (compressor.option("side_effects")) {
if (!self.body.has_side_effects()) {
compressor.warn("Dropping side-effect-free statement [{file}:{line},{col}]", self.start);
return make_node(AST_EmptyStatement, self);
}
}
return self;
});
@@ -1153,7 +1156,7 @@ merge(Compressor.prototype, {
operator: "&&",
left: self.condition,
right: self.body.condition
});
}).transform(compressor);
self.body = self.body.body;
}
if (aborts(self.body)) {

View File

@@ -124,3 +124,20 @@ ifs_5: {
}
}
}
ifs_6: {
options = {
conditionals: true,
comparisons: true
};
input: {
if (!foo && !bar && !baz && !boo) {
x = 10;
} else {
x = 20;
}
}
expect: {
x = foo || bar || baz || boo ? 20 : 10;
}
}