From 80a05674881096dd9754b67974bdc44663e6c2fa Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Sun, 23 Sep 2018 09:24:52 +0800 Subject: [PATCH 1/2] Fix: make separateRequires does work in consecutive mode (fixes #10784) --- lib/rules/one-var.js | 7 ++++++- tests/lib/rules/one-var.js | 7 +++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/rules/one-var.js b/lib/rules/one-var.js index 13ab72b04ae..099fc43f647 100644 --- a/lib/rules/one-var.js +++ b/lib/rules/one-var.js @@ -384,8 +384,13 @@ module.exports = { if (nodeIndex > 0) { const previousNode = parent.body[nodeIndex - 1]; const isPreviousNodeDeclaration = previousNode.type === "VariableDeclaration"; + const declarationsWithPrevious = declarations.concat(isPreviousNodeDeclaration && previousNode.declarations); - if (isPreviousNodeDeclaration && previousNode.kind === type) { + if ( + isPreviousNodeDeclaration && + previousNode.kind === type && + !(declarationsWithPrevious.some(isRequire) && !declarationsWithPrevious.every(isRequire)) + ) { const previousDeclCounts = countDeclarations(previousNode.declarations); if (options[type].initialized === MODE_CONSECUTIVE && options[type].uninitialized === MODE_CONSECUTIVE) { diff --git a/tests/lib/rules/one-var.js b/tests/lib/rules/one-var.js index 1f6626ad87e..b628f512a9f 100644 --- a/tests/lib/rules/one-var.js +++ b/tests/lib/rules/one-var.js @@ -263,6 +263,13 @@ ruleTester.run("one-var", rule, { options: ["consecutive"], parserOptions: { ecmaVersion: 6 } }, + + // https://github.com/eslint/eslint/issues/10784 + { + code: "const foo = require('foo'); const bar = 'bar';", + options: [{ const: "consecutive", separateRequires: true }], + parserOptions: { ecmaVersion: 6 } + }, { code: "var a = 0, b = 1; var c, d;", options: [{ initialized: "consecutive", uninitialized: "always" }] From 3c7efa4e3c0faaacd9decf3bdbd37aeb7d3dc06e Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Sun, 23 Sep 2018 16:19:51 +0800 Subject: [PATCH 2/2] Chore: simplify expression --- lib/rules/one-var.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rules/one-var.js b/lib/rules/one-var.js index 099fc43f647..15b664d77a3 100644 --- a/lib/rules/one-var.js +++ b/lib/rules/one-var.js @@ -384,7 +384,7 @@ module.exports = { if (nodeIndex > 0) { const previousNode = parent.body[nodeIndex - 1]; const isPreviousNodeDeclaration = previousNode.type === "VariableDeclaration"; - const declarationsWithPrevious = declarations.concat(isPreviousNodeDeclaration && previousNode.declarations); + const declarationsWithPrevious = declarations.concat(previousNode.declarations || []); if ( isPreviousNodeDeclaration &&