@@ -24,7 +24,7 @@ defmodule GraphQL.Lang.AST.TypeInfoVisitor do
2424 old_type_info = var! ( accumulator ) [ :type_info ]
2525 new_type_info = % TypeInfo { old_type_info |
2626 unquote ( stack_name ) => Stack . push ( old_type_info . unquote ( stack_name ) , unquote ( value ) ) }
27- var! ( accumulator ) = put_in ( var! ( accumulator ) [ :type_info ] , new_type_info )
27+ put_in ( var! ( accumulator ) [ :type_info ] , new_type_info )
2828 end
2929 end
3030
@@ -33,30 +33,26 @@ defmodule GraphQL.Lang.AST.TypeInfoVisitor do
3333 old_type_info = var! ( accumulator ) [ :type_info ]
3434 new_type_info = % TypeInfo { old_type_info |
3535 unquote ( stack_name ) => Stack . pop ( old_type_info . unquote ( stack_name ) ) }
36- var! ( accumulator ) = put_in ( var! ( accumulator ) [ :type_info ] , new_type_info )
36+ put_in ( var! ( accumulator ) [ :type_info ] , new_type_info )
3737 end
3838 end
3939
40- defmacrop set_directive ( directive ) do
41- quote do
42- var! ( accumulator ) = put_in (
43- var! ( accumulator ) [ :type_info ] ,
44- % TypeInfo { var! ( accumulator ) [ :type_info ] | directive: unquote ( directive ) }
45- )
46- end
40+ def set_directive ( accumulator , directive ) do
41+ put_in (
42+ accumulator [ :type_info ] ,
43+ % TypeInfo { accumulator [ :type_info ] | directive: directive }
44+ )
4745 end
4846
49- defmacrop set_argument ( argument ) do
50- quote do
51- var! ( accumulator ) = put_in (
52- var! ( accumulator ) [ :type_info ] ,
53- % TypeInfo { var! ( accumulator ) [ :type_info ] | argument: unquote ( argument ) }
54- )
55- end
47+ def set_argument ( accumulator , argument ) do
48+ put_in (
49+ accumulator [ :type_info ] ,
50+ % TypeInfo { accumulator [ :type_info ] | argument: argument }
51+ )
5652 end
5753
5854 def enter ( _visitor , node , accumulator ) do
59- case node . kind do
55+ accumulator = case node . kind do
6056 :SelectionSet ->
6157 type = TypeInfo . type ( accumulator [ :type_info ] )
6258 named_type = TypeInfo . named_type ( type )
@@ -74,10 +70,10 @@ defmodule GraphQL.Lang.AST.TypeInfoVisitor do
7470 node
7571 )
7672 field_def_type = if field_def , do: field_def . type , else: nil
77- stack_push ( :field_def_stack , field_def )
73+ accumulator = stack_push ( :field_def_stack , field_def )
7874 stack_push ( :type_stack , field_def_type )
7975 else
80- stack_push ( :field_def_stack , nil )
76+ accumulator = stack_push ( :field_def_stack , nil )
8177 stack_push ( :type_stack , nil )
8278 end
8379 :Directive ->
@@ -89,7 +85,7 @@ defmodule GraphQL.Lang.AST.TypeInfoVisitor do
8985 #this._directive = schema.getDirective(node.name.value); // JS example
9086 # and set it like this
9187 #set_directive(directive_def)
92- set_directive ( nil )
88+ set_directive ( accumulator , nil )
9389 :OperationDefinition ->
9490 type = case node . operation do
9591 :query -> accumulator [ :type_info ] . schema . query
@@ -115,15 +111,15 @@ defmodule GraphQL.Lang.AST.TypeInfoVisitor do
115111 Map . get ( field_or_directive , :arguments , % { } ) ,
116112 fn ( arg ) -> arg == node . name . value end
117113 )
118- set_argument ( arg_def )
114+ accumulator = set_argument ( accumulator , arg_def )
119115 stack_push ( :input_type_stack , ( if arg_def && Map . has_key? ( arg_def , :type ) , do: arg_def . type , else: nil ) )
120116 else
121- set_argument ( nil )
117+ accumulator = set_argument ( accumulator , nil )
122118 stack_push ( :input_type_stack , nil )
123119 end
124120 :List ->
125121 input_type = TypeInfo . input_type ( accumulator [ :type_info ] )
126- list_type = TypeInfo . nullable_type ( accumulator [ :type_info ] , input_type )
122+ list_type = TypeInfo . named_type ( input_type )
127123 if % Type.List { } === list_type do
128124 stack_push ( :input_type_stack , list_type . ofType )
129125 else
@@ -144,7 +140,7 @@ defmodule GraphQL.Lang.AST.TypeInfoVisitor do
144140 stack_push ( :input_type_stack , nil )
145141 end
146142 _ ->
147- :ignore
143+ accumulator
148144 end
149145 { :continue , accumulator }
150146 end
@@ -154,20 +150,19 @@ defmodule GraphQL.Lang.AST.TypeInfoVisitor do
154150 :SelectionSet ->
155151 stack_pop ( :parent_type_stack )
156152 :Field ->
157- stack_pop ( :field_def_stack )
153+ accumulator = stack_pop ( :field_def_stack )
158154 stack_pop ( :type_stack )
159155 :Directive ->
160- set_directive ( nil )
156+ set_directive ( accumulator , nil )
161157 kind when kind in [ :OperationDefinition , :InlineFragment , :FragmentDefinition ] ->
162158 stack_pop ( :type_stack )
163159 :Argument ->
164- set_argument ( nil )
160+ set_argument ( accumulator , nil )
165161 kind when kind in [ :List , :ObjectField , :VariableDefinition ] ->
166162 stack_pop ( :input_type_stack )
167163 _ ->
168- :ignore
164+ accumulator
169165 end
170- accumulator
171166 end
172167 end
173168end
0 commit comments