Don't remove empty generators passed as parameter

This commit is contained in:
Anthony Van de Gejuchte
2016-07-19 18:03:08 +02:00
parent 842ac27efb
commit 766fafda8b
2 changed files with 27 additions and 0 deletions

View File

@@ -2282,6 +2282,7 @@ merge(Compressor.prototype, {
}
if (compressor.option("side_effects")) {
if (self.expression instanceof AST_Function
&& !self.expression.is_generator
&& self.args.length == 0
&& !AST_Block.prototype.has_side_effects.call(self.expression, compressor)) {
return make_node(AST_Undefined, self).transform(compressor);

View File

@@ -140,3 +140,29 @@ yield_as_identifier_outside_strict_mode: {
class yield {}
}
}
empty_generator_as_parameter_with_side_effects: {
options = {
side_effects: true
}
input: {
var GeneratorPrototype = Object.getPrototypeOf(
Object.getPrototypeOf(function*() {}())
);
evaluate(GeneratorPrototype);
}
expect_exact: "var GeneratorPrototype=Object.getPrototypeOf(Object.getPrototypeOf(function*(){}()));evaluate(GeneratorPrototype);"
}
empty_generator_as_parameter_without_side_effects: {
options = {
side_effects: false
}
input: {
var GeneratorPrototype = Object.getPrototypeOf(
Object.getPrototypeOf(function*() {}())
);
evaluate(GeneratorPrototype);
}
expect_exact: "var GeneratorPrototype=Object.getPrototypeOf(Object.getPrototypeOf(function*(){}()));evaluate(GeneratorPrototype);"
}