From 22c7e09c167a98da07ec6968e2b57d4c2cba345e Mon Sep 17 00:00:00 2001 From: not-an-aardvark Date: Sat, 3 Sep 2016 11:52:27 -0400 Subject: [PATCH] Update: no-magic-numbers false negative on reassigned vars (fixes #4616) (#7028) --- docs/rules/no-magic-numbers.md | 8 ++++++++ lib/rules/no-magic-numbers.js | 6 ++++-- tests/lib/rules/no-magic-numbers.js | 12 +++++++++--- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/docs/rules/no-magic-numbers.md b/docs/rules/no-magic-numbers.md index d778bdd0b88..339a0adb024 100644 --- a/docs/rules/no-magic-numbers.md +++ b/docs/rules/no-magic-numbers.md @@ -30,6 +30,14 @@ var data = ['foo', 'bar', 'baz']; var dataLast = data[2]; ``` +```js +/*eslint no-magic-numbers: "error"*/ + +var SECONDS; + +SECONDS = 60; +``` + Examples of **correct** code for this rule: ```js diff --git a/lib/rules/no-magic-numbers.js b/lib/rules/no-magic-numbers.js index 4e68190e728..796ecff0f8a 100644 --- a/lib/rules/no-magic-numbers.js +++ b/lib/rules/no-magic-numbers.js @@ -131,8 +131,10 @@ module.exports = { message: "Number constants declarations must use 'const'." }); } - } else if (okTypes.indexOf(parent.type) === -1 || - (parent.type === "AssignmentExpression" && parent.operator !== "=")) { + } else if ( + okTypes.indexOf(parent.type) === -1 || + (parent.type === "AssignmentExpression" && parent.left.type === "Identifier") + ) { context.report({ node, message: "No magic number: {{raw}}.", diff --git a/tests/lib/rules/no-magic-numbers.js b/tests/lib/rules/no-magic-numbers.js index ab12d790b67..2ed1ac24ba0 100644 --- a/tests/lib/rules/no-magic-numbers.js +++ b/tests/lib/rules/no-magic-numbers.js @@ -55,9 +55,6 @@ ruleTester.run("no-magic-numbers", rule, { ignore: [0, 1, 2, 3, 4] }] }, - { - code: "var min, max, mean; min = 1; max = 10; mean = 4;" - }, { code: "var foo = { bar:10 }" }, @@ -233,6 +230,15 @@ ruleTester.run("no-magic-numbers", rule, { { message: "No magic number: 2.", line: 1 }, { message: "No magic number: 3.", line: 1 } ] + }, + { + code: "var min, max, mean; min = 1; max = 10; mean = 4;", + options: [{}], + errors: [ + {message: "No magic number: 1.", line: 1}, + {message: "No magic number: 10.", line: 1}, + {message: "No magic number: 4.", line: 1} + ] } ] });