Skip to content

Commit

Permalink
Merge pull request apple#623 from thomasvl/update_google_protobuf
Browse files Browse the repository at this point in the history
Update protos from google/protobuf and update for new conformance tests
  • Loading branch information
thomasvl authored Jul 27, 2017
2 parents 1411925 + 628e302 commit 6d01a47
Show file tree
Hide file tree
Showing 26 changed files with 5,235 additions and 679 deletions.
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@ PLUGIN_PROTOS= \
# Protos that are used by the conformance test runner.
CONFORMANCE_PROTOS= \
Protos/conformance/conformance.proto \
Protos/google/protobuf/test_messages_proto2.proto \
Protos/google/protobuf/test_messages_proto3.proto

SWIFT_DESCRIPTOR_TEST_PROTOS= \
Expand Down
5 changes: 5 additions & 0 deletions Protos/conformance/conformance.proto
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,11 @@ message ConformanceRequest {

// Which format should the testee serialize its message to?
WireFormat requested_output_format = 3;

// The full name for the test message to use; for the moment, either:
// protobuf_test_messages.proto3.TestAllTypesProto3 or
// protobuf_test_messages.proto2.TestAllTypesProto2.
string message_type = 4;
}

// Represents a single test case's output.
Expand Down
1 change: 1 addition & 0 deletions Protos/google/protobuf/descriptor.proto
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,7 @@ message FileOptions {
optional bool cc_generic_services = 16 [default=false];
optional bool java_generic_services = 17 [default=false];
optional bool py_generic_services = 18 [default=false];
optional bool php_generic_services = 19 [default=false];

// Is this file deprecated?
// Depending on the target platform, this can emit Deprecated annotations
Expand Down
216 changes: 216 additions & 0 deletions Protos/google/protobuf/test_messages_proto2.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,216 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Test schema for proto2 messages. This test schema is used by:
//
// - conformance tests
//

syntax = "proto2";

package protobuf_test_messages.proto2;
option java_package = "com.google.protobuf_test_messages.proto2";

// This is the default, but we specify it here explicitly.
option optimize_for = SPEED;

option cc_enable_arenas = true;

// This proto includes every type of field in both singular and repeated
// forms.
//
// Also, crucially, all messages and enums in this file are eventually
// submessages of this message. So for example, a fuzz test of TestAllTypes
// could trigger bugs that occur in any message type in this file. We verify
// this stays true in a unit test.
message TestAllTypesProto2 {
message NestedMessage {
optional int32 a = 1;
optional TestAllTypesProto2 corecursive = 2;
}

enum NestedEnum {
FOO = 0;
BAR = 1;
BAZ = 2;
NEG = -1; // Intentionally negative.
}

// Singular
optional int32 optional_int32 = 1;
optional int64 optional_int64 = 2;
optional uint32 optional_uint32 = 3;
optional uint64 optional_uint64 = 4;
optional sint32 optional_sint32 = 5;
optional sint64 optional_sint64 = 6;
optional fixed32 optional_fixed32 = 7;
optional fixed64 optional_fixed64 = 8;
optional sfixed32 optional_sfixed32 = 9;
optional sfixed64 optional_sfixed64 = 10;
optional float optional_float = 11;
optional double optional_double = 12;
optional bool optional_bool = 13;
optional string optional_string = 14;
optional bytes optional_bytes = 15;

optional NestedMessage optional_nested_message = 18;
optional ForeignMessage optional_foreign_message = 19;

optional NestedEnum optional_nested_enum = 21;
optional ForeignEnum optional_foreign_enum = 22;

optional string optional_string_piece = 24 [ctype=STRING_PIECE];
optional string optional_cord = 25 [ctype=CORD];

optional TestAllTypesProto2 recursive_message = 27;

// Repeated
repeated int32 repeated_int32 = 31;
repeated int64 repeated_int64 = 32;
repeated uint32 repeated_uint32 = 33;
repeated uint64 repeated_uint64 = 34;
repeated sint32 repeated_sint32 = 35;
repeated sint64 repeated_sint64 = 36;
repeated fixed32 repeated_fixed32 = 37;
repeated fixed64 repeated_fixed64 = 38;
repeated sfixed32 repeated_sfixed32 = 39;
repeated sfixed64 repeated_sfixed64 = 40;
repeated float repeated_float = 41;
repeated double repeated_double = 42;
repeated bool repeated_bool = 43;
repeated string repeated_string = 44;
repeated bytes repeated_bytes = 45;

repeated NestedMessage repeated_nested_message = 48;
repeated ForeignMessage repeated_foreign_message = 49;

repeated NestedEnum repeated_nested_enum = 51;
repeated ForeignEnum repeated_foreign_enum = 52;

repeated string repeated_string_piece = 54 [ctype=STRING_PIECE];
repeated string repeated_cord = 55 [ctype=CORD];

// Map
map < int32, int32> map_int32_int32 = 56;
map < int64, int64> map_int64_int64 = 57;
map < uint32, uint32> map_uint32_uint32 = 58;
map < uint64, uint64> map_uint64_uint64 = 59;
map < sint32, sint32> map_sint32_sint32 = 60;
map < sint64, sint64> map_sint64_sint64 = 61;
map < fixed32, fixed32> map_fixed32_fixed32 = 62;
map < fixed64, fixed64> map_fixed64_fixed64 = 63;
map <sfixed32, sfixed32> map_sfixed32_sfixed32 = 64;
map <sfixed64, sfixed64> map_sfixed64_sfixed64 = 65;
map < int32, float> map_int32_float = 66;
map < int32, double> map_int32_double = 67;
map < bool, bool> map_bool_bool = 68;
map < string, string> map_string_string = 69;
map < string, bytes> map_string_bytes = 70;
map < string, NestedMessage> map_string_nested_message = 71;
map < string, ForeignMessage> map_string_foreign_message = 72;
map < string, NestedEnum> map_string_nested_enum = 73;
map < string, ForeignEnum> map_string_foreign_enum = 74;

oneof oneof_field {
uint32 oneof_uint32 = 111;
NestedMessage oneof_nested_message = 112;
string oneof_string = 113;
bytes oneof_bytes = 114;
bool oneof_bool = 115;
uint64 oneof_uint64 = 116;
float oneof_float = 117;
double oneof_double = 118;
NestedEnum oneof_enum = 119;
}

// extensions
extensions 120 to 200;

// groups
optional group Data = 201 {
optional int32 group_int32 = 202;
optional uint32 group_uint32 = 203;
};

// Test field-name-to-JSON-name convention.
// (protobuf says names can be any valid C/C++ identifier.)
optional int32 fieldname1 = 401;
optional int32 field_name2 = 402;
optional int32 _field_name3 = 403;
optional int32 field__name4_ = 404;
optional int32 field0name5 = 405;
optional int32 field_0_name6 = 406;
optional int32 fieldName7 = 407;
optional int32 FieldName8 = 408;
optional int32 field_Name9 = 409;
optional int32 Field_Name10 = 410;
optional int32 FIELD_NAME11 = 411;
optional int32 FIELD_name12 = 412;
optional int32 __field_name13 = 413;
optional int32 __Field_name14 = 414;
optional int32 field__name15 = 415;
optional int32 field__Name16 = 416;
optional int32 field_name17__ = 417;
optional int32 Field_name18__ = 418;

// message_set test case.
message MessageSetCorrect {
option message_set_wire_format = true;
extensions 4 to max;
}

message MessageSetCorrectExtension1 {
extend MessageSetCorrect {
optional MessageSetCorrectExtension1 message_set_extension = 1547769;
}
optional string str = 25;
}

message MessageSetCorrectExtension2 {
extend MessageSetCorrect {
optional MessageSetCorrectExtension2 message_set_extension = 4135312;
}
optional int32 i = 9;
}
}

message ForeignMessage {
optional int32 c = 1;
}

enum ForeignEnum {
FOREIGN_FOO = 0;
FOREIGN_BAR = 1;
FOREIGN_BAZ = 2;
}

extend TestAllTypesProto2 {
optional int32 extension_int32 = 120;
}
7 changes: 4 additions & 3 deletions Protos/google/protobuf/test_messages_proto3.proto
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ syntax = "proto3";

package protobuf_test_messages.proto3;
option java_package = "com.google.protobuf_test_messages.proto3";
option objc_class_prefix = "Proto3";

// This is the default, but we specify it here explicitly.
option optimize_for = SPEED;
Expand All @@ -59,10 +60,10 @@ option cc_enable_arenas = true;
// submessages of this message. So for example, a fuzz test of TestAllTypes
// could trigger bugs that occur in any message type in this file. We verify
// this stays true in a unit test.
message TestAllTypes {
message TestAllTypesProto3 {
message NestedMessage {
int32 a = 1;
TestAllTypes corecursive = 2;
TestAllTypesProto3 corecursive = 2;
}

enum NestedEnum {
Expand Down Expand Up @@ -98,7 +99,7 @@ message TestAllTypes {
string optional_string_piece = 24 [ctype=STRING_PIECE];
string optional_cord = 25 [ctype=CORD];

TestAllTypes recursive_message = 27;
TestAllTypesProto3 recursive_message = 27;

// Repeated
repeated int32 repeated_int32 = 31;
Expand Down
11 changes: 11 additions & 0 deletions Reference/conformance/conformance.pb.swift
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,11 @@ struct Conformance_ConformanceRequest: SwiftProtobuf.Message {
/// Which format should the testee serialize its message to?
var requestedOutputFormat: Conformance_WireFormat = .unspecified

/// The full name for the test message to use; for the moment, either:
/// protobuf_test_messages.proto3.TestAllTypesProto3 or
/// protobuf_test_messages.proto2.TestAllTypesProto2.
var messageType: String = String()

var unknownFields = SwiftProtobuf.UnknownStorage()

/// The payload (whether protobuf of JSON) is always for a
Expand Down Expand Up @@ -158,6 +163,7 @@ struct Conformance_ConformanceRequest: SwiftProtobuf.Message {
try decoder.decodeSingularStringField(value: &v)
if let v = v {self.payload = .jsonPayload(v)}
case 3: try decoder.decodeSingularEnumField(value: &self.requestedOutputFormat)
case 4: try decoder.decodeSingularStringField(value: &self.messageType)
default: break
}
}
Expand All @@ -178,6 +184,9 @@ struct Conformance_ConformanceRequest: SwiftProtobuf.Message {
if self.requestedOutputFormat != .unspecified {
try visitor.visitSingularEnumField(value: self.requestedOutputFormat, fieldNumber: 3)
}
if !self.messageType.isEmpty {
try visitor.visitSingularStringField(value: self.messageType, fieldNumber: 4)
}
try unknownFields.traverse(visitor: &visitor)
}
}
Expand Down Expand Up @@ -378,11 +387,13 @@ extension Conformance_ConformanceRequest: SwiftProtobuf._MessageImplementationBa
1: .standard(proto: "protobuf_payload"),
2: .standard(proto: "json_payload"),
3: .standard(proto: "requested_output_format"),
4: .standard(proto: "message_type"),
]

func _protobuf_generated_isEqualTo(other: Conformance_ConformanceRequest) -> Bool {
if self.payload != other.payload {return false}
if self.requestedOutputFormat != other.requestedOutputFormat {return false}
if self.messageType != other.messageType {return false}
if unknownFields != other.unknownFields {return false}
return true
}
Expand Down
17 changes: 17 additions & 0 deletions Reference/google/protobuf/descriptor.pb.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1437,6 +1437,15 @@ struct Google_Protobuf_FileOptions: SwiftProtobuf.Message, SwiftProtobuf.Extensi
/// Clears the value of `pyGenericServices`. Subsequent reads from it will return its default value.
mutating func clearPyGenericServices() {_storage._pyGenericServices = nil}

var phpGenericServices: Bool {
get {return _storage._phpGenericServices ?? false}
set {_uniqueStorage()._phpGenericServices = newValue}
}
/// Returns true if `phpGenericServices` has been explicitly set.
var hasPhpGenericServices: Bool {return _storage._phpGenericServices != nil}
/// Clears the value of `phpGenericServices`. Subsequent reads from it will return its default value.
mutating func clearPhpGenericServices() {_storage._phpGenericServices = nil}

/// Is this file deprecated?
/// Depending on the target platform, this can emit Deprecated annotations
/// for everything in the file, or it will be completely ignored; in the very
Expand Down Expand Up @@ -1589,6 +1598,7 @@ struct Google_Protobuf_FileOptions: SwiftProtobuf.Message, SwiftProtobuf.Extensi
case 16: try decoder.decodeSingularBoolField(value: &_storage._ccGenericServices)
case 17: try decoder.decodeSingularBoolField(value: &_storage._javaGenericServices)
case 18: try decoder.decodeSingularBoolField(value: &_storage._pyGenericServices)
case 19: try decoder.decodeSingularBoolField(value: &_storage._phpGenericServices)
case 20: try decoder.decodeSingularBoolField(value: &_storage._javaGenerateEqualsAndHash)
case 23: try decoder.decodeSingularBoolField(value: &_storage._deprecated)
case 27: try decoder.decodeSingularBoolField(value: &_storage._javaStringCheckUtf8)
Expand Down Expand Up @@ -1637,6 +1647,9 @@ struct Google_Protobuf_FileOptions: SwiftProtobuf.Message, SwiftProtobuf.Extensi
if let v = _storage._pyGenericServices {
try visitor.visitSingularBoolField(value: v, fieldNumber: 18)
}
if let v = _storage._phpGenericServices {
try visitor.visitSingularBoolField(value: v, fieldNumber: 19)
}
if let v = _storage._javaGenerateEqualsAndHash {
try visitor.visitSingularBoolField(value: v, fieldNumber: 20)
}
Expand Down Expand Up @@ -3555,6 +3568,7 @@ extension Google_Protobuf_FileOptions: SwiftProtobuf._MessageImplementationBase,
16: .standard(proto: "cc_generic_services"),
17: .standard(proto: "java_generic_services"),
18: .standard(proto: "py_generic_services"),
19: .standard(proto: "php_generic_services"),
23: .same(proto: "deprecated"),
31: .standard(proto: "cc_enable_arenas"),
36: .standard(proto: "objc_class_prefix"),
Expand All @@ -3576,6 +3590,7 @@ extension Google_Protobuf_FileOptions: SwiftProtobuf._MessageImplementationBase,
var _ccGenericServices: Bool? = nil
var _javaGenericServices: Bool? = nil
var _pyGenericServices: Bool? = nil
var _phpGenericServices: Bool? = nil
var _deprecated: Bool? = nil
var _ccEnableArenas: Bool? = nil
var _objcClassPrefix: String? = nil
Expand All @@ -3600,6 +3615,7 @@ extension Google_Protobuf_FileOptions: SwiftProtobuf._MessageImplementationBase,
_ccGenericServices = source._ccGenericServices
_javaGenericServices = source._javaGenericServices
_pyGenericServices = source._pyGenericServices
_phpGenericServices = source._phpGenericServices
_deprecated = source._deprecated
_ccEnableArenas = source._ccEnableArenas
_objcClassPrefix = source._objcClassPrefix
Expand Down Expand Up @@ -3633,6 +3649,7 @@ extension Google_Protobuf_FileOptions: SwiftProtobuf._MessageImplementationBase,
if _storage._ccGenericServices != other_storage._ccGenericServices {return false}
if _storage._javaGenericServices != other_storage._javaGenericServices {return false}
if _storage._pyGenericServices != other_storage._pyGenericServices {return false}
if _storage._phpGenericServices != other_storage._phpGenericServices {return false}
if _storage._deprecated != other_storage._deprecated {return false}
if _storage._ccEnableArenas != other_storage._ccEnableArenas {return false}
if _storage._objcClassPrefix != other_storage._objcClassPrefix {return false}
Expand Down
Loading

0 comments on commit 6d01a47

Please sign in to comment.