diff --git a/exec/selected/selected.go b/exec/selected/selected.go index 225a1565f..f1be12cb6 100644 --- a/exec/selected/selected.go +++ b/exec/selected/selected.go @@ -63,14 +63,18 @@ func (sf *SchemaField) ToSelectedField() *types.SelectedField { if sf == nil { return nil } - return &types.SelectedField{ + res := &types.SelectedField{ Name: sf.Name, TypeName: sf.Field.Type.String(), Alias: sf.Alias, Fields: selsToSelectedFields(sf.Sels), - Args: sf.Args, + ArgsMap: sf.Args, Directives: append(sf.Directives, sf.Field.Directives...), } + if sf.PackedArgs.IsValid() { + res.Args = sf.PackedArgs.Interface() + } + return res } func selsToSelectedFields(sels []Selection) (res []*types.SelectedField) { diff --git a/selected_fields_test.go b/selected_fields_test.go index 7ee04e2a5..88fa94751 100644 --- a/selected_fields_test.go +++ b/selected_fields_test.go @@ -83,7 +83,7 @@ func (r *nestedAliasesArgsDirectivesQueryResolver) Test(ctx context.Context) nes if aDir == nil { failWithError(r.T, "testFieldDirective doesn't exist on a") } - aArgValue, ok := a.Args["value"] + aArgValue, ok := a.ArgsMap["value"] if !ok { failWithError(r.T, "value argument on a doesn't exist") } diff --git a/types/field.go b/types/field.go index f7d37217e..592af607f 100644 --- a/types/field.go +++ b/types/field.go @@ -46,7 +46,8 @@ type SelectedField struct { TypeName string Alias string // equal to Name if alias is not provided Directives DirectiveList - Args map[string]interface{} + Args interface{} + ArgsMap map[string]interface{} Fields []*SelectedField AssertedTypeName string // non-empty for field selections on union fields }