slachiewicz opened a new pull request, #3778: URL: https://github.com/apache/thrift/pull/3778
Go maps cannot be keyed by a slice or a map, so the Go generator aborted on any thrift `map` keyed by a `list`, `set`, `map`, or a typedef of one of those. This change generates such fields as `[]thrift.MapEntry[K, V]`, a slice of key/value pairs written to the wire in slice order. Key uniqueness is not enforced, which matches how thrift sets are already represented as slices in Go. Maps whose keys were already representable keep their current Go type, so existing generated code is unchanged. The Go test Makefiles no longer strip `CrazyNesting.list_field` from `ThriftTest.thrift`, and the cross-test client, server and stress binaries build against the full IDL. Struct-keyed maps still generate as `map[*K]V`; changing that is left for a separate ticket because it alters working output. Verified: `go test ./gopath/src/tests ./gopath/src/dontexportrwtest` in lib/go/test and `go test ./...` in lib/go/thrift → ok; `go build`/`go vet` on all generated test packages → clean. - [x] Did you create an [Apache Jira](https://issues.apache.org/jira/projects/THRIFT/issues/) ticket? - [x] If a ticket exists: Does your pull request title follow the pattern "THRIFT-NNNN: describe my issue"? - [x] Did you squash your changes to a single commit? - [x] Did you do your best to avoid breaking changes? - [ ] If your change does not involve any code, include `[skip ci]` anywhere in the commit message to free up build resources. *This change was created with AI assistance.* -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
