if (expr.name instanceof AST_SymbolFunarg) {
var index = compressor.self().argnames.indexOf(expr.name);
var args = compressor.parent().args;
- if (args[index]) args[index] = make_node(AST_Number, args[index], {
- value: 0
- });
+ if (args[index]) {
+ args[index] = make_node(AST_Number, args[index], {
+ value: 0
+ });
+ expr.name.definition().fixed = false;
+ }
return true;
}
var end = hit_stack.length - 1;
}
expect_stdout: "PASS"
}
+
+issue_4047_1: {
+ options = {
+ collapse_vars: true,
+ evaluate: true,
+ inline: true,
+ reduce_vars: true,
+ sequences: true,
+ toplevel: true,
+ unused: true,
+ }
+ input: {
+ var b = 1;
+ console.log(+function(a) {
+ b = a;
+ (a >>= 0) && console.log("PASS");
+ }(--b + (0 !== typeof A)));
+ }
+ expect: {
+ var b = 1;
+ var a;
+ console.log((a = --b + ((a = 0) !== typeof A), +void ((a >>= 0) && console.log("PASS"))));
+ }
+ expect_stdout: [
+ "PASS",
+ "NaN",
+ ]
+}
+
+issue_4047_2: {
+ options = {
+ collapse_vars: true,
+ evaluate: true,
+ inline: true,
+ passes: 2,
+ reduce_vars: true,
+ sequences: true,
+ toplevel: true,
+ unused: true,
+ }
+ input: {
+ var b = 1;
+ console.log(+function(a) {
+ b = a;
+ (a >>= 0) && console.log("PASS");
+ }(--b + (0 !== typeof A)));
+ }
+ expect: {
+ var a;
+ console.log((a = +(0 !== typeof A), +void ((a >>= 0) && console.log("PASS"))));
+ }
+ expect_stdout: [
+ "PASS",
+ "NaN",
+ ]
+}