Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
compiler/protogen, cmd/protoc-gen-go: use alternative comments API
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>
- Loading branch information
Showing
3 changed files
with
102 additions
and
65 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters