From 8e75d2c4a89be8cd523456ae2a39c70f4ed299c3 Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Sat, 30 Sep 2023 23:52:18 -0400 Subject: [PATCH 1/2] fix(eslint-plugin): [no-unsafe-return] allow returning anything if explicitly returning any --- packages/eslint-plugin/src/rules/no-unsafe-return.ts | 8 +++++++- .../eslint-plugin/tests/rules/no-unsafe-return.test.ts | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/eslint-plugin/src/rules/no-unsafe-return.ts b/packages/eslint-plugin/src/rules/no-unsafe-return.ts index 93a1226e9e4..e5dcf976bbb 100644 --- a/packages/eslint-plugin/src/rules/no-unsafe-return.ts +++ b/packages/eslint-plugin/src/rules/no-unsafe-return.ts @@ -96,7 +96,13 @@ export default util.createRule({ // function return type, we shouldn't complain (it's intentional, even if unsafe) if (functionTSNode.type) { for (const signature of functionType.getCallSignatures()) { - if (returnNodeType === signature.getReturnType()) { + if ( + returnNodeType === signature.getReturnType() || + util.isTypeFlagSet( + signature.getReturnType(), + ts.TypeFlags.Any | ts.TypeFlags.Unknown, + ) + ) { return; } } 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 b75cdfb28c0..c7e6357054e 100644 --- a/packages/eslint-plugin/tests/rules/no-unsafe-return.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unsafe-return.test.ts @@ -108,6 +108,12 @@ function foo(): Set { return new Map(); } `, + // https://github.com/typescript-eslint/typescript-eslint/issues/3549 + ` + function foo(): any { + return [] as any[]; + } + `, ], invalid: [ { From e677bb781ac850f97bcf96df06a17649d4ca40dc Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Fri, 6 Oct 2023 11:55:14 -0400 Subject: [PATCH 2/2] Add test --- packages/eslint-plugin/tests/rules/no-unsafe-return.test.ts | 5 +++++ 1 file changed, 5 insertions(+) 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 c7e6357054e..42a798ffe11 100644 --- a/packages/eslint-plugin/tests/rules/no-unsafe-return.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unsafe-return.test.ts @@ -114,6 +114,11 @@ function foo(): Set { return [] as any[]; } `, + ` + function foo(): unknown { + return [] as any[]; + } + `, ], invalid: [ {