From fc98d212db69dde8ce15e2511984924ebf4b1e55 Mon Sep 17 00:00:00 2001 From: alexlamsl Date: Sun, 21 Jan 2018 15:58:14 +0800 Subject: [PATCH] allow duplicate property names in object literals for ES6+ --- lib/compress.js | 2 +- test/compress/properties.js | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/lib/compress.js b/lib/compress.js index 2fd8c4fb..2db9e03a 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -1865,7 +1865,7 @@ merge(Compressor.prototype, { } if (prop instanceof AST_Node) break; prop = "" + prop; - if (compressor.has_directive("use strict")) { + if (compressor.option("ecma") < 6 && compressor.has_directive("use strict")) { if (!all(def.value.properties, function(node) { return node.key != prop && node.key.name != prop; })) break; diff --git a/test/compress/properties.js b/test/compress/properties.js index bb94d4d2..515d3125 100644 --- a/test/compress/properties.js +++ b/test/compress/properties.js @@ -1865,3 +1865,32 @@ issue_2816: { } expect_stdout: "3 2 4" } + +issue_2816_ecma6: { + options = { + ecma: "6", + join_vars: true, + } + input: { + "use strict"; + var o = { + a: 1 + }; + o.b = 2; + o.a = 3; + o.c = 4; + console.log(o.a, o.b, o.c); + } + expect: { + "use strict"; + var o = { + a: 1, + b: 2, + a: 3, + c: 4 + }; + console.log(o.a, o.b, o.c); + } + expect_stdout: "3 2 4" + node_version: ">=4" +}