From 9432b10196a10ad280a31fac5d5755e9c79c03e3 Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Sat, 29 Sep 2018 01:11:09 +0800 Subject: [PATCH] Fix: make separateRequires work in consecutive mode (fixes #10784) (#10886) --- 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..15b664d77a3 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(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" }]