@@ -7,34 +7,30 @@ class NoUnusedFragments(ValidationRule):
7
7
8
8
def __init__ (self , context ):
9
9
super (NoUnusedFragments , self ).__init__ (context )
10
- self .fragment_definitions = []
11
10
self .spreads_within_operation = []
12
- self .fragment_adjacencies = {}
13
- self .spread_names = set ()
11
+ self .fragment_definitions = []
14
12
15
13
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
18
16
19
17
def enter_FragmentDefinition (self , node , key , parent , path , ancestors ):
20
18
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
26
20
27
21
def leave_Document (self , node , key , parent , path , ancestors ):
28
22
fragment_names_used = set ()
29
23
30
24
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 :
33
28
continue
34
29
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 ))
38
34
39
35
for spreads in self .spreads_within_operation :
40
36
reduce_spread_fragments (spreads )
0 commit comments