From 05d509333e20ea943c795d0eb8e97de4df923729 Mon Sep 17 00:00:00 2001 From: Ben Mosher Date: Wed, 25 Mar 2015 07:33:16 -0400 Subject: [PATCH] Added duplicate import checking to no-reassign. I would expect no-redeclare to catch this more generally, but it seems not to with ESLint 0.17.1. --- lib/rules/no-reassign.js | 3 +++ tests/lib/rules/no-reassign.js | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/rules/no-reassign.js b/lib/rules/no-reassign.js index 2e1cf00dc..223eb0115 100644 --- a/lib/rules/no-reassign.js +++ b/lib/rules/no-reassign.js @@ -17,14 +17,17 @@ module.exports = function (context) { return { "ImportSpecifier": function (node) { + checkIdentifier(node.local); locals.add(node.local.name); }, "ImportDefaultSpecifier": function (node) { + checkIdentifier(node.local); locals.add(node.local.name); }, "ImportNamespaceSpecifier": function (node) { + checkIdentifier(node.local); locals.add(node.local.name); namespaces.add(node.local.name); }, diff --git a/tests/lib/rules/no-reassign.js b/tests/lib/rules/no-reassign.js index ba2265f7b..372517994 100644 --- a/tests/lib/rules/no-reassign.js +++ b/tests/lib/rules/no-reassign.js @@ -42,9 +42,20 @@ eslintTester.addRuleTest("lib/rules/no-reassign", { code: "import { foo } from './bar';\nvar bar = 32, foo = function() { return false; }", errors: [{ message: "Reassignment of local imported name 'foo'." }]}), + test({ + code: "import { foo } from './bar';\nimport { foo } from './common';", + errors: [{ message: "Reassignment of local imported name 'foo'." }]}), + + test({ + code: "import { foo } from './bar';\nimport foo from './common';", + errors: [{ message: "Reassignment of local imported name 'foo'." }]}), + + test({ + code: "import { foo } from './bar';\nimport * as foo from './common';", + errors: [{ message: "Reassignment of local imported name 'foo'." }]}), + test({ code: "import * as foo from './bar'; foo.x = 'y';", - errors: [{ message: "Assignment to member of namespace 'foo'."}] - }) + errors: [{ message: "Assignment to member of namespace 'foo'."}]}) ] });