@@ -173,8 +173,7 @@ defmodule GraphQL.Execution.Executor do
173173
174174 @ spec complete_value ( % ObjectType { } , ExecutionContext . t , GraphQL.Document . t , any , map ) :: { ExecutionContext . t , map }
175175 defp complete_value ( % ObjectType { } = return_type , context , field_asts , _info , result ) do
176- { context , sub_field_asts } = collect_sub_fields ( context , return_type , field_asts )
177- execute_fields ( context , return_type , result , sub_field_asts . fields )
176+ complete_sub_fields ( return_type , context , field_asts , result )
178177 end
179178
180179 @ spec complete_value ( % NonNull { } , ExecutionContext . t , GraphQL.Document . t , any , any ) :: { ExecutionContext . t , map }
@@ -209,6 +208,16 @@ defmodule GraphQL.Execution.Executor do
209208 { context , GraphQL.Types . serialize ( unwrap_type ( return_type ) , result ) }
210209 end
211210
211+ defp complete_union_or_interface ( return_type , context , field_asts , info , result ) do
212+ runtime_type = AbstractType . get_object_type ( return_type , result , info . schema )
213+ complete_sub_fields ( runtime_type , context , field_asts , result )
214+ end
215+
216+ defp complete_sub_fields ( return_type , context , field_asts , result ) do
217+ { context , sub_field_asts } = collect_sub_fields ( context , return_type , field_asts )
218+ execute_fields ( context , return_type , result , sub_field_asts . fields )
219+ end
220+
212221 defp collect_sub_fields ( context , return_type , field_asts ) do
213222 Enum . reduce field_asts , { context , % { fields: % { } , fragments: % { } } } , fn ( field_ast , { context , field_fragment_map } ) ->
214223 if selection_set = Map . get ( field_ast , :selectionSet ) do
@@ -341,10 +350,4 @@ defmodule GraphQL.Execution.Executor do
341350
342351 defp unwrap_type ( type ) when is_atom ( type ) , do: type . type
343352 defp unwrap_type ( type ) , do: type
344-
345- defp complete_union_or_interface ( return_type , context , field_asts , info , result ) do
346- runtime_type = AbstractType . get_object_type ( return_type , result , info . schema )
347- { context , sub_field_asts } = collect_sub_fields ( context , runtime_type , field_asts )
348- execute_fields ( context , runtime_type , result , sub_field_asts . fields )
349- end
350353end
0 commit comments