forked from protocolbuffers/protobuf-go
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
all: make handling of zero-value composites more consistent
We occasionally need to work with immutable, empty lists, maps, and messages. Notably, Message.Get on an empty repeated field will return a "frozen" empty value. Move handling of these immutable, zero-length composites into Converter, to unify the behavior of regular and extension fields. Add a Zero method to Converter, MessageType, and ExtensionType, to provide a consistent way to get an empty, frozen value of a composite type. Adding this method to the public {Message,Extension}Type interfaces does increase our API surface, but lets us (for example) cleanly represent an empty map as a nil map rather than a non-nil one wrapped in a frozenMap type. Drop the frozen{List,Map,Message} types as no longer necessary. (These types did have support for creating a read-only view of a non-empty value, but we are not currently using that feature.) Change-Id: Ia76f149d591da07b40ce75b7404a7ab8a60cb9d8 Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/189339 Reviewed-by: Joe Tsai <[email protected]>
- Loading branch information
Showing
10 changed files
with
59 additions
and
113 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
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
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
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