@@ -58,28 +58,27 @@ func (f *Field) UseMethodResolver() bool {
58
58
59
59
func (f * Field ) Resolve (ctx context.Context , resolver reflect.Value , args interface {}) (output interface {}, err error ) {
60
60
// Short circuit case to avoid wrapping functions
61
- // TODO: confirm performance / memory difference, is it needed?
62
61
if len (f .DirectiveVisitors ) == 0 {
63
- return f .resolveInternal (ctx , resolver , args )
62
+ return f .resolve (ctx , resolver , args )
64
63
}
65
64
66
- currResolver := func (ctx context.Context , args interface {}) (output interface {}, err error ) {
67
- return f .resolveInternal (ctx , resolver , args )
65
+ wrapResolver := func (ctx context.Context , args interface {}) (output interface {}, err error ) {
66
+ return f .resolve (ctx , resolver , args )
68
67
}
69
68
70
- for _ , pd := range f .DirectiveVisitors {
71
- pd := pd // Needed to avoid passing only the last directive, since we're closing over this loop var pointer
72
- innerResolver := currResolver
69
+ for _ , d := range f .DirectiveVisitors {
70
+ d := d // Needed to avoid passing only the last directive, since we're closing over this loop var pointer
71
+ innerResolver := wrapResolver
73
72
74
- currResolver = func (ctx context.Context , args interface {}) (output interface {}, err error ) {
75
- return pd .Resolve (ctx , args , resolverFunc (innerResolver ))
73
+ wrapResolver = func (ctx context.Context , args interface {}) (output interface {}, err error ) {
74
+ return d .Resolve (ctx , args , resolverFunc (innerResolver ))
76
75
}
77
76
}
78
77
79
- return currResolver (ctx , args )
78
+ return wrapResolver (ctx , args )
80
79
}
81
80
82
- func (f * Field ) resolveInternal (ctx context.Context , resolver reflect.Value , args interface {}) (output interface {}, err error ) {
81
+ func (f * Field ) resolve (ctx context.Context , resolver reflect.Value , args interface {}) (output interface {}, err error ) {
83
82
if ! f .UseMethodResolver () {
84
83
res := resolver
85
84
@@ -134,12 +133,12 @@ func (*Object) isResolvable() {}
134
133
func (* List ) isResolvable () {}
135
134
func (* Scalar ) isResolvable () {}
136
135
137
- func ApplyResolver (s * types.Schema , resolver interface {}, dirVisitors []directives.Directive , useFieldResolvers bool ) (* Schema , error ) {
136
+ func ApplyResolver (s * types.Schema , resolver interface {}, dirs []directives.Directive , useFieldResolvers bool ) (* Schema , error ) {
138
137
if resolver == nil {
139
138
return & Schema {Meta : newMeta (s ), Schema : * s }, nil
140
139
}
141
140
142
- ds , err := applyDirectives (s , dirVisitors )
141
+ ds , err := applyDirectives (s , dirs )
143
142
if err != nil {
144
143
return nil , err
145
144
}
@@ -238,11 +237,11 @@ func buildDirectivePackers(s *types.Schema, visitors map[string]directives.Direc
238
237
v , ok := visitors [n ]
239
238
if ! ok {
240
239
// Directives which need visitors have already been checked
241
- // Anything without a visitor now is an in- built directive without a packer.
240
+ // Anything without a visitor now is a built-in directive without a packer.
242
241
continue
243
242
}
244
243
245
- if _ , ok : = v .(directives.ResolverInterceptor ); ! ok {
244
+ if _ , ok = v .(directives.ResolverInterceptor ); ! ok {
246
245
// Directive doesn't apply at field resolution time, skip it
247
246
continue
248
247
}
0 commit comments