From 2dc23b81e54defbce7a70a7f26c2e4c7b692cf58 Mon Sep 17 00:00:00 2001 From: Milos Djermanovic Date: Sun, 18 Aug 2019 07:56:55 +0200 Subject: [PATCH] Update: fix no-dupe-keys false negatives on empty string names (#12069) --- lib/rules/no-dupe-keys.js | 2 +- tests/lib/rules/no-dupe-keys.js | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/rules/no-dupe-keys.js b/lib/rules/no-dupe-keys.js index d0751b4a2da..1b7f69cfaca 100644 --- a/lib/rules/no-dupe-keys.js +++ b/lib/rules/no-dupe-keys.js @@ -120,7 +120,7 @@ module.exports = { } // Skip if the name is not static. - if (!name) { + if (name === null) { return; } diff --git a/tests/lib/rules/no-dupe-keys.js b/tests/lib/rules/no-dupe-keys.js index 518f6c36c09..a0a1e7a8c9e 100644 --- a/tests/lib/rules/no-dupe-keys.js +++ b/tests/lib/rules/no-dupe-keys.js @@ -22,6 +22,11 @@ ruleTester.run("no-dupe-keys", rule, { valid: [ "var foo = { __proto__: 1, two: 2};", "var x = { foo: 1, bar: 2 };", + "var x = { '': 1, bar: 2 };", + "var x = { '': 1, ' ': 2 };", + { code: "var x = { '': 1, [null]: 2 };", parserOptions: { ecmaVersion: 6 } }, + { code: "var x = { '': 1, [a]: 2 };", parserOptions: { ecmaVersion: 6 } }, + { code: "var x = { [a]: 1, [a]: 2 };", parserOptions: { ecmaVersion: 6 } }, "+{ get a() { }, set a(b) { } };", { code: "var x = { a: b, [a]: b };", parserOptions: { ecmaVersion: 6 } }, { code: "var x = { a: b, ...c }", parserOptions: { ecmaVersion: 2018 } }, @@ -32,6 +37,8 @@ ruleTester.run("no-dupe-keys", rule, { invalid: [ { code: "var x = { a: b, ['a']: b };", parserOptions: { ecmaVersion: 6 }, errors: [{ messageId: "unexpected", data: { name: "a" }, type: "ObjectExpression" }] }, { code: "var x = { y: 1, y: 2 };", errors: [{ messageId: "unexpected", data: { name: "y" }, type: "ObjectExpression" }] }, + { code: "var x = { '': 1, '': 2 };", errors: [{ messageId: "unexpected", data: { name: "" }, type: "ObjectExpression" }] }, + { code: "var x = { '': 1, [``]: 2 };", parserOptions: { ecmaVersion: 6 }, errors: [{ messageId: "unexpected", data: { name: "" }, type: "ObjectExpression" }] }, { code: "var foo = { 0x1: 1, 1: 2};", errors: [{ messageId: "unexpected", data: { name: "1" }, type: "ObjectExpression" }] }, { code: "var x = { \"z\": 1, z: 2 };", errors: [{ messageId: "unexpected", data: { name: "z" }, type: "ObjectExpression" }] }, { code: "var foo = {\n bar: 1,\n bar: 1,\n}", errors: [{ messageId: "unexpected", data: { name: "bar" }, line: 3, column: 3 }] },