From 130a11a6870d9e702679bce17656a856c224dddc Mon Sep 17 00:00:00 2001 From: Joshua Chen Date: Mon, 2 Oct 2023 11:56:01 -0400 Subject: [PATCH] fix(eslint-plugin): [no-unsafe-member-access] report on only the accessed property --- .../src/rules/no-unsafe-member-access.ts | 2 +- .../rules/no-unsafe-member-access.test.ts | 67 +++++++++++++++++-- 2 files changed, 64 insertions(+), 5 deletions(-) diff --git a/packages/eslint-plugin/src/rules/no-unsafe-member-access.ts b/packages/eslint-plugin/src/rules/no-unsafe-member-access.ts index a5a8d3c6c4b..52654b08d84 100644 --- a/packages/eslint-plugin/src/rules/no-unsafe-member-access.ts +++ b/packages/eslint-plugin/src/rules/no-unsafe-member-access.ts @@ -84,7 +84,7 @@ export default util.createRule({ } context.report({ - node, + node: node.property, messageId, data: { property: node.computed ? `[${propertyName}]` : `.${propertyName}`, diff --git a/packages/eslint-plugin/tests/rules/no-unsafe-member-access.test.ts b/packages/eslint-plugin/tests/rules/no-unsafe-member-access.test.ts index 8298cec6ceb..367ae0c6e3c 100644 --- a/packages/eslint-plugin/tests/rules/no-unsafe-member-access.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unsafe-member-access.test.ts @@ -81,6 +81,9 @@ function foo(x: any) { errors: [ { messageId: 'unsafeMemberExpression', + line: 3, + column: 5, + endColumn: 6, data: { property: '.a', }, @@ -96,6 +99,9 @@ function foo(x: any) { errors: [ { messageId: 'unsafeMemberExpression', + line: 3, + column: 5, + endColumn: 6, data: { property: '.a', }, @@ -111,6 +117,9 @@ function foo(x: { a: any }) { errors: [ { messageId: 'unsafeMemberExpression', + line: 3, + column: 7, + endColumn: 8, data: { property: '.b', }, @@ -126,6 +135,9 @@ function foo(x: any) { errors: [ { messageId: 'unsafeMemberExpression', + line: 3, + column: 5, + endColumn: 8, data: { property: "['a']", }, @@ -141,6 +153,9 @@ function foo(x: any) { errors: [ { messageId: 'unsafeMemberExpression', + line: 3, + column: 5, + endColumn: 8, data: { property: "['a']", }, @@ -156,6 +171,9 @@ function foo(x: { a: number }, y: any) { errors: [ { messageId: 'unsafeComputedMemberAccess', + line: 3, + column: 5, + endColumn: 6, data: { property: '[y]', }, @@ -171,6 +189,9 @@ function foo(x?: { a: number }, y: any) { errors: [ { messageId: 'unsafeComputedMemberAccess', + line: 3, + column: 7, + endColumn: 8, data: { property: '[y]', }, @@ -186,6 +207,9 @@ function foo(x: { a: number }, y: any) { errors: [ { messageId: 'unsafeComputedMemberAccess', + line: 3, + column: 6, + endColumn: 12, data: { property: '[y += 1]', }, @@ -201,6 +225,9 @@ function foo(x: { a: number }, y: any) { errors: [ { messageId: 'unsafeComputedMemberAccess', + line: 3, + column: 5, + endColumn: 13, data: { property: '[1 as any]', }, @@ -216,6 +243,9 @@ function foo(x: { a: number }, y: any) { errors: [ { messageId: 'unsafeComputedMemberAccess', + line: 3, + column: 5, + endColumn: 8, data: { property: '[y()]', }, @@ -231,6 +261,9 @@ function foo(x: string[], y: any) { errors: [ { messageId: 'unsafeComputedMemberAccess', + line: 3, + column: 5, + endColumn: 6, data: { property: '[y]', }, @@ -260,22 +293,48 @@ const methods = { { messageId: 'unsafeThisMemberExpression', line: 4, - column: 12, + column: 17, endColumn: 24, }, { messageId: 'unsafeThisMemberExpression', line: 8, - column: 12, - endColumn: 31, + column: 17, + endColumn: 30, }, { messageId: 'unsafeThisMemberExpression', line: 14, - column: 13, + column: 19, endColumn: 26, }, ], }, + { + code: ` +class C { + getObs$: any; + getPopularDepartments(): void { + this.getObs$.pipe().subscribe(res => { + console.log(res); + }); + } +} + `, + errors: [ + { + messageId: 'unsafeMemberExpression', + line: 5, + column: 18, + endColumn: 22, + }, + { + messageId: 'unsafeMemberExpression', + line: 5, + column: 25, + endColumn: 34, + }, + ], + }, ], });