diff --git a/packages/eslint-plugin/docs/rules/no-useless-template-expression.mdx b/packages/eslint-plugin/docs/rules/no-unnecessary-template-expression.mdx similarity index 89% rename from packages/eslint-plugin/docs/rules/no-useless-template-expression.mdx rename to packages/eslint-plugin/docs/rules/no-unnecessary-template-expression.mdx index 2b6a28802b22..9db56432d931 100644 --- a/packages/eslint-plugin/docs/rules/no-useless-template-expression.mdx +++ b/packages/eslint-plugin/docs/rules/no-unnecessary-template-expression.mdx @@ -7,14 +7,14 @@ import TabItem from '@theme/TabItem'; > 🛑 This file is source code, not the primary documentation location! 🛑 > -> See **https://typescript-eslint.io/rules/no-useless-template-expression** for documentation. +> See **https://typescript-eslint.io/rules/no-unnecessary-template-expression** for documentation. This rule reports template literals that contain substitution expressions (also variously referred to as embedded expressions or string interpolations) that are unnecessary and can be simplified. :::info[Migration from `no-useless-template-literals`] This rule was formerly known as [`no-useless-template-literals`](./no-useless-template-literals.mdx). -We encourage users to migrate to the new name, `no-useless-template-expression`, as the old name will be removed in a future major version of typescript-eslint. +We encourage users to migrate to the new name, `no-unnecessary-template-expression`, as the old name will be removed in a future major version of typescript-eslint. The new name is a drop-in replacement with identical functionality. diff --git a/packages/eslint-plugin/docs/rules/no-useless-template-literals.mdx b/packages/eslint-plugin/docs/rules/no-useless-template-literals.mdx index f02ec5ada9ec..b245bc3a7b9e 100644 --- a/packages/eslint-plugin/docs/rules/no-useless-template-literals.mdx +++ b/packages/eslint-plugin/docs/rules/no-useless-template-literals.mdx @@ -12,7 +12,7 @@ import TabItem from '@theme/TabItem'; This rule reports template literals that contain substitution expressions (also variously referred to as embedded expressions or string interpolations) that are unnecessary and can be simplified. :::warning -This rule is being renamed to [`no-useless-template-expression`](./no-useless-template-expression.mdx). +This rule is being renamed to [`no-unnecessary-template-expression`](./no-unnecessary-template-expression.mdx). The current name, `no-useless-template-literals`, will be removed in a future major version of typescript-eslint. After the creation of this rule, it was realized that the name `no-useless-template-literals` could be misleading, seeing as this rule only targets template literals with substitution expressions. diff --git a/packages/eslint-plugin/src/configs/all.ts b/packages/eslint-plugin/src/configs/all.ts index 25afd767d522..cec571866d62 100644 --- a/packages/eslint-plugin/src/configs/all.ts +++ b/packages/eslint-plugin/src/configs/all.ts @@ -113,7 +113,7 @@ export = { 'no-useless-constructor': 'off', '@typescript-eslint/no-useless-constructor': 'error', '@typescript-eslint/no-useless-empty-export': 'error', - '@typescript-eslint/no-useless-template-expression': 'error', + '@typescript-eslint/no-unnecessary-template-expression': 'error', '@typescript-eslint/no-var-requires': 'error', '@typescript-eslint/non-nullable-type-assertion-style': 'error', 'no-throw-literal': 'off', diff --git a/packages/eslint-plugin/src/configs/disable-type-checked.ts b/packages/eslint-plugin/src/configs/disable-type-checked.ts index 6400ad4f43ee..830b5e1c0b11 100644 --- a/packages/eslint-plugin/src/configs/disable-type-checked.ts +++ b/packages/eslint-plugin/src/configs/disable-type-checked.ts @@ -39,7 +39,7 @@ export = { '@typescript-eslint/no-unsafe-member-access': 'off', '@typescript-eslint/no-unsafe-return': 'off', '@typescript-eslint/no-unsafe-unary-minus': 'off', - '@typescript-eslint/no-useless-template-expression': 'off', + '@typescript-eslint/no-unnecessary-template-expression': 'off', '@typescript-eslint/no-useless-template-literals': 'off', '@typescript-eslint/non-nullable-type-assertion-style': 'off', '@typescript-eslint/only-throw-error': 'off', diff --git a/packages/eslint-plugin/src/configs/strict-type-checked-only.ts b/packages/eslint-plugin/src/configs/strict-type-checked-only.ts index 0815a6007e31..9d0caad2ef16 100644 --- a/packages/eslint-plugin/src/configs/strict-type-checked-only.ts +++ b/packages/eslint-plugin/src/configs/strict-type-checked-only.ts @@ -33,7 +33,7 @@ export = { '@typescript-eslint/no-unsafe-enum-comparison': 'error', '@typescript-eslint/no-unsafe-member-access': 'error', '@typescript-eslint/no-unsafe-return': 'error', - '@typescript-eslint/no-useless-template-expression': 'error', + '@typescript-eslint/no-unnecessary-template-expression': 'error', 'no-throw-literal': 'off', '@typescript-eslint/only-throw-error': 'error', '@typescript-eslint/prefer-includes': 'error', diff --git a/packages/eslint-plugin/src/configs/strict-type-checked.ts b/packages/eslint-plugin/src/configs/strict-type-checked.ts index 6233b039ed6e..2cab2b5c561e 100644 --- a/packages/eslint-plugin/src/configs/strict-type-checked.ts +++ b/packages/eslint-plugin/src/configs/strict-type-checked.ts @@ -60,7 +60,7 @@ export = { '@typescript-eslint/no-unused-vars': 'error', 'no-useless-constructor': 'off', '@typescript-eslint/no-useless-constructor': 'error', - '@typescript-eslint/no-useless-template-expression': 'error', + '@typescript-eslint/no-unnecessary-template-expression': 'error', '@typescript-eslint/no-var-requires': 'error', 'no-throw-literal': 'off', '@typescript-eslint/only-throw-error': 'error', diff --git a/packages/eslint-plugin/src/rules/index.ts b/packages/eslint-plugin/src/rules/index.ts index 9befde4df7bf..fe0d36026bd1 100644 --- a/packages/eslint-plugin/src/rules/index.ts +++ b/packages/eslint-plugin/src/rules/index.ts @@ -81,6 +81,7 @@ import noTypeAlias from './no-type-alias'; import noUnnecessaryBooleanLiteralCompare from './no-unnecessary-boolean-literal-compare'; import noUnnecessaryCondition from './no-unnecessary-condition'; import noUnnecessaryQualifier from './no-unnecessary-qualifier'; +import noUnnecessaryTemplateExpression from './no-unnecessary-template-expression'; import noUnnecessaryTypeArguments from './no-unnecessary-type-arguments'; import noUnnecessaryTypeAssertion from './no-unnecessary-type-assertion'; import noUnnecessaryTypeConstraint from './no-unnecessary-type-constraint'; @@ -97,7 +98,6 @@ import noUnusedVars from './no-unused-vars'; import noUseBeforeDefine from './no-use-before-define'; import noUselessConstructor from './no-useless-constructor'; import noUselessEmptyExport from './no-useless-empty-export'; -import noUselessTemplateExpression from './no-useless-template-expression'; import noUselessTemplateLiterals from './no-useless-template-literals'; import noVarRequires from './no-var-requires'; import nonNullableTypeAssertionStyle from './non-nullable-type-assertion-style'; @@ -227,6 +227,7 @@ export default { 'no-unnecessary-boolean-literal-compare': noUnnecessaryBooleanLiteralCompare, 'no-unnecessary-condition': noUnnecessaryCondition, 'no-unnecessary-qualifier': noUnnecessaryQualifier, + 'no-unnecessary-template-expression': noUnnecessaryTemplateExpression, 'no-unnecessary-type-arguments': noUnnecessaryTypeArguments, 'no-unnecessary-type-assertion': noUnnecessaryTypeAssertion, 'no-unnecessary-type-constraint': noUnnecessaryTypeConstraint, @@ -243,7 +244,6 @@ export default { 'no-use-before-define': noUseBeforeDefine, 'no-useless-constructor': noUselessConstructor, 'no-useless-empty-export': noUselessEmptyExport, - 'no-useless-template-expression': noUselessTemplateExpression, 'no-useless-template-literals': noUselessTemplateLiterals, 'no-var-requires': noVarRequires, 'non-nullable-type-assertion-style': nonNullableTypeAssertionStyle, diff --git a/packages/eslint-plugin/src/rules/no-useless-template-expression.ts b/packages/eslint-plugin/src/rules/no-unnecessary-template-expression.ts similarity index 95% rename from packages/eslint-plugin/src/rules/no-useless-template-expression.ts rename to packages/eslint-plugin/src/rules/no-unnecessary-template-expression.ts index e7afc261e2fe..44e10c5e33c8 100644 --- a/packages/eslint-plugin/src/rules/no-useless-template-expression.ts +++ b/packages/eslint-plugin/src/rules/no-unnecessary-template-expression.ts @@ -11,10 +11,10 @@ import { isUndefinedIdentifier, } from '../util'; -type MessageId = 'noUselessTemplateExpression'; +type MessageId = 'noUnnecessaryTemplateExpression'; export default createRule<[], MessageId>({ - name: 'no-useless-template-expression', + name: 'no-unnecessary-template-expression', meta: { fixable: 'code', type: 'suggestion', @@ -24,7 +24,7 @@ export default createRule<[], MessageId>({ requiresTypeChecking: true, }, messages: { - noUselessTemplateExpression: + noUnnecessaryTemplateExpression: 'Template literal expression is unnecessary and can be simplified.', }, schema: [], @@ -91,7 +91,7 @@ export default createRule<[], MessageId>({ if (hasSingleStringVariable) { context.report({ node: node.expressions[0], - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', fix(fixer): TSESLint.RuleFix[] { const [prevQuasi, nextQuasi] = node.quasis; @@ -125,7 +125,7 @@ export default createRule<[], MessageId>({ fixableExpressions.forEach(expression => { context.report({ node: expression, - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', fix(fixer): TSESLint.RuleFix[] { const index = node.expressions.indexOf(expression); const prevQuasi = node.quasis[index]; diff --git a/packages/eslint-plugin/src/rules/no-useless-template-literals.ts b/packages/eslint-plugin/src/rules/no-useless-template-literals.ts index 9156c6e4053e..7b13cd8e2e9a 100644 --- a/packages/eslint-plugin/src/rules/no-useless-template-literals.ts +++ b/packages/eslint-plugin/src/rules/no-useless-template-literals.ts @@ -11,7 +11,7 @@ import { isUndefinedIdentifier, } from '../util'; -type MessageId = 'noUselessTemplateExpression'; +type MessageId = 'noUnnecessaryTemplateExpression'; export default createRule<[], MessageId>({ name: 'no-useless-template-literals', @@ -23,12 +23,12 @@ export default createRule<[], MessageId>({ requiresTypeChecking: true, }, messages: { - noUselessTemplateExpression: + noUnnecessaryTemplateExpression: 'Template literal expression is unnecessary and can be simplified.', }, schema: [], deprecated: true, - replacedBy: ['@typescript-eslint/no-useless-template-expression'], + replacedBy: ['@typescript-eslint/no-unnecessary-template-expression'], }, defaultOptions: [], create(context) { @@ -92,7 +92,7 @@ export default createRule<[], MessageId>({ if (hasSingleStringVariable) { context.report({ node: node.expressions[0], - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', fix(fixer): TSESLint.RuleFix[] { const [prevQuasi, nextQuasi] = node.quasis; @@ -126,7 +126,7 @@ export default createRule<[], MessageId>({ fixableExpressions.forEach(expression => { context.report({ node: expression, - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', fix(fixer): TSESLint.RuleFix[] { const index = node.expressions.indexOf(expression); const prevQuasi = node.quasis[index]; diff --git a/packages/eslint-plugin/tests/docs-eslint-output-snapshots/no-useless-template-expression.shot b/packages/eslint-plugin/tests/docs-eslint-output-snapshots/no-unnecessary-template-expression.shot similarity index 90% rename from packages/eslint-plugin/tests/docs-eslint-output-snapshots/no-useless-template-expression.shot rename to packages/eslint-plugin/tests/docs-eslint-output-snapshots/no-unnecessary-template-expression.shot index d5813404d862..d6062501d837 100644 --- a/packages/eslint-plugin/tests/docs-eslint-output-snapshots/no-useless-template-expression.shot +++ b/packages/eslint-plugin/tests/docs-eslint-output-snapshots/no-unnecessary-template-expression.shot @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Validating rule docs no-useless-template-expression.mdx code examples ESLint output 1`] = ` +exports[`Validating rule docs no-unnecessary-template-expression.mdx code examples ESLint output 1`] = ` "Incorrect // Static values can be incorporated into the surrounding template. @@ -32,7 +32,7 @@ const wrappedIntersection = \`\${intersectionWithString}\`; " `; -exports[`Validating rule docs no-useless-template-expression.mdx code examples ESLint output 2`] = ` +exports[`Validating rule docs no-unnecessary-template-expression.mdx code examples ESLint output 2`] = ` "Correct // Static values can be incorporated into the surrounding template. diff --git a/packages/eslint-plugin/tests/rules/no-useless-template-expression.test.ts b/packages/eslint-plugin/tests/rules/no-unnecessary-template-expression.test.ts similarity index 78% rename from packages/eslint-plugin/tests/rules/no-useless-template-expression.test.ts rename to packages/eslint-plugin/tests/rules/no-unnecessary-template-expression.test.ts index 628057ac7d17..a2921c045ce7 100644 --- a/packages/eslint-plugin/tests/rules/no-useless-template-expression.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unnecessary-template-expression.test.ts @@ -1,6 +1,6 @@ import { noFormat, RuleTester } from '@typescript-eslint/rule-tester'; -import rule from '../../src/rules/no-useless-template-expression'; +import rule from '../../src/rules/no-unnecessary-template-expression'; import { getFixturesRootDir } from '../RuleTester'; const rootPath = getFixturesRootDir(); @@ -13,7 +13,7 @@ const ruleTester = new RuleTester({ }, }); -ruleTester.run('no-useless-template-expression', rule, { +ruleTester.run('no-unnecessary-template-expression', rule, { valid: [ "const string = 'a';", 'const string = `a`;', @@ -143,7 +143,7 @@ ruleTester.run('no-useless-template-expression', rule, { output: '`1`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 5, @@ -155,7 +155,7 @@ ruleTester.run('no-useless-template-expression', rule, { output: '`1`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 6, @@ -167,7 +167,7 @@ ruleTester.run('no-useless-template-expression', rule, { output: '`/a/`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 7, @@ -180,7 +180,7 @@ ruleTester.run('no-useless-template-expression', rule, { output: '`1`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -190,7 +190,7 @@ ruleTester.run('no-useless-template-expression', rule, { output: `'a';`, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -200,7 +200,7 @@ ruleTester.run('no-useless-template-expression', rule, { output: `"a";`, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -210,7 +210,7 @@ ruleTester.run('no-useless-template-expression', rule, { output: `'a' + 'b';`, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -220,7 +220,7 @@ ruleTester.run('no-useless-template-expression', rule, { output: '`true`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 8, @@ -233,7 +233,7 @@ ruleTester.run('no-useless-template-expression', rule, { output: '`true`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -243,7 +243,7 @@ ruleTester.run('no-useless-template-expression', rule, { output: '`null`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 8, @@ -256,7 +256,7 @@ ruleTester.run('no-useless-template-expression', rule, { output: '`null`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -266,7 +266,7 @@ ruleTester.run('no-useless-template-expression', rule, { output: '`undefined`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 13, @@ -279,7 +279,7 @@ ruleTester.run('no-useless-template-expression', rule, { output: '`undefined`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -289,7 +289,7 @@ ruleTester.run('no-useless-template-expression', rule, { output: '`Infinity`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 12, @@ -302,7 +302,7 @@ ruleTester.run('no-useless-template-expression', rule, { output: '`NaN`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 7, @@ -315,13 +315,13 @@ ruleTester.run('no-useless-template-expression', rule, { output: '`a b`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 7, }, { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 11, endColumn: 14, @@ -334,10 +334,10 @@ ruleTester.run('no-useless-template-expression', rule, { output: '`a b`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -353,7 +353,7 @@ ruleTester.run('no-useless-template-expression', rule, { `, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 3, column: 17, endColumn: 20, @@ -366,7 +366,7 @@ ruleTester.run('no-useless-template-expression', rule, { output: '`useless`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, }, ], @@ -377,7 +377,7 @@ ruleTester.run('no-useless-template-expression', rule, { output: '`useless`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, }, ], @@ -394,7 +394,7 @@ declare const nested: string, interpolation: string; `, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -416,17 +416,17 @@ declare const nested: string, interpolation: string; `, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 4, }, { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 7, column: 3, endLine: 7, }, { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 7, column: 10, endLine: 7, @@ -444,7 +444,7 @@ declare const nested: string, interpolation: string; `, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 3, column: 3, endColumn: 9, @@ -457,13 +457,13 @@ declare const nested: string, interpolation: string; output: '`1 + 1 = 2`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 13, }, { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 17, endColumn: 18, @@ -476,13 +476,13 @@ declare const nested: string, interpolation: string; output: '`a true`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 7, }, { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 11, endColumn: 15, @@ -501,7 +501,7 @@ declare const nested: string, interpolation: string; `, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 3, column: 12, endColumn: 18, @@ -520,7 +520,7 @@ declare const nested: string, interpolation: string; `, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -530,7 +530,7 @@ declare const nested: string, interpolation: string; output: "String(Symbol.for('test'));", errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 30, @@ -549,7 +549,7 @@ declare const nested: string, interpolation: string; `, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 3, column: 12, endColumn: 24, @@ -570,7 +570,7 @@ declare const nested: string, interpolation: string; `, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 3, column: 14, endColumn: 17, @@ -583,7 +583,7 @@ declare const nested: string, interpolation: string; output: "'`';", errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -593,7 +593,7 @@ declare const nested: string, interpolation: string; output: '`back\\`tick`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -603,7 +603,7 @@ declare const nested: string, interpolation: string; output: '`dollar\\${\\`this is test\\`}sign`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -613,7 +613,7 @@ declare const nested: string, interpolation: string; output: '`complex\\`\\${"\\`\\${test}\\`"}\\`case`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -623,7 +623,7 @@ declare const nested: string, interpolation: string; output: '`some \\\\\\${test} string`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -633,7 +633,7 @@ declare const nested: string, interpolation: string; output: '`some \\\\\\` string`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, diff --git a/packages/eslint-plugin/tests/rules/no-useless-template-literals.test.ts b/packages/eslint-plugin/tests/rules/no-useless-template-literals.test.ts index 06eacb1e31e6..e996c5696d54 100644 --- a/packages/eslint-plugin/tests/rules/no-useless-template-literals.test.ts +++ b/packages/eslint-plugin/tests/rules/no-useless-template-literals.test.ts @@ -143,7 +143,7 @@ ruleTester.run('no-useless-template-literals', rule, { output: '`1`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 5, @@ -155,7 +155,7 @@ ruleTester.run('no-useless-template-literals', rule, { output: '`1`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 6, @@ -167,7 +167,7 @@ ruleTester.run('no-useless-template-literals', rule, { output: '`/a/`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 7, @@ -180,7 +180,7 @@ ruleTester.run('no-useless-template-literals', rule, { output: '`1`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -190,7 +190,7 @@ ruleTester.run('no-useless-template-literals', rule, { output: `'a';`, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -200,7 +200,7 @@ ruleTester.run('no-useless-template-literals', rule, { output: `"a";`, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -210,7 +210,7 @@ ruleTester.run('no-useless-template-literals', rule, { output: `'a' + 'b';`, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -220,7 +220,7 @@ ruleTester.run('no-useless-template-literals', rule, { output: '`true`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 8, @@ -233,7 +233,7 @@ ruleTester.run('no-useless-template-literals', rule, { output: '`true`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -243,7 +243,7 @@ ruleTester.run('no-useless-template-literals', rule, { output: '`null`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 8, @@ -256,7 +256,7 @@ ruleTester.run('no-useless-template-literals', rule, { output: '`null`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -266,7 +266,7 @@ ruleTester.run('no-useless-template-literals', rule, { output: '`undefined`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 13, @@ -279,7 +279,7 @@ ruleTester.run('no-useless-template-literals', rule, { output: '`undefined`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -289,7 +289,7 @@ ruleTester.run('no-useless-template-literals', rule, { output: '`Infinity`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 12, @@ -302,7 +302,7 @@ ruleTester.run('no-useless-template-literals', rule, { output: '`NaN`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 7, @@ -315,13 +315,13 @@ ruleTester.run('no-useless-template-literals', rule, { output: '`a b`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 7, }, { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 11, endColumn: 14, @@ -334,10 +334,10 @@ ruleTester.run('no-useless-template-literals', rule, { output: '`a b`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -353,7 +353,7 @@ ruleTester.run('no-useless-template-literals', rule, { `, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 3, column: 17, endColumn: 20, @@ -366,7 +366,7 @@ ruleTester.run('no-useless-template-literals', rule, { output: '`useless`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, }, ], @@ -377,7 +377,7 @@ ruleTester.run('no-useless-template-literals', rule, { output: '`useless`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, }, ], @@ -394,7 +394,7 @@ declare const nested: string, interpolation: string; `, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -416,17 +416,17 @@ declare const nested: string, interpolation: string; `, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 4, }, { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 7, column: 3, endLine: 7, }, { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 7, column: 10, endLine: 7, @@ -444,7 +444,7 @@ declare const nested: string, interpolation: string; `, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 3, column: 3, endColumn: 9, @@ -457,13 +457,13 @@ declare const nested: string, interpolation: string; output: '`1 + 1 = 2`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 13, }, { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 17, endColumn: 18, @@ -476,13 +476,13 @@ declare const nested: string, interpolation: string; output: '`a true`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 7, }, { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 11, endColumn: 15, @@ -501,7 +501,7 @@ declare const nested: string, interpolation: string; `, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 3, column: 12, endColumn: 18, @@ -520,7 +520,7 @@ declare const nested: string, interpolation: string; `, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -530,7 +530,7 @@ declare const nested: string, interpolation: string; output: "String(Symbol.for('test'));", errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 1, column: 4, endColumn: 30, @@ -549,7 +549,7 @@ declare const nested: string, interpolation: string; `, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 3, column: 12, endColumn: 24, @@ -570,7 +570,7 @@ declare const nested: string, interpolation: string; `, errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', line: 3, column: 14, endColumn: 17, @@ -583,7 +583,7 @@ declare const nested: string, interpolation: string; output: "'`';", errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -593,7 +593,7 @@ declare const nested: string, interpolation: string; output: '`back\\`tick`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -603,7 +603,7 @@ declare const nested: string, interpolation: string; output: '`dollar\\${\\`this is test\\`}sign`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -613,7 +613,7 @@ declare const nested: string, interpolation: string; output: '`complex\\`\\${"\\`\\${test}\\`"}\\`case`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -623,7 +623,7 @@ declare const nested: string, interpolation: string; output: '`some \\\\\\${test} string`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, @@ -633,7 +633,7 @@ declare const nested: string, interpolation: string; output: '`some \\\\\\` string`;', errors: [ { - messageId: 'noUselessTemplateExpression', + messageId: 'noUnnecessaryTemplateExpression', }, ], }, diff --git a/packages/eslint-plugin/tests/schema-snapshots/no-useless-template-expression.shot b/packages/eslint-plugin/tests/schema-snapshots/no-unnecessary-template-expression.shot similarity index 75% rename from packages/eslint-plugin/tests/schema-snapshots/no-useless-template-expression.shot rename to packages/eslint-plugin/tests/schema-snapshots/no-unnecessary-template-expression.shot index f34596f9a1a4..4e84a598d4a4 100644 --- a/packages/eslint-plugin/tests/schema-snapshots/no-useless-template-expression.shot +++ b/packages/eslint-plugin/tests/schema-snapshots/no-unnecessary-template-expression.shot @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Rule schemas should be convertible to TS types for documentation purposes no-useless-template-expression 1`] = ` +exports[`Rule schemas should be convertible to TS types for documentation purposes no-unnecessary-template-expression 1`] = ` " # SCHEMA: diff --git a/packages/typescript-eslint/src/configs/all.ts b/packages/typescript-eslint/src/configs/all.ts index 60dee9f65b60..423ce0e03c92 100644 --- a/packages/typescript-eslint/src/configs/all.ts +++ b/packages/typescript-eslint/src/configs/all.ts @@ -122,7 +122,7 @@ export default ( 'no-useless-constructor': 'off', '@typescript-eslint/no-useless-constructor': 'error', '@typescript-eslint/no-useless-empty-export': 'error', - '@typescript-eslint/no-useless-template-expression': 'error', + '@typescript-eslint/no-unnecessary-template-expression': 'error', '@typescript-eslint/no-var-requires': 'error', '@typescript-eslint/non-nullable-type-assertion-style': 'error', 'no-throw-literal': 'off', diff --git a/packages/typescript-eslint/src/configs/disable-type-checked.ts b/packages/typescript-eslint/src/configs/disable-type-checked.ts index 9be9ab93dfd3..6298e0cbe5dc 100644 --- a/packages/typescript-eslint/src/configs/disable-type-checked.ts +++ b/packages/typescript-eslint/src/configs/disable-type-checked.ts @@ -42,7 +42,7 @@ export default ( '@typescript-eslint/no-unsafe-member-access': 'off', '@typescript-eslint/no-unsafe-return': 'off', '@typescript-eslint/no-unsafe-unary-minus': 'off', - '@typescript-eslint/no-useless-template-expression': 'off', + '@typescript-eslint/no-unnecessary-template-expression': 'off', '@typescript-eslint/no-useless-template-literals': 'off', '@typescript-eslint/non-nullable-type-assertion-style': 'off', '@typescript-eslint/only-throw-error': 'off', diff --git a/packages/typescript-eslint/src/configs/strict-type-checked-only.ts b/packages/typescript-eslint/src/configs/strict-type-checked-only.ts index a2dbdaab1059..1ae371352e34 100644 --- a/packages/typescript-eslint/src/configs/strict-type-checked-only.ts +++ b/packages/typescript-eslint/src/configs/strict-type-checked-only.ts @@ -42,7 +42,7 @@ export default ( '@typescript-eslint/no-unsafe-enum-comparison': 'error', '@typescript-eslint/no-unsafe-member-access': 'error', '@typescript-eslint/no-unsafe-return': 'error', - '@typescript-eslint/no-useless-template-expression': 'error', + '@typescript-eslint/no-unnecessary-template-expression': 'error', 'no-throw-literal': 'off', '@typescript-eslint/only-throw-error': 'error', '@typescript-eslint/prefer-includes': 'error', diff --git a/packages/typescript-eslint/src/configs/strict-type-checked.ts b/packages/typescript-eslint/src/configs/strict-type-checked.ts index 1a700dce8fdf..840cfbe0db9b 100644 --- a/packages/typescript-eslint/src/configs/strict-type-checked.ts +++ b/packages/typescript-eslint/src/configs/strict-type-checked.ts @@ -69,7 +69,7 @@ export default ( '@typescript-eslint/no-unused-vars': 'error', 'no-useless-constructor': 'off', '@typescript-eslint/no-useless-constructor': 'error', - '@typescript-eslint/no-useless-template-expression': 'error', + '@typescript-eslint/no-unnecessary-template-expression': 'error', '@typescript-eslint/no-var-requires': 'error', 'no-throw-literal': 'off', '@typescript-eslint/only-throw-error': 'error', diff --git a/packages/website/blog/2024-05-27-announcing-typescript-eslint-v8-beta.mdx b/packages/website/blog/2024-05-27-announcing-typescript-eslint-v8-beta.mdx index 8a7a56354d39..bb4df35009b4 100644 --- a/packages/website/blog/2024-05-27-announcing-typescript-eslint-v8-beta.mdx +++ b/packages/website/blog/2024-05-27-announcing-typescript-eslint-v8-beta.mdx @@ -177,8 +177,8 @@ Several rules are changed in significant enough ways to be considered breaking c - If you have [`@typescript-eslint/no-var-requires`](/rules/no-var-requires) manually enabled, remove that, and instead either use a [recommended config](/users/configs) or manually enable [`@typescript-eslint/no-require-imports`](/rules/no-require-imports) - [feat(eslint-plugin): remove deprecated no-throw-literal rule](https://github.com/typescript-eslint/typescript-eslint/issues/9083) - If you have [`@typescript-eslint/no-throw-literal`](/rules/no-throw-literal) manually enabled, remove that, and instead either use a [recommended config](/users/configs) or manually enable [`@typescript-eslint/only-throw-error`](/rules/only-throw-error) -- ⏳ [fix(eslint-plugin): [no-useless-template-literals] rename to no-useless-template-expression](https://github.com/typescript-eslint/typescript-eslint/pull/8821) - - Find-and-replace text from `no-useless-template-literals` to `no-useless-template-expression` +- ⏳ [fix(eslint-plugin): [no-useless-template-literals] rename to no-unnecessary-template-expression](https://github.com/typescript-eslint/typescript-eslint/pull/8821) + - Find-and-replace text from `no-useless-template-literals` to `no-unnecessary-template-expression` - [feat(eslint-plugin): deprecate no-loss-of-precision extension rule](https://github.com/typescript-eslint/typescript-eslint/pull/8832) - If you have [`@typescript-eslint/no-loss-of-precision`](/rules/no-loss-of-precision) manually enabled, replace it with the base rule `no-loss-of-precision`. - [feat(eslint-plugin): remove formatting/layout rules](https://github.com/typescript-eslint/typescript-eslint/pull/8833)