Error generating resolvers for federated schema with interface fields in @key
- 主要语言
- Go
- 星标
- 10.8k
- 派生
- 1.3k
- 平均合并
- 2 天 36 分钟
- 30 天内合并 PR
- 26
描述
### What happened?
Attempting to use a field from an interface in `@key` results in a `SIGSEGV` during code gen.
### What did you expect?
Proper code gen.
### Minimal graphql.schema and models to reproduce
See the simple schema change at https://github.com/carldunham/gqlgen/commit/33795267b52ce0231f742b58d73eac31e437fc8e.
```
extend type Query {
topProducts(first: Int = 5): [Product]
}
interface Producter {
id: String!
}
type Manufacturer implements Producter @key(fields: "id") {
id: String!
name: String!
}
type Product @key(fields: "manufacturer { id } id") @key(fields: "upc") {
id: String!
manufacturer: Producter!
upc: String!
name: String!
price: Int!
}
```
Run `go generate ./...`
See the error:
```
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x30 pc=0x10090daf0]
goroutine 1 [running]:
github.com/99designs/gqlgen/plugin/federation/fieldset.fieldByName(0x1009d2902?, {0x140001f40f6, 0x2})
/Users/carl.dunham/src/gqlgen/plugin/federation/fieldset/fieldset.go:177 +0x20
github.com/99designs/gqlgen/plugin/federation/fieldset.Field.TypeReference({0x14000132ec0, 0x2, 0x140001f40d1?}, 0x3?, {0x140003bec00, 0xb, 0x14000d796a8?})
/Users/carl.dunham/src/gqlgen/plugin/federation/fieldset/fieldset.go:78 +0x80
github.com/99designs/gqlgen/plugin/federation.(*federation).GenerateCode(0x1400007da70, 0x140000ee0b0)
/Users/carl.dunham/src/gqlgen/plugin/federation/federation.go:308 +0x1048
github.com/99designs/gqlgen/api.Generate(0x14000151448, {0x0, 0x0, 0x0?})
/Users/carl.dunham/src/gqlgen/api/generate.go:111 +0x9d4
main.main()
/Users/carl.dunham/src/gqlgen/testdata/gqlgen.go:43 +0x2d8
exit status 2
federation/products/server.go:1: running "go": exit status 1
```
### versions
- `go run github.com/99designs/gqlgen version`? `v0.17.45-dev`
- `go version`? `go version go1.22.1 darwin/arm64`
贡献指南
评估
这个 Issue 还没有评估数据。