From 660bc99b7b2ef0a91c727c03d2fc08ca8379f872 Mon Sep 17 00:00:00 2001 From: Gareth Jones Date: Sun, 2 Aug 2020 23:10:21 +1200 Subject: [PATCH] Remove unneeded checks (#638) * chore: simplify checks with optional chaining * chore: mark `parent` as always defined on `ExpectMember` * chore: action todo * chore(valid-expect): use explict check instead of optional chain --- src/rules/prefer-to-have-length.ts | 3 +-- src/rules/require-to-throw-message.ts | 4 +--- src/rules/utils.ts | 7 +++---- src/rules/valid-expect.ts | 5 ++--- 4 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/rules/prefer-to-have-length.ts b/src/rules/prefer-to-have-length.ts index f0bd52939..4da493aff 100644 --- a/src/rules/prefer-to-have-length.ts +++ b/src/rules/prefer-to-have-length.ts @@ -40,8 +40,7 @@ export default createRule({ if ( !matcher || !isParsedEqualityMatcherCall(matcher) || - !argument || - argument.type !== AST_NODE_TYPES.MemberExpression || + argument?.type !== AST_NODE_TYPES.MemberExpression || !isSupportedAccessor(argument.property, 'length') || argument.property.type !== AST_NODE_TYPES.Identifier ) { diff --git a/src/rules/require-to-throw-message.ts b/src/rules/require-to-throw-message.ts index 8a5a38e89..0e0978002 100644 --- a/src/rules/require-to-throw-message.ts +++ b/src/rules/require-to-throw-message.ts @@ -30,9 +30,7 @@ export default createRule({ const { matcher, modifier } = parseExpectCall(node); if ( - matcher && - matcher.arguments && - matcher.arguments.length === 0 && + matcher?.arguments?.length === 0 && ['toThrow', 'toThrowError'].includes(matcher.name) && (!modifier || !(modifier.name === ModifierName.not || modifier.negation)) diff --git a/src/rules/utils.ts b/src/rules/utils.ts index 3fac9f46f..107675d81 100644 --- a/src/rules/utils.ts +++ b/src/rules/utils.ts @@ -300,11 +300,10 @@ interface ParsedExpectMember< * Represents a `MemberExpression` that comes after an `ExpectCall`. */ interface ExpectMember< - PropertyName extends ExpectPropertyName = ExpectPropertyName, - Parent extends TSESTree.Node | undefined = TSESTree.Node | undefined + PropertyName extends ExpectPropertyName = ExpectPropertyName > extends KnownMemberExpression { object: ExpectCall | ExpectMember; - parent: Parent; + parent: TSESTree.Node; } export const isExpectMember = < @@ -326,7 +325,7 @@ export type ParsedEqualityMatcherCall< Argument extends TSESTree.Expression = TSESTree.Expression, Matcher extends EqualityMatcher = EqualityMatcher > = Omit, 'arguments'> & { - // todo: probs should also type node parent as CallExpression + parent: TSESTree.CallExpression; arguments: [Argument]; }; diff --git a/src/rules/valid-expect.ts b/src/rules/valid-expect.ts index 7f658a8dc..2869ecc64 100644 --- a/src/rules/valid-expect.ts +++ b/src/rules/valid-expect.ts @@ -230,7 +230,7 @@ export default createRule< return; } - if (matcher.node.parent && isExpectMember(matcher.node.parent)) { + if (isExpectMember(matcher.node.parent)) { context.report({ messageId: 'modifierUnknown', data: { modifierName: matcher.name }, @@ -250,9 +250,8 @@ export default createRule< const parentNode = matcher.node.parent; if ( - !modifier || - !parentNode || !parentNode.parent || + !modifier || modifier.name === ModifierName.not ) { return;