@@ -113,7 +113,7 @@ def argument_value(argument_values, argument_key, argument_definition, arg_value
113113 end
114114
115115 if treat_as_type . kind . list? && !arg_value . nil?
116- inner_t = treat_as_type . unwrap
116+ inner_t = treat_as_type . of_type
117117 arg_value = if arg_value . is_a? ( Array )
118118 values = Array . new ( arg_value . size )
119119 arg_value . each_with_index { |inner_v , idx | argument_value ( values , idx , argument_definition , inner_v , inner_t , field_resolve_step ) }
@@ -221,24 +221,40 @@ def value_from_ast(value_node, type)
221221
222222 elsif type . kind . input_object?
223223 coerced_obj = { }
224- arg_nodes_by_name = value_node . arguments . each_with_object ( { } ) do |arg_node , acc | # rubocop:disable Development/ContextIsPassedCop
225- acc [ arg_node . name ] = arg_node
226- end
227-
228- @query . types . arguments ( type ) . each do |arg |
229- arg_node = arg_nodes_by_name [ arg . graphql_name ]
230- arg_key = arg . keyword
231- if arg_node . nil? || ( arg_node . value . is_a? ( Language ::Nodes ::VariableIdentifier ) && !variable_values . key? ( arg_node . value . name ) )
232- if arg . default_value?
233- coerced_obj [ arg_key ] = arg . default_value
224+ if value_node . is_a? ( Hash )
225+ @query . types . arguments ( type ) . each do |arg |
226+ arg_value = value_node [ arg . keyword ]
227+ arg_key = arg . keyword
228+ if arg_value . nil?
229+ if arg . default_value?
230+ coerced_obj [ arg_key ] = arg . default_value
231+ end
232+ next
234233 end
235- next
234+
235+ coerced_obj [ arg_key ] = value_from_ast ( arg_value , arg . type )
236+ end
237+ else
238+ arg_nodes_by_name = value_node . arguments . each_with_object ( { } ) do |arg_node , acc | # rubocop:disable Development/ContextIsPassedCop
239+ acc [ arg_node . name ] = arg_node
236240 end
237241
238- arg_value = value_from_ast ( arg_node . value , arg . type )
239- coerced_obj [ arg_key ] = arg_value
242+ @query . types . arguments ( type ) . each do |arg |
243+ arg_node = arg_nodes_by_name [ arg . graphql_name ]
244+ arg_key = arg . keyword
245+ if arg_node . nil? || ( arg_node . value . is_a? ( Language ::Nodes ::VariableIdentifier ) && !variable_values . key? ( arg_node . value . name ) )
246+ if arg . default_value?
247+ coerced_obj [ arg_key ] = arg . default_value
248+ end
249+ next
250+ end
251+
252+ arg_value = value_from_ast ( arg_node . value , arg . type )
253+ coerced_obj [ arg_key ] = arg_value
254+ end
240255 end
241256
257+
242258 coerced_obj
243259 elsif type . kind . leaf?
244260 if type . kind . enum?
0 commit comments