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" }]