diff --git a/rules/prefer-ternary.js b/rules/prefer-ternary.js index 350b4f3d22..3c3be2f728 100644 --- a/rules/prefer-ternary.js +++ b/rules/prefer-ternary.js @@ -1,9 +1,9 @@ 'use strict'; const {isParenthesized} = require('eslint-utils'); const {flatten} = require('lodash'); -const FixTracker = require('eslint/lib/rules/utils/fix-tracker'); const getDocumentationUrl = require('./utils/get-documentation-url'); const avoidCapture = require('./utils/avoid-capture'); +const extendFixRange = require('./utils/extend-fix-range'); const messageId = 'prefer-ternary'; @@ -204,7 +204,7 @@ const create = context => { context.report({ node, messageId, - fix: fixer => { + * fix(fixer) { const testText = getParenthesizedText(node.test); const consequentText = typeof result.consequent === 'string' ? result.consequent : @@ -241,13 +241,11 @@ const create = context => { } const fixed = `${before}${testText} ? ${consequentText} : ${alternateText}${after}`; - if (!generateNewVariables) { - return fixer.replaceText(node, fixed); - } + yield fixer.replaceText(node, fixed); - return new FixTracker(fixer, sourceCode) - .retainRange(sourceCode.ast.range) - .replaceTextRange(node.range, fixed); + if (generateNewVariables) { + yield * extendFixRange(fixer, sourceCode.ast.range); + } } }); } diff --git a/rules/utils/extend-fix-range.js b/rules/utils/extend-fix-range.js new file mode 100644 index 0000000000..7a13c6d7a8 --- /dev/null +++ b/rules/utils/extend-fix-range.js @@ -0,0 +1,15 @@ +'use strict'; + +/** +Extend fix range to prevent changes from other rules. +https://github.com/eslint/eslint/pull/13748/files#diff-c692f3fde09eda7c89f1802c908511a3fb59f5d207fe95eb009cb52e46a99e84R348 + +@param {ruleFixer} fixer - The fixer to fix. +@param {int[]} range - The extended range node. +*/ +function * extendFixRange(fixer, range) { + yield fixer.insertTextBeforeRange(range, ''); + yield fixer.insertTextAfterRange(range, ''); +} + +module.exports = extendFixRange;