From c52fb1550ed8b29f666b17a3492df5f9392fc7f3 Mon Sep 17 00:00:00 2001 From: Hailey Smith Date: Tue, 10 Nov 2020 17:03:12 -0800 Subject: [PATCH 1/2] fix: add unit tests and update selector --- packages/eslint-plugin/src/rules/no-unsafe-member-access.ts | 3 ++- .../tests/rules/no-unsafe-member-access.test.ts | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) 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 e0bb605f0f15..3a00ac1bd15a 100644 --- a/packages/eslint-plugin/src/rules/no-unsafe-member-access.ts +++ b/packages/eslint-plugin/src/rules/no-unsafe-member-access.ts @@ -71,7 +71,8 @@ export default util.createRule({ } return { - MemberExpression: checkMemberExpression, + // ignore MemberExpression if it's parent is TSClassImplements or TSInterfaceHeritage + 'MemberExpression:not(TSClassImplements > MemberExpression):not(TSInterfaceHeritage > MemberExpression)': checkMemberExpression, 'MemberExpression[computed = true] > *.property'( node: TSESTree.Expression, ): void { 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 bf6ff85c121d..a9c21f8712b9 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 @@ -66,6 +66,12 @@ function foo(x?: string[]) { x?.[(1 as any)++]; } `, + ` +class B implements FG.A {} + `, + ` +interface B extends FG.A {} + `, ], invalid: [ ...batchedSingleLineTests({ From 1d14d408552cbc3b9840733948475a7fa544bbd5 Mon Sep 17 00:00:00 2001 From: Hailey Smith Date: Tue, 10 Nov 2020 22:07:25 -0800 Subject: [PATCH 2/2] fix: simplify selector --- packages/eslint-plugin/src/rules/no-unsafe-member-access.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 3a00ac1bd15a..b326c754136b 100644 --- a/packages/eslint-plugin/src/rules/no-unsafe-member-access.ts +++ b/packages/eslint-plugin/src/rules/no-unsafe-member-access.ts @@ -72,7 +72,7 @@ export default util.createRule({ return { // ignore MemberExpression if it's parent is TSClassImplements or TSInterfaceHeritage - 'MemberExpression:not(TSClassImplements > MemberExpression):not(TSInterfaceHeritage > MemberExpression)': checkMemberExpression, + ':not(TSClassImplements, TSInterfaceHeritage) > MemberExpression': checkMemberExpression, 'MemberExpression[computed = true] > *.property'( node: TSESTree.Expression, ): void {