From e82698c0ec796e460e40c3dd90a30bd100db05c2 Mon Sep 17 00:00:00 2001 From: Daniil Dubrava Date: Thu, 5 Nov 2020 04:28:04 +0300 Subject: [PATCH] fix(eslint-plugin): [no-extra-non-null-assertion] false positive with non-nullable computed key (#2737) --- .../src/rules/no-extra-non-null-assertion.ts | 2 +- .../tests/rules/no-extra-non-null-assertion.test.ts | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/eslint-plugin/src/rules/no-extra-non-null-assertion.ts b/packages/eslint-plugin/src/rules/no-extra-non-null-assertion.ts index b0b4921dfaf..b58edd99ed6 100644 --- a/packages/eslint-plugin/src/rules/no-extra-non-null-assertion.ts +++ b/packages/eslint-plugin/src/rules/no-extra-non-null-assertion.ts @@ -32,7 +32,7 @@ export default util.createRule({ return { 'TSNonNullExpression > TSNonNullExpression': checkExtraNonNullAssertion, - 'MemberExpression[optional = true] > TSNonNullExpression': checkExtraNonNullAssertion, + 'MemberExpression[optional = true] > TSNonNullExpression.object': checkExtraNonNullAssertion, 'CallExpression[optional = true] > TSNonNullExpression.callee': checkExtraNonNullAssertion, }; }, diff --git a/packages/eslint-plugin/tests/rules/no-extra-non-null-assertion.test.ts b/packages/eslint-plugin/tests/rules/no-extra-non-null-assertion.test.ts index 8afbbcf072f..39ad4da3ebf 100644 --- a/packages/eslint-plugin/tests/rules/no-extra-non-null-assertion.test.ts +++ b/packages/eslint-plugin/tests/rules/no-extra-non-null-assertion.test.ts @@ -33,6 +33,15 @@ function foo(bar?: { n: number }) { checksCounter?.textContent!.trim(); `, }, + // https://github.com/typescript-eslint/typescript-eslint/issues/2732 + { + code: ` +function foo(key: string | null) { + const obj = {}; + return obj?.[key!]; +} + `, + }, ], invalid: [ {