33
44
55class NoUnusedFragments (ValidationRule ):
6- __slots__ = 'fragment_definitions' , 'spreads_within_operation ' , 'fragment_adjacencies' , 'spread_names'
6+ __slots__ = 'fragment_definitions' , 'operation_definitions ' , 'fragment_adjacencies' , 'spread_names'
77
88 def __init__ (self , context ):
99 super (NoUnusedFragments , self ).__init__ (context )
10- self .spreads_within_operation = []
10+ self .operation_definitions = []
1111 self .fragment_definitions = []
1212
1313 def enter_OperationDefinition (self , node , key , parent , path , ancestors ):
14- self .spreads_within_operation .append (self . context . get_fragment_spreads ( node ) )
14+ self .operation_definitions .append (node )
1515 return False
1616
1717 def enter_FragmentDefinition (self , node , key , parent , path , ancestors ):
@@ -21,19 +21,10 @@ def enter_FragmentDefinition(self, node, key, parent, path, ancestors):
2121 def leave_Document (self , node , key , parent , path , ancestors ):
2222 fragment_names_used = set ()
2323
24- def reduce_spread_fragments (spreads ):
25- for spread in spreads :
26- frag_name = spread .name .value
27- if frag_name in fragment_names_used :
28- continue
29-
30- fragment_names_used .add (frag_name )
31- fragment = self .context .get_fragment (frag_name )
32- if fragment :
33- reduce_spread_fragments (self .context .get_fragment_spreads (fragment ))
34-
35- for spreads in self .spreads_within_operation :
36- reduce_spread_fragments (spreads )
24+ for operation in self .operation_definitions :
25+ fragments = self .context .get_recursively_referenced_fragments (operation )
26+ for fragment in fragments :
27+ fragment_names_used .add (fragment .name .value )
3728
3829 errors = [
3930 GraphQLError (
0 commit comments