Skip to content

Commit 7dd0de8

Browse files
committed
hint in error if method only exists on pointer type (fixes #60)
1 parent 356ebd9 commit 7dd0de8

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

example/starwars/starwars.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -598,8 +598,8 @@ func (r *friendsConnectionResolver) Friends() *[]*characterResolver {
598598
return resolveCharacters(r.ids[r.from:r.to])
599599
}
600600

601-
func (r *friendsConnectionResolver) PageInfo() *pageInfoResolver {
602-
return &pageInfoResolver{
601+
func (r *friendsConnectionResolver) PageInfo() pageInfoResolver {
602+
return pageInfoResolver{
603603
startCursor: encodeCursor(r.from),
604604
endCursor: encodeCursor(r.to - 1),
605605
hasNextPage: r.to < len(r.ids),

internal/exec/exec.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,11 @@ func (b *execBuilder) makeObjectExec(typeName string, fields map[string]*schema.
212212
for name, f := range fields {
213213
methodIndex := findMethod(resolverType, name)
214214
if methodIndex == -1 {
215-
return nil, fmt.Errorf("%s does not resolve %q: missing method for field %q", resolverType, typeName, name)
215+
hint := ""
216+
if findMethod(reflect.PtrTo(resolverType), name) != -1 {
217+
hint = " (hint: the method exists on the pointer type)"
218+
}
219+
return nil, fmt.Errorf("%s does not resolve %q: missing method for field %q%s", resolverType, typeName, name, hint)
216220
}
217221

218222
m := resolverType.Method(methodIndex)

0 commit comments

Comments
 (0)