From 29a01b801063f661c396980810ffbebfd54a8fce Mon Sep 17 00:00:00 2001 From: Alexander T Date: Wed, 28 Aug 2019 21:30:23 +0300 Subject: [PATCH] fix(eslint-plugin): [unbound-method] false positive in equality comparisons (#914) --- packages/eslint-plugin/src/rules/unbound-method.ts | 3 +++ .../eslint-plugin/tests/rules/unbound-method.test.ts | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/packages/eslint-plugin/src/rules/unbound-method.ts b/packages/eslint-plugin/src/rules/unbound-method.ts index 8be7a842c46..46bbe779c66 100644 --- a/packages/eslint-plugin/src/rules/unbound-method.ts +++ b/packages/eslint-plugin/src/rules/unbound-method.ts @@ -123,6 +123,9 @@ function isSafeUse(node: TSESTree.Node): boolean { case AST_NODE_TYPES.UnaryExpression: return parent.operator === 'typeof'; + case AST_NODE_TYPES.BinaryExpression: + return ['instanceof', '==', '!=', '===', '!=='].includes(parent.operator); + case AST_NODE_TYPES.TSNonNullExpression: case AST_NODE_TYPES.TSAsExpression: case AST_NODE_TYPES.TSTypeAssertion: diff --git a/packages/eslint-plugin/tests/rules/unbound-method.test.ts b/packages/eslint-plugin/tests/rules/unbound-method.test.ts index 2c0d1aaf188..520b28fc1d1 100644 --- a/packages/eslint-plugin/tests/rules/unbound-method.test.ts +++ b/packages/eslint-plugin/tests/rules/unbound-method.test.ts @@ -52,15 +52,27 @@ instance.unbound\`\`; if (instance.bound) { } if (instance.unbound) { } +if (instance.bound !== undefined) { } +if (instance.unbound !== undefined) { } + if (ContainsMethods.boundStatic) { } if (ContainsMethods.unboundStatic) { } +if (ContainsMethods.boundStatic !== undefined) { } +if (ContainsMethods.unboundStatic !== undefined) { } + while (instance.bound) { } while (instance.unbound) { } +while (instance.bound !== undefined) { } +while (instance.unbound !== undefined) { } + while (ContainsMethods.boundStatic) { } while (ContainsMethods.unboundStatic) { } +while (ContainsMethods.boundStatic !== undefined) { } +while (ContainsMethods.unboundStatic !== undefined) { } + instance.bound as any; ContainsMethods.boundStatic as any;