Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ObjC Proto3 optional support #7421

Merged
merged 8 commits into from
Apr 24, 2020
Merged

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 :)

objectivec/GPBDescriptor.m Outdated Show resolved Hide resolved
objectivec/GPBDescriptor.m Outdated Show resolved Hide resolved
objectivec/GPBUtilities.h Outdated Show resolved Hide resolved
objectivec/GPBDescriptor_PackagePrivate.h Outdated Show resolved Hide resolved
objectivec/GPBDescriptor_PackagePrivate.h Outdated Show resolved Hide 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