syntax = "proto2"; // These proto descriptors have at one time been reported as an issue or defect. // They are kept here to replicate the issue, and continue to verify the fix. // Issue: Non-"Google.Protobuffers" namespace will ensure that protobuffer library types are qualified option csharp_namespace = "UnitTest.Issues.TestProtos"; package unittest_issues; option optimize_for = SPEED; // The following is a representative set of features /* enum EnumOptions { ONE = 0; TWO = 1; THREE = 2; } message TestBasicChild { repeated EnumOptions options = 3; optional bytes binary = 4; } message TestBasicNoFields { } message TestBasicRescursive { optional TestBasicRescursive child = 1; } message TestBasicMessage { optional int64 number = 6; repeated int32 numbers = 2; optional string text = 3; repeated string textlines = 700; optional bool valid = 5; optional TestBasicChild child = 1; repeated group Children = 401 { repeated EnumOptions options = 3; optional bytes binary = 4; } extensions 100 to 199; } message TestBasicExtension { required int32 number = 1; } extend TestBasicMessage { optional EnumOptions extension_enum = 101; optional string extension_text = 102; repeated int32 extension_number = 103 [packed = true]; optional TestBasicExtension extension_message = 199; } // Issue for non-qualified type reference in new services generation option (google.protobuf.csharp_file_options).service_generator_type = IRPCDISPATCH; service TestGenericService { rpc Foo(TestBasicNoFields) returns (TestBasicMessage); rpc Bar(TestBasicNoFields) returns (TestBasicMessage); } */ // Old issue 13: http://code.google.com/p/protobuf-csharp-port/issues/detail?id=13 // New issue 309: https://github.com/google/protobuf/issues/309 // message A { // optional int32 _A = 1; // } // message B { // optional int32 B_ = 1; // } //message AB { // optional int32 a_b = 1; //} // Similar issue with numeric names // Java code failed too, so probably best for this to be a restriction. // See https://github.com/google/protobuf/issues/308 // message NumberField { // optional int32 _01 = 1; // } // Issue 28: Circular message dependencies result in null defaults for DefaultInstance message MyMessageAReferenceB { required MyMessageBReferenceA value = 1; } message MyMessageBReferenceA { required MyMessageAReferenceB value = 1; } // issue 19 - negative enum values enum NegativeEnum { FiveBelow = -5; MinusOne = -1; Zero = 0; } message NegativeEnumMessage { optional NegativeEnum value = 1; repeated NegativeEnum values = 2; repeated NegativeEnum packed_values = 3 [packed=true]; } // Issue 21: http://code.google.com/p/protobuf-csharp-port/issues/detail?id=21 // Decorate fields with [deprecated=true] as [System.Obsolete] message DeprecatedChild { } enum DeprecatedEnum { one = 1; } message DeprecatedFieldsMessage { optional int32 PrimitiveValue = 1 [deprecated = true]; repeated int32 PrimitiveArray = 2 [deprecated = true]; optional DeprecatedChild MessageValue = 3 [deprecated = true]; repeated DeprecatedChild MessageArray = 4 [deprecated = true]; optional DeprecatedEnum EnumValue = 5 [deprecated = true]; repeated DeprecatedEnum EnumArray = 6 [deprecated = true]; } // Issue 45: http://code.google.com/p/protobuf-csharp-port/issues/detail?id=45 message ItemField { optional int32 item = 1; }