From: Alex Lam S.L Date: Wed, 24 Apr 2019 06:01:01 +0000 (+0800) Subject: fix corner case in `reduce_vars` (#3378) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=dafed54764c7d85a6aa337ee6fdc54d9f9312b55;p=UglifyJS.git fix corner case in `reduce_vars` (#3378) fixes #3377 --- diff --git a/lib/compress.js b/lib/compress.js index 3fb835f5..9430c15d 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -744,7 +744,7 @@ merge(Compressor.prototype, { d.fixed = false; } else if (d.fixed) { value = this.fixed_value(); - if (value instanceof AST_Lambda && recursive_ref(tw, d)) { + if (recursive_ref(tw, d)) { d.recursive_refs++; } else if (value && ref_once(tw, compressor, d)) { d.single_use = value instanceof AST_Lambda && !value.pinned() @@ -2603,9 +2603,9 @@ merge(Compressor.prototype, { } function convert_to_predicate(obj) { - for (var key in obj) { + Object.keys(obj).forEach(function(key) { obj[key] = makePredicate(obj[key]); - } + }); } var object_fns = [ diff --git a/test/compress/reduce_vars.js b/test/compress/reduce_vars.js index 169ae5a5..7ad8ab94 100644 --- a/test/compress/reduce_vars.js +++ b/test/compress/reduce_vars.js @@ -6737,3 +6737,21 @@ drop_side_effect_free: { } expect_stdout: "123" } + +issue_3377: { + options = { + reduce_vars: true, + unused: true, + } + input: { + console.log(function f() { + return f[0], (f = 42); + }()); + } + expect: { + console.log(function f() { + return f[0], (f = 42); + }()); + } + expect_stdout: "42" +}