@@ -51,6 +51,7 @@ import type {
5151import type { ExecutionResult } from './Executor.ts' ;
5252import { Executor } from './Executor.ts' ;
5353import { ExecutorThrowingOnIncremental } from './ExecutorThrowingOnIncremental.ts' ;
54+ import type { GraphQLVariableSignature } from './getVariableSignature.ts' ;
5455import { getVariableSignature } from './getVariableSignature.ts' ;
5556import type { ExperimentalIncrementalExecutionResults } from './incremental/IncrementalExecutor.ts' ;
5657import { IncrementalExecutor } from './incremental/IncrementalExecutor.ts' ;
@@ -744,6 +745,7 @@ export function validateExecutionArgs(
744745 const fragmentDefinitions : ObjMap < FragmentDefinitionNode > =
745746 Object . create ( null ) ;
746747 const fragments : ObjMap < FragmentDetails > = Object . create ( null ) ;
748+ const fragmentVariableSignatureErrors : Array < GraphQLError > = [ ] ;
747749 for ( const definition of document . definitions ) {
748750 switch ( definition . kind ) {
749751 case Kind . OPERATION_DEFINITION :
@@ -764,11 +766,17 @@ export function validateExecutionArgs(
764766 fragmentDefinitions [ definition . name . value ] = definition ;
765767 let variableSignatures ;
766768 if ( definition . variableDefinitions ) {
767- variableSignatures = Object . create ( null ) ;
769+ const signatures : ObjMap < GraphQLVariableSignature > =
770+ Object . create ( null ) ;
768771 for ( const varDef of definition . variableDefinitions ) {
769772 const signature = getVariableSignature ( schema , varDef ) ;
770- variableSignatures [ signature . name ] = signature ;
773+ if ( signature instanceof GraphQLError ) {
774+ fragmentVariableSignatureErrors . push ( signature ) ;
775+ continue ;
776+ }
777+ signatures [ signature . name ] = signature ;
771778 }
779+ variableSignatures = signatures ;
772780 }
773781 fragments [ definition . name . value ] = { definition, variableSignatures } ;
774782 break ;
@@ -785,6 +793,10 @@ export function validateExecutionArgs(
785793 return [ new GraphQLError ( 'Must provide an operation.' ) ] ;
786794 }
787795
796+ if ( fragmentVariableSignatureErrors . length > 0 ) {
797+ return fragmentVariableSignatureErrors ;
798+ }
799+
788800 const variableDefinitions = operation . variableDefinitions ?? [ ] ;
789801 const hideSuggestions = args . hideSuggestions ?? false ;
790802
0 commit comments