@@ -620,6 +620,7 @@ const hasNonEmptyResolverCall = (node, resolverName) => {
620620
621621 return hasNonEmptyResolverCall(node.body, resolverName);
622622 }
623+ case 'LabeledStatement':
623624 case 'WhileStatement':
624625 case 'DoWhileStatement':
625626 case 'ForStatement':
@@ -664,32 +665,46 @@ const hasNonEmptyResolverCall = (node, resolverName) => {
664665 }
665666
666667 case 'ArrayExpression':
667- return node.elements.some((bodyNode ) => {
668- return hasNonEmptyResolverCall(bodyNode , resolverName);
668+ return node.elements.some((element ) => {
669+ return hasNonEmptyResolverCall(element , resolverName);
669670 });
670671
672+ case 'ObjectExpression':
673+ return node.properties.some((property) => {
674+ return hasNonEmptyResolverCall(property, resolverName);
675+ });
676+ case 'Property':
677+ return node.computed && hasNonEmptyResolverCall(node.key, resolverName) ||
678+ hasNonEmptyResolverCall(node.value, resolverName);
679+
671680 case 'AwaitExpression':
672681 case 'SpreadElement':
673682 case 'UnaryExpression':
674683 case 'YieldExpression':
675684 return hasNonEmptyResolverCall(node.argument, resolverName);
676685
686+ case 'VariableDeclaration': {
687+ return node.declarations.some((nde) => {
688+ return hasNonEmptyResolverCall(nde, resolverName);
689+ });
690+ }
691+ case 'VariableDeclarator': {
692+ // Todo: Check ` id ` too once ` ArrayPattern ` is implemented (destructuring default)
693+ return hasNonEmptyResolverCall(node.init, resolverName);
694+ }
695+
677696 /*
678- case 'LabeledStatement':
679- case 'VariableDeclaration':
697+ // Todo: As relevant, also check these in return/throw and yield checks
680698
681699 case 'MemberExpression': case 'OptionalMemberExpression': // ?.
682- case 'OptionalCallExpression': ?.x()
700+ case 'OptionalCallExpression': ?.x(resolve )
683701
684702 case 'TaggedTemplateExpression':
685703 case 'TemplateElement': case 'TemplateLiteral':
686704
687- case 'AssignmentPattern':
705+ case 'AssignmentPattern': // Default destructuring value
688706 case 'ArrayPattern': case 'ObjectPattern':
689707
690- case 'ObjectExpression':
691- case 'Property':
692-
693708 case 'ClassProperty':
694709 case 'ClassDeclaration': case 'ClassExpression': case 'MethodDefinition':
695710 case 'Super':
@@ -803,6 +818,7 @@ const hasYieldValue = (node, checkYieldReturnValue) => {
803818 });
804819 }
805820 case 'VariableDeclarator': {
821+ // Todo: Check ` id ` too once ` ArrayPattern ` is implemented (destructuring default)
806822 return hasYieldValue(node.init, checkYieldReturnValue);
807823 }
808824 case 'YieldExpression': {
0 commit comments