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;
}
