if (compressor.option("inline")
&& !fn.uses_arguments
&& !fn.uses_eval
+ && !(fn.name && fn instanceof AST_Function)
&& (value = can_flatten_body(stat))
- && (exp === fn ? !fn.name
- : compressor.option("unused")
+ && (exp === fn
+ || compressor.option("unused")
&& (def = exp.definition()).references.length == 1
&& !recursive_ref(compressor, def)
&& fn.is_constant_expression(exp.scope))
}
expect_stdout: "PASS"
}
+
+issue_2737_1: {
+ options = {
+ inline: true,
+ reduce_vars: true,
+ unused: true,
+ }
+ input: {
+ (function(a) {
+ while (a());
+ })(function f() {
+ console.log(typeof f);
+ });
+ }
+ expect: {
+ (function(a) {
+ while (a());
+ })(function f() {
+ console.log(typeof f);
+ });
+ }
+ expect_stdout: "function"
+}
+
+issue_2737_2: {
+ options = {
+ inline: true,
+ reduce_vars: true,
+ unused: true,
+ }
+ input: {
+ (function(bar) {
+ for (;bar(); ) break;
+ })(function qux() {
+ return console.log("PASS"), qux;
+ });
+ }
+ expect: {
+ (function(bar) {
+ for (;bar(); ) break;
+ })(function qux() {
+ return console.log("PASS"), qux;
+ });
+ }
+ expect_stdout: "PASS"
+}