mirror of
https://github.com/protocolbuffers/protobuf-go.git
synced 2024-12-28 18:25:46 +00:00
70fdd5d140
This is a breaking change. High-level protogen API changes: * remove GeneratedFile.PrintLeadingComments method * add {Message,Field,Oneof,Enum,EnumValue,Service,Method}.Comments field * add CommentSet and Comments type CL/183157 added protoreflect.SourceLocations and it was discovered that there can actually be duplicate locations for certain paths. For that reason, we decided not to expose any helper methods for looking up locations by path since it is unclear which location to return if multiple matches. The protogen.GeneratedFile.PrintLeadingComments has a similar dilemma where it also needs to figure out what to do when duplicates exist. Previously, it just chooses the first one with comments, which may not be the right choice in a given context. Analysis of current PrintLeadingComments usage shows that it is only ever used (except once) for descriptor declarations. In the case of descriptor declarations, they are guaranteed by protoc to have only location. Thus, we avoid the duplicate location problem by: * Providing a CommentSet for every descriptor. The CommentSet contains a set of leading and trailing comments of the Comments type. * The Comments.String method knows how to interpret the comments as provided by protoc and format them as // prefixed line comments. * Values of the Comments type can be passed to the P method. We drop direct support printing leading comments for non-descriptor locations, but the exposure of the Comments type makes it easy for users to manually handle other types of comments themselves. Change-Id: Id4851456dc4e64d76bd6a30e8ad6137408dfb27a Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/189198 Reviewed-by: Damien Neil <dneil@google.com> |
||
---|---|---|
.. | ||
names_test.go | ||
names.go | ||
protogen_test.go | ||
protogen.go |