diff --git a/lib/compress.js b/lib/compress.js index 245c3737b2f..eb932c7708d 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -14076,6 +14076,7 @@ Compressor.prototype.compress = function(node) { var sym = def.orig[0]; if (sym instanceof AST_SymbolCatch) return; body.push(make_node(AST_SimpleStatement, sym, { body: init_ref(compressor, flatten_var(sym)) })); + def.first_decl = null; }); var defs = Object.create(null), syms = new Dictionary(); if (simple_argnames && all(call.args, function(arg) { diff --git a/test/compress/let.js b/test/compress/let.js index 7a60e19592a..ba6c4bc74ae 100644 --- a/test/compress/let.js +++ b/test/compress/let.js @@ -2493,3 +2493,47 @@ issue_5756_3: { expect_stdout: "PASS" node_version: ">=4" } + +issue_5759: { + options = { + collapse_vars: true, + inline: true, + join_vars: true, + reduce_vars: true, + unused: true, + } + input: { + "use strict"; + function f() { + for (var a in [ true ]) { + let b; + (function() { + var c = void 0; + b; + console.log(c); + var d = null; + console.log(c); + })(); + } + } + f(); + } + expect: { + "use strict"; + function f() { + for (var a in [ true ]) { + let b; + var c = c = void 0; + b; + console.log(c); + console.log(c); + } + } + f(); + } + expect_stdout: [ + "undefined", + "undefined", + ] + node_version: ">=4" +}