Skip to content

Commit 6f1c3fe

Browse files
committed
Fix feedback
1 parent 0cdeb57 commit 6f1c3fe

File tree

2 files changed

+15
-16
lines changed

2 files changed

+15
-16
lines changed

internal/exec/resolvable/resolvable.go

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -58,28 +58,27 @@ func (f *Field) UseMethodResolver() bool {
5858

5959
func (f *Field) Resolve(ctx context.Context, resolver reflect.Value, args interface{}) (output interface{}, err error) {
6060
// Short circuit case to avoid wrapping functions
61-
// TODO: confirm performance / memory difference, is it needed?
6261
if len(f.DirectiveVisitors) == 0 {
63-
return f.resolveInternal(ctx, resolver, args)
62+
return f.resolve(ctx, resolver, args)
6463
}
6564

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)
6867
}
6968

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
7372

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))
7675
}
7776
}
7877

79-
return currResolver(ctx, args)
78+
return wrapResolver(ctx, args)
8079
}
8180

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) {
8382
if !f.UseMethodResolver() {
8483
res := resolver
8584

@@ -134,12 +133,12 @@ func (*Object) isResolvable() {}
134133
func (*List) isResolvable() {}
135134
func (*Scalar) isResolvable() {}
136135

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) {
138137
if resolver == nil {
139138
return &Schema{Meta: newMeta(s), Schema: *s}, nil
140139
}
141140

142-
ds, err := applyDirectives(s, dirVisitors)
141+
ds, err := applyDirectives(s, dirs)
143142
if err != nil {
144143
return nil, err
145144
}
@@ -238,11 +237,11 @@ func buildDirectivePackers(s *types.Schema, visitors map[string]directives.Direc
238237
v, ok := visitors[n]
239238
if !ok {
240239
// 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.
242241
continue
243242
}
244243

245-
if _, ok := v.(directives.ResolverInterceptor); !ok {
244+
if _, ok = v.(directives.ResolverInterceptor); !ok {
246245
// Directive doesn't apply at field resolution time, skip it
247246
continue
248247
}

internal/exec/selected/selected.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ func applySelectionSet(r *Request, s *resolvable.Schema, e *resolvable.Object, s
169169
Args: args,
170170
PackedArgs: packedArgs,
171171
Sels: fieldSels,
172-
Async: fe.HasContext || fe.ArgsPacker != nil || fe.HasError || HasAsyncSel(fieldSels),
172+
Async: fe.HasContext || fe.ArgsPacker != nil || len(fe.DirectiveVisitors) > 0 || fe.HasError || HasAsyncSel(fieldSels),
173173
})
174174
}
175175

0 commit comments

Comments
 (0)