@@ -7,34 +7,30 @@ class NoUnusedFragments(ValidationRule):
77
88 def __init__ (self , context ):
99 super (NoUnusedFragments , self ).__init__ (context )
10- self .fragment_definitions = []
1110 self .spreads_within_operation = []
12- self .fragment_adjacencies = {}
13- self .spread_names = set ()
11+ self .fragment_definitions = []
1412
1513 def enter_OperationDefinition (self , node , key , parent , path , ancestors ):
16- self .spread_names = set ( )
17- self . spreads_within_operation . append ( self . spread_names )
14+ self .spreads_within_operation . append ( self . context . get_fragment_spreads ( node ) )
15+ return False
1816
1917 def enter_FragmentDefinition (self , node , key , parent , path , ancestors ):
2018 self .fragment_definitions .append (node )
21- self .spread_names = set ()
22- self .fragment_adjacencies [node .name .value ] = self .spread_names
23-
24- def enter_FragmentSpread (self , node , key , parent , path , ancestors ):
25- self .spread_names .add (node .name .value )
19+ return False
2620
2721 def leave_Document (self , node , key , parent , path , ancestors ):
2822 fragment_names_used = set ()
2923
3024 def reduce_spread_fragments (spreads ):
31- for fragment_name in spreads :
32- if fragment_name in fragment_names_used :
25+ for spread in spreads :
26+ frag_name = spread .name .value
27+ if frag_name in fragment_names_used :
3328 continue
3429
35- fragment_names_used .add (fragment_name )
36- if fragment_name in self .fragment_adjacencies :
37- reduce_spread_fragments (self .fragment_adjacencies [fragment_name ])
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 ))
3834
3935 for spreads in self .spreads_within_operation :
4036 reduce_spread_fragments (spreads )
0 commit comments