From 0d0e9075cd704fb91024dac90548c6139696e6df Mon Sep 17 00:00:00 2001 From: Abraham Guo Date: Wed, 10 Jul 2024 23:57:42 -0500 Subject: [PATCH 1/2] no-unreachable-loop --- eslint.config.mjs | 1 + .../eslint-plugin/src/rules/no-mixed-enums.ts | 21 ++++++++----------- .../src/rules/no-unsafe-return.ts | 3 ++- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 4c259bee01a1..055a9d2d9743 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -206,6 +206,7 @@ export default tseslint.config( 'error', { commentPattern: '.*intentional fallthrough.*' }, ], + 'no-unreachable-loop': 'error', 'one-var': ['error', 'never'], // 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, From 47050cbbb928bf6cf7b5df89bb189fd0c9cbd7f2 Mon Sep 17 00:00:00 2001 From: Abraham Guo Date: Thu, 11 Jul 2024 00:24:27 -0500 Subject: [PATCH 2/2] add test --- packages/eslint-plugin/tests/rules/no-unsafe-return.test.ts | 1 + 1 file changed, 1 insertion(+) 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: [ { pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy