Merge pull request #3189 from thomasvl/objc_proto3_unknown_fields
ObjC: Preserve unknown fields in proto3 syntax files.
This commit is contained in:
commit
d555775836
3 changed files with 5 additions and 44 deletions
|
@ -286,10 +286,6 @@ uint32_t GPBFieldTag(GPBFieldDescriptor *self);
|
||||||
// would be the wire type for packed.
|
// would be the wire type for packed.
|
||||||
uint32_t GPBFieldAlternateTag(GPBFieldDescriptor *self);
|
uint32_t GPBFieldAlternateTag(GPBFieldDescriptor *self);
|
||||||
|
|
||||||
GPB_INLINE BOOL GPBPreserveUnknownFields(GPBFileSyntax syntax) {
|
|
||||||
return syntax != GPBFileSyntaxProto3;
|
|
||||||
}
|
|
||||||
|
|
||||||
GPB_INLINE BOOL GPBHasPreservingUnknownEnumSemantics(GPBFileSyntax syntax) {
|
GPB_INLINE BOOL GPBHasPreservingUnknownEnumSemantics(GPBFileSyntax syntax) {
|
||||||
return syntax == GPBFileSyntaxProto3;
|
return syntax == GPBFileSyntaxProto3;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2372,17 +2372,11 @@ static void MergeRepeatedNotPackedFieldFromCodedInputStream(
|
||||||
// zero signals EOF / limit reached
|
// zero signals EOF / limit reached
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
if (GPBPreserveUnknownFields(syntax)) {
|
if (![self parseUnknownField:input
|
||||||
if (![self parseUnknownField:input
|
extensionRegistry:extensionRegistry
|
||||||
extensionRegistry:extensionRegistry
|
tag:tag]) {
|
||||||
tag:tag]) {
|
// it's an endgroup tag
|
||||||
// it's an endgroup tag
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (![input skipField:tag]) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // if(!merged)
|
} // if(!merged)
|
||||||
|
|
|
@ -113,35 +113,6 @@ static NSData *DataFromCStr(const char *str) {
|
||||||
[msg release];
|
[msg release];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)testProto3DroppingUnknownFields {
|
|
||||||
DropUnknownsFooWithExtraFields *fooWithExtras =
|
|
||||||
[[DropUnknownsFooWithExtraFields alloc] init];
|
|
||||||
|
|
||||||
fooWithExtras.int32Value = 1;
|
|
||||||
fooWithExtras.enumValue = DropUnknownsFooWithExtraFields_NestedEnum_Baz;
|
|
||||||
fooWithExtras.extraInt32Value = 2;
|
|
||||||
|
|
||||||
NSData *data = [fooWithExtras data];
|
|
||||||
XCTAssertNotNil(data);
|
|
||||||
DropUnknownsFoo *foo = [DropUnknownsFoo parseFromData:data error:NULL];
|
|
||||||
|
|
||||||
XCTAssertEqual(foo.int32Value, 1);
|
|
||||||
XCTAssertEqual(foo.enumValue, DropUnknownsFoo_NestedEnum_Baz);
|
|
||||||
// Nothing should end up in the unknowns.
|
|
||||||
XCTAssertEqual([foo.unknownFields countOfFields], 0U);
|
|
||||||
|
|
||||||
[fooWithExtras release];
|
|
||||||
data = [foo data];
|
|
||||||
fooWithExtras =
|
|
||||||
[DropUnknownsFooWithExtraFields parseFromData:data error:NULL];
|
|
||||||
XCTAssertEqual(fooWithExtras.int32Value, 1);
|
|
||||||
XCTAssertEqual(fooWithExtras.enumValue,
|
|
||||||
DropUnknownsFooWithExtraFields_NestedEnum_Baz);
|
|
||||||
// And the extra value is gone (back to the default).
|
|
||||||
XCTAssertEqual(fooWithExtras.extraInt32Value, 0);
|
|
||||||
XCTAssertEqual([foo.unknownFields countOfFields], 0U);
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)testProto2UnknownEnumToUnknownField {
|
- (void)testProto2UnknownEnumToUnknownField {
|
||||||
Message3 *orig = [[Message3 alloc] init];
|
Message3 *orig = [[Message3 alloc] init];
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue