@@ -1011,7 +1011,11 @@ private void collectUsedFragmentsInDefinition(Set<String> result, String fragmen
10111011
10121012 // --- OverlappingFieldsCanBeMerged ---
10131013 private void validateOverlappingFieldsCanBeMerged (OperationDefinition operationDefinition ) {
1014- overlappingFieldsImpl (operationDefinition .getSelectionSet (), validationContext .getOutputType ());
1014+ SelectionSet selectionSet = operationDefinition .getSelectionSet ();
1015+ if (selectionSet == null ) {
1016+ return ;
1017+ }
1018+ overlappingFieldsImpl (selectionSet , validationContext .getOutputType ());
10151019 }
10161020
10171021 private void overlappingFieldsImpl (SelectionSet selectionSet , @ Nullable GraphQLOutputType graphQLOutputType ) {
@@ -1557,7 +1561,7 @@ private void validateUniqueOperationNames(OperationDefinition operationDefinitio
15571561 return ;
15581562 }
15591563 if (operationNames .contains (name )) {
1560- String message = i18n (DuplicateOperationName , "UniqueOperationNames.oneOperation" , operationDefinition . getName () );
1564+ String message = i18n (DuplicateOperationName , "UniqueOperationNames.oneOperation" , name );
15611565 addError (DuplicateOperationName , operationDefinition .getSourceLocation (), message );
15621566 } else {
15631567 operationNames .add (name );
@@ -1646,14 +1650,19 @@ private void validateSubscriptionUniqueRootField(OperationDefinition operationDe
16461650 .objectType (subscriptionType )
16471651 .graphQLContext (validationContext .getGraphQLContext ())
16481652 .build ();
1649- MergedSelectionSet fields = fieldCollector .collectFields (collectorParameters , operationDef .getSelectionSet ());
1653+ SelectionSet selectionSet = operationDef .getSelectionSet ();
1654+ if (selectionSet == null ) {
1655+ return ;
1656+ }
1657+ String opName = operationDef .getName () != null ? operationDef .getName () : "" ;
1658+ MergedSelectionSet fields = fieldCollector .collectFields (collectorParameters , selectionSet );
16501659 if (fields .size () > 1 ) {
1651- String message = i18n (SubscriptionMultipleRootFields , "SubscriptionUniqueRootField.multipleRootFields" , operationDef . getName () );
1660+ String message = i18n (SubscriptionMultipleRootFields , "SubscriptionUniqueRootField.multipleRootFields" , opName );
16521661 addError (SubscriptionMultipleRootFields , operationDef .getSourceLocation (), message );
16531662 } else {
16541663 MergedField mergedField = fields .getSubFieldsList ().get (0 );
16551664 if (isIntrospectionField (mergedField )) {
1656- String message = i18n (SubscriptionIntrospectionRootField , "SubscriptionIntrospectionRootField.introspectionRootField" , operationDef . getName () , mergedField .getName ());
1665+ String message = i18n (SubscriptionIntrospectionRootField , "SubscriptionIntrospectionRootField.introspectionRootField" , opName , mergedField .getName ());
16571666 addError (SubscriptionIntrospectionRootField , mergedField .getSingleField ().getSourceLocation (), message );
16581667 }
16591668 }
0 commit comments