diff --git a/lib/rules/template-no-chained-this.js b/lib/rules/template-no-chained-this.js index f62245fbee..8fb1649c9f 100644 --- a/lib/rules/template-no-chained-this.js +++ b/lib/rules/template-no-chained-this.js @@ -57,9 +57,20 @@ module.exports = { node, messageId: 'noChainedThis', fix(fixer) { + const fixes = []; + // Replace the tag name after '<' const openStart = node.range[0] + 1; - return fixer.replaceTextRange([openStart, openStart + node.tag.length], fixedTag); + fixes.push(fixer.replaceTextRange([openStart, openStart + node.tag.length], fixedTag)); + + // For non-self-closing elements, also fix the closing tag + if (!node.selfClosing) { + const closingEnd = node.range[1] - 1; // before '>' + const closingStart = closingEnd - node.tag.length; // start of tag name in + fixes.push(fixer.replaceTextRange([closingStart, closingEnd], fixedTag)); + } + + return fixes; }, }); }, diff --git a/tests/lib/rules/template-no-chained-this.js b/tests/lib/rules/template-no-chained-this.js index 2e8a481b90..cd6f39fa89 100644 --- a/tests/lib/rules/template-no-chained-this.js +++ b/tests/lib/rules/template-no-chained-this.js @@ -47,5 +47,10 @@ ruleTester.run('template-no-chained-this', rule, { output: '', errors: [{ messageId: 'noChainedThis' }], }, + { + code: '', + output: '', + errors: [{ messageId: 'noChainedThis' }], + }, ], });