From 2ed3f8db4482025446999461aab5a6ea36c9896a Mon Sep 17 00:00:00 2001 From: kzc Date: Wed, 2 Aug 2017 12:40:19 -0400 Subject: [PATCH] fix output of spread of a sequence (#2268) fixes #2267 --- lib/output.js | 1 + test/compress/harmony.js | 47 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/lib/output.js b/lib/output.js index ccd614d3..9198719d 100644 --- a/lib/output.js +++ b/lib/output.js @@ -689,6 +689,7 @@ function OutputStream(options) { * ==> 20 (side effect, set a := 10 and b := 20) */ || p instanceof AST_Arrow // x => (x, x) || p instanceof AST_DefaultAssign // x => (x = (0, function(){})) + || p instanceof AST_Expansion // [...(a, b)] ; }); diff --git a/test/compress/harmony.js b/test/compress/harmony.js index 2f095383..2e8fe38b 100644 --- a/test/compress/harmony.js +++ b/test/compress/harmony.js @@ -757,3 +757,50 @@ object_spread_unsafe: { console.log(l, x); } } + +array_spread_of_sequence: { + mangle = { + toplevel: true, + } + input: { + var a = [1]; + console.log([...(a, a)]); + console.log([...a, a]); + console.log([...(a || a)]); + console.log([...a || a]); + } + expect: { + var o = [1]; + console.log([...(o, o)]); + console.log([...o, o]); + console.log([...o || o]); + console.log([...o || o]); + } + expect_stdout: [ + "[ 1 ]", + "[ 1, [ 1 ] ]", + "[ 1 ]", + "[ 1 ]", + ] + node_version: ">=6" +} + +object_spread_of_sequence: { + mangle = { + toplevel: true, + } + input: { + var a = {x: 1}; + console.log({ ...(a, a) }); + console.log({ ...a, a }); + console.log({ ...(a || a) }); + console.log({ ...a || a }); + } + expect: { + var o = { x: 1 }; + console.log({ ...(o, o) }); + console.log({ ...o, a: o }); + console.log({ ...o || o }); + console.log({ ...o || o }); + } +}