diff --git a/eslint.config.mjs b/eslint.config.mjs index bf79a45f39b6..a7dac74adc10 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -208,6 +208,7 @@ export default tseslint.config( { commentPattern: '.*intentional fallthrough.*' }, ], 'no-lonely-if': 'error', + 'no-unreachable-loop': 'error', 'no-useless-call': 'error', 'no-useless-computed-key': 'error', 'no-useless-concat': 'error', diff --git a/packages/eslint-plugin/src/rules/no-mixed-enums.ts b/packages/eslint-plugin/src/rules/no-mixed-enums.ts index e8a06d9861e0..a3eddf6f2a0f 100644 --- a/packages/eslint-plugin/src/rules/no-mixed-enums.ts +++ b/packages/eslint-plugin/src/rules/no-mixed-enums.ts @@ -170,18 +170,15 @@ export default createRule({ .getSymbolAtLocation(tsNode)! .getDeclarations()!; - for (const declaration of declarations) { - for (const member of (declaration as ts.EnumDeclaration).members) { - return member.initializer - ? tsutils.isTypeFlagSet( - typeChecker.getTypeAtLocation(member.initializer), - ts.TypeFlags.StringLike, - ) - ? AllowedType.String - : AllowedType.Number - : AllowedType.Number; - } - } + const [{ initializer }] = (declarations[0] as ts.EnumDeclaration) + .members; + return initializer && + tsutils.isTypeFlagSet( + typeChecker.getTypeAtLocation(initializer), + ts.TypeFlags.StringLike, + ) + ? AllowedType.String + : AllowedType.Number; } // Finally, we default to the type of the first enum member diff --git a/packages/eslint-plugin/src/rules/no-unsafe-return.ts b/packages/eslint-plugin/src/rules/no-unsafe-return.ts index ae959627c09d..d9c7cd60cc0f 100644 --- a/packages/eslint-plugin/src/rules/no-unsafe-return.ts +++ b/packages/eslint-plugin/src/rules/no-unsafe-return.ts @@ -166,7 +166,8 @@ export default createRule({ }); } - for (const signature of functionType.getCallSignatures()) { + const signature = functionType.getCallSignatures().at(0); + if (signature) { const functionReturnType = signature.getReturnType(); const result = isUnsafeAssignment( returnNodeType, diff --git a/packages/eslint-plugin/tests/rules/no-unsafe-return.test.ts b/packages/eslint-plugin/tests/rules/no-unsafe-return.test.ts index dc5e1df369d6..c30c6a2b0bf1 100644 --- a/packages/eslint-plugin/tests/rules/no-unsafe-return.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unsafe-return.test.ts @@ -127,6 +127,7 @@ function foo(): Set { return [] as any[]; } `, + 'const foo: (() => void) | undefined = () => 1;', ], invalid: [ {