Skip to content

Conversation

@thomasvl
Copy link
Contributor

No description provided.

FieldDescriptor::has_presence works as a replacement for the custom logic we had for FieldGenerator::WantsHasProperty(), and is already proto3 optional aware.
- Don't make an OneofGenerator for synthetic oneofs. - Update the field calculations that determine if hasbits are needed to know about synthetic oneofs and ignore them.
- Add a Descriptor flag to capture if the field should clear on being zeroed. - Update the runtime to use the new clear on zero flag. - Add a flag on message initialization to indicate the sources were generated with/without this support so the runtime can backfill the flag for older generated sources.
- With the new flags, the syntax isn't needed, so don't pass it. - To keep library binary compatibility, rename the helpers since one "Internal" method was called from generated code. Keep a shim with the old signature to support those generated sources.
- Add/document an public api for clearing oneofs. - Move the current library internals to a new api and keep a shim for old generated code.
- Bump the version marker in the generated code. - Set the flag to say clear on zero is known. - Set clear on zero for proto3 optional fields that aren't tagged as optional. - Also tweak the call from some C generated code to use different apis with better validation. - Mark the ObjC generator as supporting the proto3 optional feature. - Regenerate the WKTs to get the new flags.
@thomasvl thomasvl self-assigned this Apr 24, 2020
@thomasvl
Copy link
Contributor Author

@dmaclach can you take a look please.

fyi @haberman

Copy link
Contributor

@dmaclach dmaclach left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly comments about comments :)

@thomasvl thomasvl merged commit dddeed2 into protocolbuffers:master Apr 24, 2020
@thomasvl thomasvl deleted the proto3_optional branch April 24, 2020 20:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment