fix corner case in inline (#5068)

fixes #5067
This commit is contained in:
Alex Lam S.L
2021-07-10 21:11:10 +01:00
committed by GitHub
parent aae1fcd12d
commit d147d5d7f0
2 changed files with 17 additions and 2 deletions

View File

@@ -2207,7 +2207,7 @@ merge(Compressor.prototype, {
fn = fn.fixed_value();
}
if (!(fn instanceof AST_Lambda)) return !node.is_expr_pure(compressor);
if (def && recursive_ref(compressor, def)) return true;
if (def && recursive_ref(compressor, def, fn)) return true;
if (fn.collapse_scanning) return false;
fn.collapse_scanning = true;
var replace = can_replace;
@@ -9481,7 +9481,7 @@ merge(Compressor.prototype, {
&& !fn.uses_arguments
&& !fn.pinned()
&& !(fn.name && fn instanceof AST_LambdaExpression)
&& (exp === fn || !recursive_ref(compressor, def = exp.definition())
&& (exp === fn || !recursive_ref(compressor, def = exp.definition(), fn)
&& fn.is_constant_expression(find_scope(compressor)))
&& !has_spread
&& (value = can_flatten_body(stat))

View File

@@ -6398,3 +6398,18 @@ issue_5061_2: {
"bar",
]
}
issue_5067: {
options = {
inline: true,
reduce_vars: true,
toplevel: true,
unused: true,
}
input: {
var f = function() {
f();
};
}
expect: {}
}