| syntax = "proto2"; |
| |
| package protobuf_unittest_extra; |
| |
| option csharp_namespace = "Google.ProtocolBuffers.TestProtos"; |
| option optimize_for = CODE_SIZE; |
| option java_package = "com.google.protobuf"; |
| |
| message TestInteropPerson { |
| required string name = 1; |
| required int32 id = 2; |
| optional string email = 3; |
| repeated int32 codes = 10 [packed=true]; |
| |
| enum PhoneType { |
| MOBILE = 0; |
| HOME = 1; |
| WORK = 2; |
| } |
| |
| message PhoneNumber { |
| required string number = 1; |
| optional PhoneType type = 2 [default = HOME]; |
| } |
| |
| repeated PhoneNumber phone = 4; |
| |
| repeated group Addresses = 5 { |
| required string address = 1; |
| optional string address2 = 2; |
| required string city = 3; |
| required string state = 4; |
| required fixed32 zip = 5; |
| } |
| |
| extensions 100 to 199; |
| } |
| |
| message TestInteropEmployeeId { |
| required string number = 1; |
| } |
| |
| extend TestInteropPerson { |
| // Note: changed from required to optional, as required fields are not |
| // permitted in extensions. (The fact that this was allowed in protogen |
| // before was almost certainly a bug.) |
| optional TestInteropEmployeeId employee_id = 126; |
| } |
| |
| message TestMissingFieldsA { |
| required string name = 1; |
| required int32 id = 2; |
| optional string email = 3; |
| |
| message SubA { |
| required int32 count = 5; |
| repeated string values = 6; |
| } |
| optional SubA testA = 11; |
| } |
| |
| message TestMissingFieldsB { |
| required string name = 1; |
| required int32 id = 2; |
| optional string website = 4; |
| |
| message SubB { |
| repeated string values = 7; |
| } |
| optional SubB testB = 12; |
| } |