- The Timestamp proto does not allow for negative nanos fields, so the seconds
must be shifted and a positive nanos then applied.
- Tweak the helpers on Duration to make it clear there is no "base" time
involved.
- Update the unittests for duration and timestamp to cover positive and
negative NSTimeIntervals and what their impact is on the protos.
- If setting/clearing a repeated field/map that was objects, check the class
before checking the autocreator.
- Just to be paranoid, don’t mutate within copy/mutableCopy for the autocreated
classes to ensure there is less chance of issues if someone does something
really crazy threading wise.
- Some more tests for the internal AutocreatedArray/AutocreatedDictionary
classes to ensure things are working as expected.
- Add Xcode 8.2 to the full_mac_build.sh supported list.
- Add entries to objectivec/DevTools/full_mac_build.sh
- Support `-quiet` via an option on full_mac_build.sh. NOTE: we don't use
this on travis because the lack of output for a long time could cause travis
to kill the build (when we get a slow VM).
- Update travis config to use newer images.
- Check the parent file options for deprecation when deciding to tag Messages
and Enums as deprecated.
- Within the generated source push/pop the warning for implementing deprecated
things around a deprecated class implementation.
- Annotate the methods generated for extension fields as deprecated.
- Add a testing .proto file that covers deprecated fields, messages, enums,
enum values and compile it into the unittests to confirm things compile
cleanly.
- Add a testing .proto file that uses the file level option to make everything
deprecated and compile it into the unittests to confirm things compile
cleanly.
- Let Xcode 8 update settings on the projects/schemes.
- Migrate Swift tests to Swift 3 syntax.
- Update the build/test script:
- Require Xcode 8 (because of the Swift 3 requirement for tests)
- Update the devices to what Xcode 8 has (8.x simulator seem to fail even
though they can be downloaded in Xcode 8)
- Update the travis images to ones with Xcode 8.
- Capture the version used to generated.
- Check at compile time and runtime that generated code isn't from a newer
version, also check that the min version required is also supported.
- Keep the old constants/macros/functions to special case the last version
that was working so those generated sources still work until we decide
otherwise.
- Capture the ObjC prefix used when generating the the file.
- Track the containing type on descriptors.
- Mark descriptors where the message class name got a suffix added to it.
- Expose a fullName property on Descriptors.
- Add helpers for packing/unpacking Any messages.
- Bump the ObjC runtime version number. Since we added methods and invoke them
in the generated code, ensure the code is running against a matching version.
Otherwise, someone could compile against headers, but run with a framework
that is older and get unknown selector failures. This should trip clearer
messaging.
Fixes https://github.com/google/protobuf/issues/1674
At generation time, walk the file's dependencies to see what really contains
extensions so we can generate more minimal code that only links together the
roots that provided extensions. Gets a bunch of otherwise noop code out of
the call flow when the roots are +initialized.
If a message is proto3, then the zero values still count as being set one the
field is in a oneof.
Add tests to confirm oneofs work as expected in both syntaxes.
Fixes https://github.com/google/protobuf/issues/1933
Add a new test that forces strings into two different implementations from the
NSString class cluster to help confirm we're exercising both paths by which
CodedOutputStream will extract data from an NSString.
Move the old +load test (that was flawed because the behavior really depends on
the type of string from the NSString class cluster); into a unittest that
targets the specific case we're adding a behavior confirmation on.
As a bonus, improve the TextFormat generation of string characters < 0x20.
Work for #1866
Migrates all the public class docs over to appledoc format. While Xcode is fine with blank lines in `///` comments, appledoc (used by cocoadocs) isn't and was leaving a bunch of info off the doc pages.
The generator still needs to be updated to do this also; that will be a follow up CL.
If a message is proto3, then the zero values still count as being set one the
field is in a oneof.
Add tests to confirm oneofs work as expected in both syntaxes.
Fixes https://github.com/google/protobuf/issues/1933
Add a new test that forces strings into two different implementations from the
NSString class cluster to help confirm we're exercising both paths by which
CodedOutputStream will extract data from an NSString.
Move the old +load test (that was flawed because the behavior really depends on
the type of string from the NSString class cluster); into a unittest that
targets the specific case we're adding a behavior confirmation on.
As a bonus, improve the TextFormat generation of string characters < 0x20.
Work for #1866
Migrates all the public class docs over to appledoc format. While Xcode is fine with blank lines in `///` comments, appledoc (used by cocoadocs) isn't and was leaving a bunch of info off the doc pages.
The generator still needs to be updated to do this also; that will be a follow up CL.
When building into frameworks, the generated code doesn't always have direct
access to the proto internals. Instead of opening up the access, just use the
public method to fetch the correct oneof.
Fixes https://github.com/google/protobuf/issues/1789
As bazel folks are looking at getting auto generation of module maps going and
the importing of sources files causes issues there. We were only do it to
hack around some of the apple linker behaviors around objc classes and
categories, but even that isn't complete and CocoaPods was already doing -ObjC,
and developers not using pods could have still needed it to ensure everything
was linked anyways; so drop the hack of importing sources.
Add the `nullable` qualifier to return types of Objective-C methods that
can return a nil due to errors. This change makes these methods
compatible with the Swift 2 try-catch syntax.
- Correct some cases sources were compiled into the static lib and the tests.
- Enable Xcodes code coverage support on the unittests. We aren't complete on
coverage, but having the data always there should make it easier to chip away
at this going forward.
- Drop method in tests that isn't used, wire up a validator in another test.
There was a twist code path (that some times showed up due to what happened to
be in memory in failure cases), that would cast a bogus wire type into the
enum, and then fall through switch statements.
Resolve this by validating all wire types when parsing tags and throwing the
error at that point so it can't enter the system.
As added safety, stick in a few asserts for apis that get passed tags to ensure
they also are only seeing valid data.
Bonus: Tweak the parsing loop to skip some work when we get the end marker
(zero tag) instead of still looping through all the fields.