55 * are used, either directly or within a spread fragment.
66 */
77func NoUnusedVariablesRule( context: ValidationContext ) -> Visitor {
8- var variableDefs : [ VariableDefinition ] = [ ]
9-
108 return Visitor (
11- enter: { node, _, _, _, _ in
12- if node is OperationDefinition {
13- variableDefs = [ ]
14- return . continue
15- }
16-
17- if let def = node as? VariableDefinition {
18- variableDefs. append ( def)
19- return . continue
20- }
21-
22- return . continue
9+ enter: { _, _, _, _, _ in
10+ . continue
2311 } ,
2412 leave: { node, _, _, _, _ -> VisitResult in
2513 guard let operation = node as? OperationDefinition else {
2614 return . continue
2715 }
2816
29- var variableNameUsed : [ String : Bool ] = [ : ]
3017 let usages = context. getRecursiveVariableUsages ( operation: operation)
18+ let variableNameUsed = Set ( usages. map { usage in
19+ usage. node. name. value
20+ } )
3121
32- for usage in usages {
33- variableNameUsed [ usage. node. name. value] = true
34- }
35-
36- for variableDef in variableDefs {
22+ for variableDef in operation. variableDefinitions {
3723 let variableName = variableDef. variable. name. value
38-
39- if variableNameUsed [ variableName] != true {
24+ if !variableNameUsed. contains ( variableName) {
4025 context. report (
4126 error: GraphQLError (
4227 message: operation. name. map {
@@ -47,7 +32,6 @@ func NoUnusedVariablesRule(context: ValidationContext) -> Visitor {
4732 )
4833 }
4934 }
50-
5135 return . continue
5236 }
5337 )
0 commit comments