Skip to content

ObjC Proto3 optional support - #7421

Merged
thomasvl merged 8 commits into
protocolbuffers:masterfrom
thomasvl:proto3_optional
Apr 24, 2020
Merged

thomasvl merged 8 commits into
protocolbuffers:masterfrom
thomasvl:proto3_optional

Conversation

@thomasvl

Copy link
Copy Markdown
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
Copy Markdown
Contributor Author

@dmaclach can you take a look please.

fyi @haberman

@dmaclach dmaclach left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Mostly comments about comments :)

Comment thread objectivec/GPBDescriptor.m Resolved
Comment thread objectivec/GPBDescriptor.m Resolved
Comment thread objectivec/GPBUtilities.h Resolved
@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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants