From 63be1f3a4d5d10ba923dd40ffd55f4e5b7d41372 Mon Sep 17 00:00:00 2001 From: Richard van Velzen Date: Sun, 15 May 2016 21:00:51 +0200 Subject: [PATCH] Only allow `var` definitions to be moved into the for-init clause Fixes #1079 --- lib/compress.js | 2 +- test/compress/join-vars.js | 40 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 test/compress/join-vars.js diff --git a/lib/compress.js b/lib/compress.js index 51122751..6fbe2c8b 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -802,7 +802,7 @@ merge(Compressor.prototype, { CHANGED = true; } else if (stat instanceof AST_For - && prev instanceof AST_Definitions + && prev instanceof AST_Var && (!stat.init || stat.init.TYPE == prev.TYPE)) { CHANGED = true; a.pop(); diff --git a/test/compress/join-vars.js b/test/compress/join-vars.js new file mode 100644 index 00000000..ea6077b6 --- /dev/null +++ b/test/compress/join-vars.js @@ -0,0 +1,40 @@ +only_vars: { + options = { join_vars: true }; + input: { + let netmaskBinary = ''; + for (let i = 0; i < netmaskBits; ++i) { + netmaskBinary += '1'; + } + } + expect: { + let netmaskBinary = ''; + for (let i = 0; i < netmaskBits; ++i) netmaskBinary += '1'; + } +} + +issue_1079_with_vars: { + options = { join_vars: true }; + input: { + var netmaskBinary = ''; + for (var i = 0; i < netmaskBits; ++i) { + netmaskBinary += '1'; + } + } + expect: { + for (var netmaskBinary = '', i = 0; i < netmaskBits; ++i) netmaskBinary += '1'; + } +} + +issue_1079_with_mixed: { + options = { join_vars: true }; + input: { + var netmaskBinary = ''; + for (let i = 0; i < netmaskBits; ++i) { + netmaskBinary += '1'; + } + } + expect: { + var netmaskBinary = '' + for (let i = 0; i < netmaskBits; ++i) netmaskBinary += '1'; + } +} \ No newline at end of file