From 6351be63b688f0ebbc31c918be816a045c787540 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=80=E1=85=B5=E1=86=B7=E1=84=89=E1=85=A1=E1=86=BC?= =?UTF-8?q?=E1=84=83=E1=85=AE?= Date: Tue, 4 Jun 2024 22:28:26 +0900 Subject: [PATCH 1/4] fix: not any but error type --- .../src/rules/no-unsafe-return.ts | 5 ++- .../tests/rules/no-unsafe-return.test.ts | 43 ++++++++++++++----- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/packages/eslint-plugin/src/rules/no-unsafe-return.ts b/packages/eslint-plugin/src/rules/no-unsafe-return.ts index ef308450bd80..d3d7e392f2b5 100644 --- a/packages/eslint-plugin/src/rules/no-unsafe-return.ts +++ b/packages/eslint-plugin/src/rules/no-unsafe-return.ts @@ -28,7 +28,7 @@ export default createRule({ requiresTypeChecking: true, }, messages: { - unsafeReturn: 'Unsafe return of an `{{type}}` typed value.', + unsafeReturn: 'Unsafe return of an {{type}} typed value.', unsafeReturnThis: [ 'Unsafe return of an `{{type}}` typed value. `this` is typed as `any`.', 'You can try to fix this by turning on the `noImplicitThis` compiler option, or adding a `this` parameter to the function.', @@ -137,6 +137,7 @@ export default createRule({ } let messageId: 'unsafeReturn' | 'unsafeReturnThis' = 'unsafeReturn'; + const isErrorType = tsutils.isIntrinsicErrorType(returnNodeType) if (!isNoImplicitThis) { // `return this` @@ -156,7 +157,7 @@ export default createRule({ node: reportingNode, messageId, data: { - type: anyType === AnyType.Any ? 'any' : 'any[]', + type: isErrorType?'error':anyType === AnyType.Any ? '`any`' : '`any[]`', }, }); } 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 36c6103bbc20..439fb370e586 100644 --- a/packages/eslint-plugin/tests/rules/no-unsafe-return.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unsafe-return.test.ts @@ -139,7 +139,7 @@ function foo() { { messageId: 'unsafeReturn', data: { - type: 'any', + type: '`any`', }, }, ], @@ -154,7 +154,7 @@ function foo() { { messageId: 'unsafeReturn', data: { - type: 'any', + type: '`any`', }, }, ], @@ -169,7 +169,7 @@ const foo = () => { { messageId: 'unsafeReturn', data: { - type: 'any', + type: '`any`', }, }, ], @@ -180,7 +180,7 @@ const foo = () => { { messageId: 'unsafeReturn', data: { - type: 'any', + type: '`any`', }, }, ], @@ -195,7 +195,7 @@ function foo() { { messageId: 'unsafeReturn', data: { - type: 'any[]', + type: '`any[]`', }, }, ], @@ -210,7 +210,7 @@ function foo() { { messageId: 'unsafeReturn', data: { - type: 'any[]', + type: '`any[]`', }, }, ], @@ -225,7 +225,7 @@ function foo() { { messageId: 'unsafeReturn', data: { - type: 'any[]', + type: '`any[]`', }, }, ], @@ -240,7 +240,7 @@ function foo() { { messageId: 'unsafeReturn', data: { - type: 'any[]', + type: '`any[]`', }, }, ], @@ -255,7 +255,7 @@ const foo = () => { { messageId: 'unsafeReturn', data: { - type: 'any[]', + type: '`any[]`', }, }, ], @@ -266,7 +266,7 @@ const foo = () => { { messageId: 'unsafeReturn', data: { - type: 'any[]', + type: '`any[]`', }, }, ], @@ -427,6 +427,29 @@ foo(() => 'foo' as any); line: 3, column: 11, endColumn: 23, + data:{ + type:'`any`' + } + }, + ], + }, + { + code: ` + let value: NotKnown; + + function example() { + return value; + } + `, + errors: [ + { + messageId: 'unsafeReturn', + line: 5, + column: 9, + endColumn: 22, + data:{ + type:"error" + } }, ], }, From d5250a99e0671216aca131e9033f2bc5c815b9ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=80=E1=85=B5=E1=86=B7=E1=84=89=E1=85=A1=E1=86=BC?= =?UTF-8?q?=E1=84=83=E1=85=AE?= Date: Sun, 9 Jun 2024 22:05:59 +0900 Subject: [PATCH 2/4] fix: data propery add --- .../src/rules/no-unsafe-return.ts | 8 ++++++-- .../tests/rules/no-unsafe-return.test.ts | 18 ++++++++++++------ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/packages/eslint-plugin/src/rules/no-unsafe-return.ts b/packages/eslint-plugin/src/rules/no-unsafe-return.ts index d3d7e392f2b5..ae959627c09d 100644 --- a/packages/eslint-plugin/src/rules/no-unsafe-return.ts +++ b/packages/eslint-plugin/src/rules/no-unsafe-return.ts @@ -137,7 +137,7 @@ export default createRule({ } let messageId: 'unsafeReturn' | 'unsafeReturnThis' = 'unsafeReturn'; - const isErrorType = tsutils.isIntrinsicErrorType(returnNodeType) + const isErrorType = tsutils.isIntrinsicErrorType(returnNodeType); if (!isNoImplicitThis) { // `return this` @@ -157,7 +157,11 @@ export default createRule({ node: reportingNode, messageId, data: { - type: isErrorType?'error':anyType === AnyType.Any ? '`any`' : '`any[]`', + type: isErrorType + ? 'error' + : anyType === AnyType.Any + ? '`any`' + : '`any[]`', }, }); } 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 439fb370e586..5c6d9c431b54 100644 --- a/packages/eslint-plugin/tests/rules/no-unsafe-return.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unsafe-return.test.ts @@ -407,12 +407,18 @@ function bar() { line: 3, column: 3, endColumn: 15, + data: { + type: '`any`', + }, }, { messageId: 'unsafeReturnThis', line: 7, column: 16, endColumn: 20, + data: { + type: '`any`', + }, }, ], }, @@ -427,9 +433,9 @@ foo(() => 'foo' as any); line: 3, column: 11, endColumn: 23, - data:{ - type:'`any`' - } + data: { + type: '`any`', + }, }, ], }, @@ -447,9 +453,9 @@ foo(() => 'foo' as any); line: 5, column: 9, endColumn: 22, - data:{ - type:"error" - } + data: { + type: 'error', + }, }, ], }, From 08b07310c0c751a3591320a267931e02b3d4b425 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=80=E1=85=B5=E1=86=B7=E1=84=89=E1=85=A1=E1=86=BC?= =?UTF-8?q?=E1=84=83=E1=85=AE?= Date: Sun, 9 Jun 2024 22:15:01 +0900 Subject: [PATCH 3/4] fix: lint error --- .../eslint-plugin/tests/rules/no-unsafe-return.test.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 5c6d9c431b54..1b2e1e9fff1e 100644 --- a/packages/eslint-plugin/tests/rules/no-unsafe-return.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unsafe-return.test.ts @@ -441,11 +441,11 @@ foo(() => 'foo' as any); }, { code: ` - let value: NotKnown; +let value: NotKnown; - function example() { - return value; - } +function example() { + return value; +} `, errors: [ { From 4a1e15b7e793ba4e016054f68c6bd7432e999b09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=80=E1=85=B5=E1=86=B7=E1=84=89=E1=85=A1=E1=86=BC?= =?UTF-8?q?=E1=84=83=E1=85=AE?= Date: Sun, 9 Jun 2024 22:30:49 +0900 Subject: [PATCH 4/4] fix: lint error --- packages/eslint-plugin/tests/rules/no-unsafe-return.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 1b2e1e9fff1e..dc5e1df369d6 100644 --- a/packages/eslint-plugin/tests/rules/no-unsafe-return.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unsafe-return.test.ts @@ -451,8 +451,8 @@ function example() { { messageId: 'unsafeReturn', line: 5, - column: 9, - endColumn: 22, + column: 3, + endColumn: 16, data: { type: 'error', },