commit | d4f0800c421d5ec4135cc86bba5b819be16fa5cc | [log] [tgz] |
---|---|---|
author | Damien Neil <dneil@google.com> | Wed Aug 07 12:21:41 2019 -0700 |
committer | Damien Neil <dneil@google.com> | Thu Aug 08 18:20:25 2019 +0000 |
tree | 711f22ebe9d502543ac9d453c06a80171488dc4f | |
parent | bab3d4084ecc24a53ecd33b386625611b9ca18b1 [diff] |
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 <thebrokentoaster@gmail.com>
WARNING: This repository is in active development. There are no guarantees about API stability. Breaking changes will occur until a stable release is made and announced.
This repository is for the development of the next major Go implementation of protocol buffers. This library makes breaking API changes relative to the existing Go protobuf library. Of particular note, this API aims to make protobuf reflection a first-class feature of the API and implements the protobuf ecosystem in terms of reflection.
List of relevant design documents:
We appreciate community contributions. See CONTRIBUTING.md.
Issues regarding the new API can be filed at github.com/golang/protobuf. Please use a APIv2:
prefix in the title to make it clear that the issue is regarding the new API work.