interface.gotpl

 1{{- range $interface := .Interfaces }}
 2
 3func (ec *executionContext) _{{$interface.Name}}(ctx context.Context, sel ast.SelectionSet, obj *{{$interface.Type | ref}}) graphql.Marshaler {
 4	switch obj := (*obj).(type) {
 5	case nil:
 6		return graphql.Null
 7	{{- range $implementor := $interface.Implementors }}
 8		{{- if $implementor.ValueReceiver }}
 9			case {{$implementor.Type | ref}}:
10				return ec._{{$implementor.Name}}(ctx, sel, &obj)
11		{{- end}}
12		case *{{$implementor.Type | ref}}:
13			return ec._{{$implementor.Name}}(ctx, sel, obj)
14	{{- end }}
15	default:
16		panic(fmt.Errorf("unexpected type %T", obj))
17	}
18}
19
20{{- end }}