Browse Source

Regenerate all C# code and make it compile

JSON tests fail, as we're not using OriginalNameAttribute yet.
Jon Skeet 9 years ago
parent
commit
84ea2c7a81

+ 3 - 3
csharp/src/AddressBook/AddPerson.cs

@@ -73,13 +73,13 @@ namespace Google.Protobuf.Examples.AddressBook
                 switch (type)
                 switch (type)
                 {
                 {
                     case "mobile":
                     case "mobile":
-                        phoneNumber.Type = Person.Types.PhoneType.MOBILE;
+                        phoneNumber.Type = Person.Types.PhoneType.Mobile;
                         break;
                         break;
                     case "home":
                     case "home":
-                        phoneNumber.Type = Person.Types.PhoneType.HOME;
+                        phoneNumber.Type = Person.Types.PhoneType.Home;
                         break;
                         break;
                     case "work":
                     case "work":
-                        phoneNumber.Type = Person.Types.PhoneType.WORK;
+                        phoneNumber.Type = Person.Types.PhoneType.Work;
                         break;
                         break;
                     default:
                     default:
                         output.Write("Unknown phone type. Using default.");
                         output.Write("Unknown phone type. Using default.");

+ 8 - 8
csharp/src/AddressBook/Addressbook.cs

@@ -228,9 +228,9 @@ namespace Google.Protobuf.Examples.AddressBook {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     public static partial class Types {
     public static partial class Types {
       public enum PhoneType {
       public enum PhoneType {
-        MOBILE = 0,
-        HOME = 1,
-        WORK = 2,
+        [pbr::OriginalName("MOBILE")] Mobile = 0,
+        [pbr::OriginalName("HOME")] Home = 1,
+        [pbr::OriginalName("WORK")] Work = 2,
       }
       }
 
 
       [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
       [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
@@ -273,7 +273,7 @@ namespace Google.Protobuf.Examples.AddressBook {
 
 
         /// <summary>Field number for the "type" field.</summary>
         /// <summary>Field number for the "type" field.</summary>
         public const int TypeFieldNumber = 2;
         public const int TypeFieldNumber = 2;
-        private global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType type_ = global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType.MOBILE;
+        private global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType type_ = 0;
         public global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType Type {
         public global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType Type {
           get { return type_; }
           get { return type_; }
           set {
           set {
@@ -300,7 +300,7 @@ namespace Google.Protobuf.Examples.AddressBook {
         public override int GetHashCode() {
         public override int GetHashCode() {
           int hash = 1;
           int hash = 1;
           if (Number.Length != 0) hash ^= Number.GetHashCode();
           if (Number.Length != 0) hash ^= Number.GetHashCode();
-          if (Type != global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType.MOBILE) hash ^= Type.GetHashCode();
+          if (Type != 0) hash ^= Type.GetHashCode();
           return hash;
           return hash;
         }
         }
 
 
@@ -313,7 +313,7 @@ namespace Google.Protobuf.Examples.AddressBook {
             output.WriteRawTag(10);
             output.WriteRawTag(10);
             output.WriteString(Number);
             output.WriteString(Number);
           }
           }
-          if (Type != global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType.MOBILE) {
+          if (Type != 0) {
             output.WriteRawTag(16);
             output.WriteRawTag(16);
             output.WriteEnum((int) Type);
             output.WriteEnum((int) Type);
           }
           }
@@ -324,7 +324,7 @@ namespace Google.Protobuf.Examples.AddressBook {
           if (Number.Length != 0) {
           if (Number.Length != 0) {
             size += 1 + pb::CodedOutputStream.ComputeStringSize(Number);
             size += 1 + pb::CodedOutputStream.ComputeStringSize(Number);
           }
           }
-          if (Type != global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType.MOBILE) {
+          if (Type != 0) {
             size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
             size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
           }
           }
           return size;
           return size;
@@ -337,7 +337,7 @@ namespace Google.Protobuf.Examples.AddressBook {
           if (other.Number.Length != 0) {
           if (other.Number.Length != 0) {
             Number = other.Number;
             Number = other.Number;
           }
           }
-          if (other.Type != global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType.MOBILE) {
+          if (other.Type != 0) {
             Type = other.Type;
             Type = other.Type;
           }
           }
         }
         }

+ 3 - 3
csharp/src/AddressBook/ListPeople.cs

@@ -55,13 +55,13 @@ namespace Google.Protobuf.Examples.AddressBook
                 {
                 {
                     switch (phoneNumber.Type)
                     switch (phoneNumber.Type)
                     {
                     {
-                        case Person.Types.PhoneType.MOBILE:
+                        case Person.Types.PhoneType.Mobile:
                             Console.Write("  Mobile phone #: ");
                             Console.Write("  Mobile phone #: ");
                             break;
                             break;
-                        case Person.Types.PhoneType.HOME:
+                        case Person.Types.PhoneType.Home:
                             Console.Write("  Home phone #: ");
                             Console.Write("  Home phone #: ");
                             break;
                             break;
-                        case Person.Types.PhoneType.WORK:
+                        case Person.Types.PhoneType.Work:
                             Console.Write("  Work phone #: ");
                             Console.Write("  Work phone #: ");
                             break;
                             break;
                     }
                     }

+ 25 - 25
csharp/src/Google.Protobuf.Conformance/Conformance.cs

@@ -199,15 +199,15 @@ namespace Conformance {
   }
   }
   #region Enums
   #region Enums
   public enum WireFormat {
   public enum WireFormat {
-    UNSPECIFIED = 0,
-    PROTOBUF = 1,
-    JSON = 2,
+    [pbr::OriginalName("UNSPECIFIED")] Unspecified = 0,
+    [pbr::OriginalName("PROTOBUF")] Protobuf = 1,
+    [pbr::OriginalName("JSON")] Json = 2,
   }
   }
 
 
   public enum ForeignEnum {
   public enum ForeignEnum {
-    FOREIGN_FOO = 0,
-    FOREIGN_BAR = 1,
-    FOREIGN_BAZ = 2,
+    [pbr::OriginalName("FOREIGN_FOO")] ForeignFoo = 0,
+    [pbr::OriginalName("FOREIGN_BAR")] ForeignBar = 1,
+    [pbr::OriginalName("FOREIGN_BAZ")] ForeignBaz = 2,
   }
   }
 
 
   #endregion
   #endregion
@@ -278,7 +278,7 @@ namespace Conformance {
 
 
     /// <summary>Field number for the "requested_output_format" field.</summary>
     /// <summary>Field number for the "requested_output_format" field.</summary>
     public const int RequestedOutputFormatFieldNumber = 3;
     public const int RequestedOutputFormatFieldNumber = 3;
-    private global::Conformance.WireFormat requestedOutputFormat_ = global::Conformance.WireFormat.UNSPECIFIED;
+    private global::Conformance.WireFormat requestedOutputFormat_ = 0;
     /// <summary>
     /// <summary>
     ///  Which format should the testee serialize its message to?
     ///  Which format should the testee serialize its message to?
     /// </summary>
     /// </summary>
@@ -328,7 +328,7 @@ namespace Conformance {
       int hash = 1;
       int hash = 1;
       if (payloadCase_ == PayloadOneofCase.ProtobufPayload) hash ^= ProtobufPayload.GetHashCode();
       if (payloadCase_ == PayloadOneofCase.ProtobufPayload) hash ^= ProtobufPayload.GetHashCode();
       if (payloadCase_ == PayloadOneofCase.JsonPayload) hash ^= JsonPayload.GetHashCode();
       if (payloadCase_ == PayloadOneofCase.JsonPayload) hash ^= JsonPayload.GetHashCode();
-      if (RequestedOutputFormat != global::Conformance.WireFormat.UNSPECIFIED) hash ^= RequestedOutputFormat.GetHashCode();
+      if (RequestedOutputFormat != 0) hash ^= RequestedOutputFormat.GetHashCode();
       hash ^= (int) payloadCase_;
       hash ^= (int) payloadCase_;
       return hash;
       return hash;
     }
     }
@@ -346,7 +346,7 @@ namespace Conformance {
         output.WriteRawTag(18);
         output.WriteRawTag(18);
         output.WriteString(JsonPayload);
         output.WriteString(JsonPayload);
       }
       }
-      if (RequestedOutputFormat != global::Conformance.WireFormat.UNSPECIFIED) {
+      if (RequestedOutputFormat != 0) {
         output.WriteRawTag(24);
         output.WriteRawTag(24);
         output.WriteEnum((int) RequestedOutputFormat);
         output.WriteEnum((int) RequestedOutputFormat);
       }
       }
@@ -360,7 +360,7 @@ namespace Conformance {
       if (payloadCase_ == PayloadOneofCase.JsonPayload) {
       if (payloadCase_ == PayloadOneofCase.JsonPayload) {
         size += 1 + pb::CodedOutputStream.ComputeStringSize(JsonPayload);
         size += 1 + pb::CodedOutputStream.ComputeStringSize(JsonPayload);
       }
       }
-      if (RequestedOutputFormat != global::Conformance.WireFormat.UNSPECIFIED) {
+      if (RequestedOutputFormat != 0) {
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) RequestedOutputFormat);
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) RequestedOutputFormat);
       }
       }
       return size;
       return size;
@@ -370,7 +370,7 @@ namespace Conformance {
       if (other == null) {
       if (other == null) {
         return;
         return;
       }
       }
-      if (other.RequestedOutputFormat != global::Conformance.WireFormat.UNSPECIFIED) {
+      if (other.RequestedOutputFormat != 0) {
         RequestedOutputFormat = other.RequestedOutputFormat;
         RequestedOutputFormat = other.RequestedOutputFormat;
       }
       }
       switch (other.PayloadCase) {
       switch (other.PayloadCase) {
@@ -1044,7 +1044,7 @@ namespace Conformance {
 
 
     /// <summary>Field number for the "optional_nested_enum" field.</summary>
     /// <summary>Field number for the "optional_nested_enum" field.</summary>
     public const int OptionalNestedEnumFieldNumber = 21;
     public const int OptionalNestedEnumFieldNumber = 21;
-    private global::Conformance.TestAllTypes.Types.NestedEnum optionalNestedEnum_ = global::Conformance.TestAllTypes.Types.NestedEnum.FOO;
+    private global::Conformance.TestAllTypes.Types.NestedEnum optionalNestedEnum_ = 0;
     public global::Conformance.TestAllTypes.Types.NestedEnum OptionalNestedEnum {
     public global::Conformance.TestAllTypes.Types.NestedEnum OptionalNestedEnum {
       get { return optionalNestedEnum_; }
       get { return optionalNestedEnum_; }
       set {
       set {
@@ -1054,7 +1054,7 @@ namespace Conformance {
 
 
     /// <summary>Field number for the "optional_foreign_enum" field.</summary>
     /// <summary>Field number for the "optional_foreign_enum" field.</summary>
     public const int OptionalForeignEnumFieldNumber = 22;
     public const int OptionalForeignEnumFieldNumber = 22;
-    private global::Conformance.ForeignEnum optionalForeignEnum_ = global::Conformance.ForeignEnum.FOREIGN_FOO;
+    private global::Conformance.ForeignEnum optionalForeignEnum_ = 0;
     public global::Conformance.ForeignEnum OptionalForeignEnum {
     public global::Conformance.ForeignEnum OptionalForeignEnum {
       get { return optionalForeignEnum_; }
       get { return optionalForeignEnum_; }
       set {
       set {
@@ -2079,8 +2079,8 @@ namespace Conformance {
       if (OptionalBytes.Length != 0) hash ^= OptionalBytes.GetHashCode();
       if (OptionalBytes.Length != 0) hash ^= OptionalBytes.GetHashCode();
       if (optionalNestedMessage_ != null) hash ^= OptionalNestedMessage.GetHashCode();
       if (optionalNestedMessage_ != null) hash ^= OptionalNestedMessage.GetHashCode();
       if (optionalForeignMessage_ != null) hash ^= OptionalForeignMessage.GetHashCode();
       if (optionalForeignMessage_ != null) hash ^= OptionalForeignMessage.GetHashCode();
-      if (OptionalNestedEnum != global::Conformance.TestAllTypes.Types.NestedEnum.FOO) hash ^= OptionalNestedEnum.GetHashCode();
-      if (OptionalForeignEnum != global::Conformance.ForeignEnum.FOREIGN_FOO) hash ^= OptionalForeignEnum.GetHashCode();
+      if (OptionalNestedEnum != 0) hash ^= OptionalNestedEnum.GetHashCode();
+      if (OptionalForeignEnum != 0) hash ^= OptionalForeignEnum.GetHashCode();
       if (OptionalStringPiece.Length != 0) hash ^= OptionalStringPiece.GetHashCode();
       if (OptionalStringPiece.Length != 0) hash ^= OptionalStringPiece.GetHashCode();
       if (OptionalCord.Length != 0) hash ^= OptionalCord.GetHashCode();
       if (OptionalCord.Length != 0) hash ^= OptionalCord.GetHashCode();
       if (recursiveMessage_ != null) hash ^= RecursiveMessage.GetHashCode();
       if (recursiveMessage_ != null) hash ^= RecursiveMessage.GetHashCode();
@@ -2247,11 +2247,11 @@ namespace Conformance {
         output.WriteRawTag(154, 1);
         output.WriteRawTag(154, 1);
         output.WriteMessage(OptionalForeignMessage);
         output.WriteMessage(OptionalForeignMessage);
       }
       }
-      if (OptionalNestedEnum != global::Conformance.TestAllTypes.Types.NestedEnum.FOO) {
+      if (OptionalNestedEnum != 0) {
         output.WriteRawTag(168, 1);
         output.WriteRawTag(168, 1);
         output.WriteEnum((int) OptionalNestedEnum);
         output.WriteEnum((int) OptionalNestedEnum);
       }
       }
-      if (OptionalForeignEnum != global::Conformance.ForeignEnum.FOREIGN_FOO) {
+      if (OptionalForeignEnum != 0) {
         output.WriteRawTag(176, 1);
         output.WriteRawTag(176, 1);
         output.WriteEnum((int) OptionalForeignEnum);
         output.WriteEnum((int) OptionalForeignEnum);
       }
       }
@@ -2492,10 +2492,10 @@ namespace Conformance {
       if (optionalForeignMessage_ != null) {
       if (optionalForeignMessage_ != null) {
         size += 2 + pb::CodedOutputStream.ComputeMessageSize(OptionalForeignMessage);
         size += 2 + pb::CodedOutputStream.ComputeMessageSize(OptionalForeignMessage);
       }
       }
-      if (OptionalNestedEnum != global::Conformance.TestAllTypes.Types.NestedEnum.FOO) {
+      if (OptionalNestedEnum != 0) {
         size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) OptionalNestedEnum);
         size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) OptionalNestedEnum);
       }
       }
-      if (OptionalForeignEnum != global::Conformance.ForeignEnum.FOREIGN_FOO) {
+      if (OptionalForeignEnum != 0) {
         size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) OptionalForeignEnum);
         size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) OptionalForeignEnum);
       }
       }
       if (OptionalStringPiece.Length != 0) {
       if (OptionalStringPiece.Length != 0) {
@@ -2719,10 +2719,10 @@ namespace Conformance {
         }
         }
         OptionalForeignMessage.MergeFrom(other.OptionalForeignMessage);
         OptionalForeignMessage.MergeFrom(other.OptionalForeignMessage);
       }
       }
-      if (other.OptionalNestedEnum != global::Conformance.TestAllTypes.Types.NestedEnum.FOO) {
+      if (other.OptionalNestedEnum != 0) {
         OptionalNestedEnum = other.OptionalNestedEnum;
         OptionalNestedEnum = other.OptionalNestedEnum;
       }
       }
-      if (other.OptionalForeignEnum != global::Conformance.ForeignEnum.FOREIGN_FOO) {
+      if (other.OptionalForeignEnum != 0) {
         OptionalForeignEnum = other.OptionalForeignEnum;
         OptionalForeignEnum = other.OptionalForeignEnum;
       }
       }
       if (other.OptionalStringPiece.Length != 0) {
       if (other.OptionalStringPiece.Length != 0) {
@@ -3448,13 +3448,13 @@ namespace Conformance {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     public static partial class Types {
     public static partial class Types {
       public enum NestedEnum {
       public enum NestedEnum {
-        FOO = 0,
-        BAR = 1,
-        BAZ = 2,
+        [pbr::OriginalName("FOO")] Foo = 0,
+        [pbr::OriginalName("BAR")] Bar = 1,
+        [pbr::OriginalName("BAZ")] Baz = 2,
         /// <summary>
         /// <summary>
         ///  Intentionally negative.
         ///  Intentionally negative.
         /// </summary>
         /// </summary>
-        NEG = -1,
+        [pbr::OriginalName("NEG")] Neg = -1,
       }
       }
 
 
       [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
       [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]

+ 2 - 2
csharp/src/Google.Protobuf.Conformance/Program.cs

@@ -109,10 +109,10 @@ namespace Google.Protobuf.Conformance
             {
             {
                 switch (request.RequestedOutputFormat)
                 switch (request.RequestedOutputFormat)
                 {
                 {
-                    case global::Conformance.WireFormat.JSON:
+                    case global::Conformance.WireFormat.Json:
                         var formatter = new JsonFormatter(new JsonFormatter.Settings(false, typeRegistry));
                         var formatter = new JsonFormatter(new JsonFormatter.Settings(false, typeRegistry));
                         return new ConformanceResponse { JsonPayload = formatter.Format(message) };
                         return new ConformanceResponse { JsonPayload = formatter.Format(message) };
-                    case global::Conformance.WireFormat.PROTOBUF:
+                    case global::Conformance.WireFormat.Protobuf:
                         return new ConformanceResponse { ProtobufPayload = message.ToByteString() };
                         return new ConformanceResponse { ProtobufPayload = message.ToByteString() };
                     default:
                     default:
                         throw new Exception("Unsupported request output format: " + request.PayloadCase);
                         throw new Exception("Unsupported request output format: " + request.PayloadCase);

+ 1 - 1
csharp/src/Google.Protobuf.Test/FieldCodecTest.cs

@@ -58,7 +58,7 @@ namespace Google.Protobuf
             new FieldCodecTestData<float>(FieldCodec.ForFloat(100), 1234.5f, "Float"),
             new FieldCodecTestData<float>(FieldCodec.ForFloat(100), 1234.5f, "Float"),
             new FieldCodecTestData<double>(FieldCodec.ForDouble(100), 1234567890.5d, "Double"),
             new FieldCodecTestData<double>(FieldCodec.ForDouble(100), 1234567890.5d, "Double"),
             new FieldCodecTestData<ForeignEnum>(
             new FieldCodecTestData<ForeignEnum>(
-                FieldCodec.ForEnum(100, t => (int) t, t => (ForeignEnum) t), ForeignEnum.FOREIGN_BAZ, "Enum"),
+                FieldCodec.ForEnum(100, t => (int) t, t => (ForeignEnum) t), ForeignEnum.ForeignBaz, "Enum"),
             new FieldCodecTestData<ForeignMessage>(
             new FieldCodecTestData<ForeignMessage>(
                 FieldCodec.ForMessage(100, ForeignMessage.Parser), new ForeignMessage { C = 10 }, "Message"),
                 FieldCodec.ForMessage(100, ForeignMessage.Parser), new ForeignMessage { C = 10 }, "Message"),
         };
         };

+ 16 - 16
csharp/src/Google.Protobuf.Test/GeneratedMessageTest.cs

@@ -66,13 +66,13 @@ namespace Google.Protobuf
             Assert.AreEqual(0, message.SingleFixed32);
             Assert.AreEqual(0, message.SingleFixed32);
             Assert.AreEqual(0L, message.SingleFixed64);
             Assert.AreEqual(0L, message.SingleFixed64);
             Assert.AreEqual(0.0f, message.SingleFloat);
             Assert.AreEqual(0.0f, message.SingleFloat);
-            Assert.AreEqual(ForeignEnum.FOREIGN_UNSPECIFIED, message.SingleForeignEnum);
+            Assert.AreEqual(ForeignEnum.ForeignUnspecified, message.SingleForeignEnum);
             Assert.IsNull(message.SingleForeignMessage);
             Assert.IsNull(message.SingleForeignMessage);
-            Assert.AreEqual(ImportEnum.IMPORT_ENUM_UNSPECIFIED, message.SingleImportEnum);
+            Assert.AreEqual(ImportEnum.Unspecified, message.SingleImportEnum);
             Assert.IsNull(message.SingleImportMessage);
             Assert.IsNull(message.SingleImportMessage);
             Assert.AreEqual(0, message.SingleInt32);
             Assert.AreEqual(0, message.SingleInt32);
             Assert.AreEqual(0L, message.SingleInt64);
             Assert.AreEqual(0L, message.SingleInt64);
-            Assert.AreEqual(TestAllTypes.Types.NestedEnum.NESTED_ENUM_UNSPECIFIED, message.SingleNestedEnum);
+            Assert.AreEqual(TestAllTypes.Types.NestedEnum.Unspecified, message.SingleNestedEnum);
             Assert.IsNull(message.SingleNestedMessage);
             Assert.IsNull(message.SingleNestedMessage);
             Assert.IsNull(message.SinglePublicImportMessage);
             Assert.IsNull(message.SinglePublicImportMessage);
             Assert.AreEqual(0, message.SingleSfixed32);
             Assert.AreEqual(0, message.SingleSfixed32);
@@ -145,13 +145,13 @@ namespace Google.Protobuf
                 SingleFixed32 = 23,
                 SingleFixed32 = 23,
                 SingleFixed64 = 1234567890123,
                 SingleFixed64 = 1234567890123,
                 SingleFloat = 12.25f,
                 SingleFloat = 12.25f,
-                SingleForeignEnum = ForeignEnum.FOREIGN_BAR,
+                SingleForeignEnum = ForeignEnum.ForeignBar,
                 SingleForeignMessage = new ForeignMessage { C = 10 },
                 SingleForeignMessage = new ForeignMessage { C = 10 },
-                SingleImportEnum = ImportEnum.IMPORT_BAZ,
+                SingleImportEnum = ImportEnum.ImportBaz,
                 SingleImportMessage = new ImportMessage { D = 20 },
                 SingleImportMessage = new ImportMessage { D = 20 },
                 SingleInt32 = 100,
                 SingleInt32 = 100,
                 SingleInt64 = 3210987654321,
                 SingleInt64 = 3210987654321,
-                SingleNestedEnum = TestAllTypes.Types.NestedEnum.FOO,
+                SingleNestedEnum = TestAllTypes.Types.NestedEnum.Foo,
                 SingleNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 35 },
                 SingleNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 35 },
                 SinglePublicImportMessage = new PublicImportMessage { E = 54 },
                 SinglePublicImportMessage = new PublicImportMessage { E = 54 },
                 SingleSfixed32 = -123,
                 SingleSfixed32 = -123,
@@ -179,13 +179,13 @@ namespace Google.Protobuf
                 RepeatedFixed32 = { uint.MaxValue, 23 },
                 RepeatedFixed32 = { uint.MaxValue, 23 },
                 RepeatedFixed64 = { ulong.MaxValue, 1234567890123 },
                 RepeatedFixed64 = { ulong.MaxValue, 1234567890123 },
                 RepeatedFloat = { 100f, 12.25f },
                 RepeatedFloat = { 100f, 12.25f },
-                RepeatedForeignEnum = { ForeignEnum.FOREIGN_FOO, ForeignEnum.FOREIGN_BAR },
+                RepeatedForeignEnum = { ForeignEnum.ForeignFoo, ForeignEnum.ForeignBar },
                 RepeatedForeignMessage = { new ForeignMessage(), new ForeignMessage { C = 10 } },
                 RepeatedForeignMessage = { new ForeignMessage(), new ForeignMessage { C = 10 } },
-                RepeatedImportEnum = { ImportEnum.IMPORT_BAZ, ImportEnum.IMPORT_ENUM_UNSPECIFIED },
+                RepeatedImportEnum = { ImportEnum.ImportBaz, ImportEnum.Unspecified },
                 RepeatedImportMessage = { new ImportMessage { D = 20 }, new ImportMessage { D = 25 } },
                 RepeatedImportMessage = { new ImportMessage { D = 20 }, new ImportMessage { D = 25 } },
                 RepeatedInt32 = { 100, 200 },
                 RepeatedInt32 = { 100, 200 },
                 RepeatedInt64 = { 3210987654321, long.MaxValue },
                 RepeatedInt64 = { 3210987654321, long.MaxValue },
-                RepeatedNestedEnum = { TestAllTypes.Types.NestedEnum.FOO, TestAllTypes.Types.NestedEnum.NEG },
+                RepeatedNestedEnum = { TestAllTypes.Types.NestedEnum.Foo, TestAllTypes.Types.NestedEnum.Neg },
                 RepeatedNestedMessage = { new TestAllTypes.Types.NestedMessage { Bb = 35 }, new TestAllTypes.Types.NestedMessage { Bb = 10 } },
                 RepeatedNestedMessage = { new TestAllTypes.Types.NestedMessage { Bb = 35 }, new TestAllTypes.Types.NestedMessage { Bb = 10 } },
                 RepeatedPublicImportMessage = { new PublicImportMessage { E = 54 }, new PublicImportMessage { E = -1 } },
                 RepeatedPublicImportMessage = { new PublicImportMessage { E = 54 }, new PublicImportMessage { E = -1 } },
                 RepeatedSfixed32 = { -123, 123 },
                 RepeatedSfixed32 = { -123, 123 },
@@ -224,8 +224,8 @@ namespace Google.Protobuf
                     { 5, new ForeignMessage() },
                     { 5, new ForeignMessage() },
                 },
                 },
                 MapInt32Enum = {
                 MapInt32Enum = {
-                    { 1, MapEnum.MAP_ENUM_BAR },
-                    { 2000, MapEnum.MAP_ENUM_FOO }
+                    { 1, MapEnum.Bar },
+                    { 2000, MapEnum.Foo }
                 }
                 }
             };
             };
 
 
@@ -249,7 +249,7 @@ namespace Google.Protobuf
             Assert.AreEqual(1, parsed.MapInt32Bytes.Count);
             Assert.AreEqual(1, parsed.MapInt32Bytes.Count);
             Assert.AreEqual(ByteString.Empty, parsed.MapInt32Bytes[0]);
             Assert.AreEqual(ByteString.Empty, parsed.MapInt32Bytes[0]);
         }
         }
-        
+
         [Test]
         [Test]
         public void MapWithOnlyValue()
         public void MapWithOnlyValue()
         {
         {
@@ -449,7 +449,7 @@ namespace Google.Protobuf
                 SingleFloat = 12.25f,
                 SingleFloat = 12.25f,
                 SingleInt32 = 100,
                 SingleInt32 = 100,
                 SingleInt64 = 3210987654321,
                 SingleInt64 = 3210987654321,
-                SingleNestedEnum = TestAllTypes.Types.NestedEnum.FOO,
+                SingleNestedEnum = TestAllTypes.Types.NestedEnum.Foo,
                 SingleSfixed32 = -123,
                 SingleSfixed32 = -123,
                 SingleSfixed64 = -12345678901234,
                 SingleSfixed64 = -12345678901234,
                 SingleSint32 = -456,
                 SingleSint32 = -456,
@@ -479,7 +479,7 @@ namespace Google.Protobuf
                 RepeatedFloat = { 100f, 12.25f },
                 RepeatedFloat = { 100f, 12.25f },
                 RepeatedInt32 = { 100, 200 },
                 RepeatedInt32 = { 100, 200 },
                 RepeatedInt64 = { 3210987654321, long.MaxValue },
                 RepeatedInt64 = { 3210987654321, long.MaxValue },
-                RepeatedNestedEnum = { TestAllTypes.Types.NestedEnum.FOO, TestAllTypes.Types.NestedEnum.NEG },
+                RepeatedNestedEnum = { TestAllTypes.Types.NestedEnum.Foo, TestAllTypes.Types.NestedEnum.Neg },
                 RepeatedSfixed32 = { -123, 123 },
                 RepeatedSfixed32 = { -123, 123 },
                 RepeatedSfixed64 = { -12345678901234, 12345678901234 },
                 RepeatedSfixed64 = { -12345678901234, 12345678901234 },
                 RepeatedSint32 = { -456, 100 },
                 RepeatedSint32 = { -456, 100 },
@@ -670,7 +670,7 @@ namespace Google.Protobuf
         {
         {
             // 130, 3 is the message tag
             // 130, 3 is the message tag
             // 1 is the data length - but there's no data.
             // 1 is the data length - but there's no data.
-            var data = new byte[] { 130, 3, 1 };            
+            var data = new byte[] { 130, 3, 1 };
             Assert.Throws<InvalidProtocolBufferException>(() => TestAllTypes.Parser.ParseFrom(data));
             Assert.Throws<InvalidProtocolBufferException>(() => TestAllTypes.Parser.ParseFrom(data));
         }
         }
 
 
@@ -720,4 +720,4 @@ namespace Google.Protobuf
             Assert.AreEqual("{ \"c\": 31 }", writer.ToString());
             Assert.AreEqual("{ \"c\": 31 }", writer.ToString());
         }
         }
     }
     }
-}
+}

+ 5 - 5
csharp/src/Google.Protobuf.Test/JsonFormatterTest.cs

@@ -75,13 +75,13 @@ namespace Google.Protobuf
                 SingleFixed32 = 23,
                 SingleFixed32 = 23,
                 SingleFixed64 = 1234567890123,
                 SingleFixed64 = 1234567890123,
                 SingleFloat = 12.25f,
                 SingleFloat = 12.25f,
-                SingleForeignEnum = ForeignEnum.FOREIGN_BAR,
+                SingleForeignEnum = ForeignEnum.ForeignBar,
                 SingleForeignMessage = new ForeignMessage { C = 10 },
                 SingleForeignMessage = new ForeignMessage { C = 10 },
-                SingleImportEnum = ImportEnum.IMPORT_BAZ,
+                SingleImportEnum = ImportEnum.ImportBaz,
                 SingleImportMessage = new ImportMessage { D = 20 },
                 SingleImportMessage = new ImportMessage { D = 20 },
                 SingleInt32 = 100,
                 SingleInt32 = 100,
                 SingleInt64 = 3210987654321,
                 SingleInt64 = 3210987654321,
-                SingleNestedEnum = TestAllTypes.Types.NestedEnum.FOO,
+                SingleNestedEnum = TestAllTypes.Types.NestedEnum.Foo,
                 SingleNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 35 },
                 SingleNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 35 },
                 SinglePublicImportMessage = new PublicImportMessage { E = 54 },
                 SinglePublicImportMessage = new PublicImportMessage { E = 54 },
                 SingleSfixed32 = -123,
                 SingleSfixed32 = -123,
@@ -174,14 +174,14 @@ namespace Google.Protobuf
         [Test]
         [Test]
         public void UnknownEnumValueNumeric_RepeatedField()
         public void UnknownEnumValueNumeric_RepeatedField()
         {
         {
-            var message = new TestAllTypes { RepeatedForeignEnum = { ForeignEnum.FOREIGN_BAZ, (ForeignEnum) 100, ForeignEnum.FOREIGN_FOO } };
+            var message = new TestAllTypes { RepeatedForeignEnum = { ForeignEnum.ForeignBaz, (ForeignEnum) 100, ForeignEnum.ForeignFoo } };
             AssertJson("{ 'repeatedForeignEnum': [ 'FOREIGN_BAZ', 100, 'FOREIGN_FOO' ] }", JsonFormatter.Default.Format(message));
             AssertJson("{ 'repeatedForeignEnum': [ 'FOREIGN_BAZ', 100, 'FOREIGN_FOO' ] }", JsonFormatter.Default.Format(message));
         }
         }
 
 
         [Test]
         [Test]
         public void UnknownEnumValueNumeric_MapField()
         public void UnknownEnumValueNumeric_MapField()
         {
         {
-            var message = new TestMap { MapInt32Enum = { { 1, MapEnum.MAP_ENUM_FOO }, { 2, (MapEnum) 100 }, { 3, MapEnum.MAP_ENUM_BAR } } };
+            var message = new TestMap { MapInt32Enum = { { 1, MapEnum.Foo }, { 2, (MapEnum) 100 }, { 3, MapEnum.Bar } } };
             AssertJson("{ 'mapInt32Enum': { '1': 'MAP_ENUM_FOO', '2': 100, '3': 'MAP_ENUM_BAR' } }", JsonFormatter.Default.Format(message));
             AssertJson("{ 'mapInt32Enum': { '1': 'MAP_ENUM_FOO', '2': 100, '3': 'MAP_ENUM_BAR' } }", JsonFormatter.Default.Format(message));
         }
         }
 
 

+ 7 - 7
csharp/src/Google.Protobuf.Test/JsonParserTest.cs

@@ -142,8 +142,8 @@ namespace Google.Protobuf
         [TestCase(typeof(DoubleValue), "1.5", 1.5d)]
         [TestCase(typeof(DoubleValue), "1.5", 1.5d)]
         public void Wrappers_Standalone(System.Type wrapperType, string json, object expectedValue)
         public void Wrappers_Standalone(System.Type wrapperType, string json, object expectedValue)
         {
         {
-            IMessage parsed = (IMessage) Activator.CreateInstance(wrapperType);
-            IMessage expected = (IMessage) Activator.CreateInstance(wrapperType);
+            IMessage parsed = (IMessage)Activator.CreateInstance(wrapperType);
+            IMessage expected = (IMessage)Activator.CreateInstance(wrapperType);
             JsonParser.Default.Merge(parsed, "null");
             JsonParser.Default.Merge(parsed, "null");
             Assert.AreEqual(expected, parsed);
             Assert.AreEqual(expected, parsed);
 
 
@@ -640,7 +640,7 @@ namespace Google.Protobuf
             var parsed = Timestamp.Parser.ParseJson(json);
             var parsed = Timestamp.Parser.ParseJson(json);
             Assert.AreEqual(WrapInQuotes(expectedFormatted), parsed.ToString());
             Assert.AreEqual(WrapInQuotes(expectedFormatted), parsed.ToString());
         }
         }
-        
+
         [Test]
         [Test]
         [TestCase("2015-10-09 14:46:23.123456789Z", Description = "No T between date and time")]
         [TestCase("2015-10-09 14:46:23.123456789Z", Description = "No T between date and time")]
         [TestCase("2015/10/09T14:46:23.123456789Z", Description = "Wrong date separators")]
         [TestCase("2015/10/09T14:46:23.123456789Z", Description = "Wrong date separators")]
@@ -886,9 +886,9 @@ namespace Google.Protobuf
         }
         }
 
 
         [Test]
         [Test]
-        [TestCase("\"FOREIGN_BAR\"", ForeignEnum.FOREIGN_BAR)]
-        [TestCase("5", ForeignEnum.FOREIGN_BAR)]
-        [TestCase("100", (ForeignEnum) 100)]
+        [TestCase("\"FOREIGN_BAR\"", ForeignEnum.ForeignBar)]
+        [TestCase("5", ForeignEnum.ForeignBar)]
+        [TestCase("100", (ForeignEnum)100)]
         public void EnumValid(string value, ForeignEnum expectedValue)
         public void EnumValid(string value, ForeignEnum expectedValue)
         {
         {
             string json = "{ \"singleForeignEnum\": " + value + " }";
             string json = "{ \"singleForeignEnum\": " + value + " }";
@@ -922,4 +922,4 @@ namespace Google.Protobuf
             return '"' + text + '"';
             return '"' + text + '"';
         }
         }
     }
     }
-}
+}

+ 1 - 1
csharp/src/Google.Protobuf.Test/Reflection/DescriptorsTest.cs

@@ -195,7 +195,7 @@ namespace Google.Protobuf.Reflection
             Assert.AreEqual(value, enumType.Values[1]);
             Assert.AreEqual(value, enumType.Values[1]);
             Assert.AreEqual("FOREIGN_FOO", value.Name);
             Assert.AreEqual("FOREIGN_FOO", value.Name);
             Assert.AreEqual(4, value.Number);
             Assert.AreEqual(4, value.Number);
-            Assert.AreEqual((int) ForeignEnum.FOREIGN_FOO, value.Number);
+            Assert.AreEqual((int) ForeignEnum.ForeignFoo, value.Number);
             Assert.AreEqual(value, enumType.FindValueByNumber(4));
             Assert.AreEqual(value, enumType.FindValueByNumber(4));
             Assert.Null(enumType.FindValueByName("NO_SUCH_VALUE"));
             Assert.Null(enumType.FindValueByName("NO_SUCH_VALUE"));
             for (int i = 0; i < enumType.Values.Count; i++)
             for (int i = 0; i < enumType.Values.Count; i++)

+ 2 - 2
csharp/src/Google.Protobuf.Test/Reflection/FieldAccessTest.cs

@@ -128,7 +128,7 @@ namespace Google.Protobuf.Reflection
             fields[TestAllTypes.SingleInt32FieldNumber].Accessor.SetValue(message, 500);
             fields[TestAllTypes.SingleInt32FieldNumber].Accessor.SetValue(message, 500);
             fields[TestAllTypes.SingleStringFieldNumber].Accessor.SetValue(message, "It's a string");
             fields[TestAllTypes.SingleStringFieldNumber].Accessor.SetValue(message, "It's a string");
             fields[TestAllTypes.SingleBytesFieldNumber].Accessor.SetValue(message, ByteString.CopyFrom(99, 98, 97));
             fields[TestAllTypes.SingleBytesFieldNumber].Accessor.SetValue(message, ByteString.CopyFrom(99, 98, 97));
-            fields[TestAllTypes.SingleForeignEnumFieldNumber].Accessor.SetValue(message, ForeignEnum.FOREIGN_FOO);
+            fields[TestAllTypes.SingleForeignEnumFieldNumber].Accessor.SetValue(message, ForeignEnum.ForeignFoo);
             fields[TestAllTypes.SingleForeignMessageFieldNumber].Accessor.SetValue(message, new ForeignMessage { C = 12345 });
             fields[TestAllTypes.SingleForeignMessageFieldNumber].Accessor.SetValue(message, new ForeignMessage { C = 12345 });
             fields[TestAllTypes.SingleDoubleFieldNumber].Accessor.SetValue(message, 20150701.5);
             fields[TestAllTypes.SingleDoubleFieldNumber].Accessor.SetValue(message, 20150701.5);
 
 
@@ -138,7 +138,7 @@ namespace Google.Protobuf.Reflection
                 SingleInt32 = 500,
                 SingleInt32 = 500,
                 SingleString = "It's a string",
                 SingleString = "It's a string",
                 SingleBytes = ByteString.CopyFrom(99, 98, 97),
                 SingleBytes = ByteString.CopyFrom(99, 98, 97),
-                SingleForeignEnum = ForeignEnum.FOREIGN_FOO,
+                SingleForeignEnum = ForeignEnum.ForeignFoo,
                 SingleForeignMessage = new ForeignMessage { C = 12345 },
                 SingleForeignMessage = new ForeignMessage { C = 12345 },
                 SingleDouble = 20150701.5
                 SingleDouble = 20150701.5
             };
             };

+ 8 - 8
csharp/src/Google.Protobuf.Test/SampleMessages.cs

@@ -54,13 +54,13 @@ namespace Google.Protobuf
                 SingleFixed32 = 23,
                 SingleFixed32 = 23,
                 SingleFixed64 = 1234567890123,
                 SingleFixed64 = 1234567890123,
                 SingleFloat = 12.25f,
                 SingleFloat = 12.25f,
-                SingleForeignEnum = ForeignEnum.FOREIGN_BAR,
+                SingleForeignEnum = ForeignEnum.ForeignBar,
                 SingleForeignMessage = new ForeignMessage { C = 10 },
                 SingleForeignMessage = new ForeignMessage { C = 10 },
-                SingleImportEnum = ImportEnum.IMPORT_BAZ,
+                SingleImportEnum = ImportEnum.ImportBaz,
                 SingleImportMessage = new ImportMessage { D = 20 },
                 SingleImportMessage = new ImportMessage { D = 20 },
                 SingleInt32 = 100,
                 SingleInt32 = 100,
                 SingleInt64 = 3210987654321,
                 SingleInt64 = 3210987654321,
-                SingleNestedEnum = TestAllTypes.Types.NestedEnum.FOO,
+                SingleNestedEnum = TestAllTypes.Types.NestedEnum.Foo,
                 SingleNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 35 },
                 SingleNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 35 },
                 SinglePublicImportMessage = new PublicImportMessage { E = 54 },
                 SinglePublicImportMessage = new PublicImportMessage { E = 54 },
                 SingleSfixed32 = -123,
                 SingleSfixed32 = -123,
@@ -76,13 +76,13 @@ namespace Google.Protobuf
                 RepeatedFixed32 = { UInt32.MaxValue, 23 },
                 RepeatedFixed32 = { UInt32.MaxValue, 23 },
                 RepeatedFixed64 = { UInt64.MaxValue, 1234567890123 },
                 RepeatedFixed64 = { UInt64.MaxValue, 1234567890123 },
                 RepeatedFloat = { 100f, 12.25f },
                 RepeatedFloat = { 100f, 12.25f },
-                RepeatedForeignEnum = { ForeignEnum.FOREIGN_FOO, ForeignEnum.FOREIGN_BAR },
+                RepeatedForeignEnum = { ForeignEnum.ForeignFoo, ForeignEnum.ForeignBar },
                 RepeatedForeignMessage = { new ForeignMessage(), new ForeignMessage { C = 10 } },
                 RepeatedForeignMessage = { new ForeignMessage(), new ForeignMessage { C = 10 } },
-                RepeatedImportEnum = { ImportEnum.IMPORT_BAZ, ImportEnum.IMPORT_ENUM_UNSPECIFIED },
+                RepeatedImportEnum = { ImportEnum.ImportBaz, ImportEnum.Unspecified },
                 RepeatedImportMessage = { new ImportMessage { D = 20 }, new ImportMessage { D = 25 } },
                 RepeatedImportMessage = { new ImportMessage { D = 20 }, new ImportMessage { D = 25 } },
                 RepeatedInt32 = { 100, 200 },
                 RepeatedInt32 = { 100, 200 },
                 RepeatedInt64 = { 3210987654321, Int64.MaxValue },
                 RepeatedInt64 = { 3210987654321, Int64.MaxValue },
-                RepeatedNestedEnum = { TestAllTypes.Types.NestedEnum.FOO, TestAllTypes.Types.NestedEnum.NEG },
+                RepeatedNestedEnum = { TestAllTypes.Types.NestedEnum.Foo, TestAllTypes.Types.NestedEnum.Neg },
                 RepeatedNestedMessage = { new TestAllTypes.Types.NestedMessage { Bb = 35 }, new TestAllTypes.Types.NestedMessage { Bb = 10 } },
                 RepeatedNestedMessage = { new TestAllTypes.Types.NestedMessage { Bb = 35 }, new TestAllTypes.Types.NestedMessage { Bb = 10 } },
                 RepeatedPublicImportMessage = { new PublicImportMessage { E = 54 }, new PublicImportMessage { E = -1 } },
                 RepeatedPublicImportMessage = { new PublicImportMessage { E = 54 }, new PublicImportMessage { E = -1 } },
                 RepeatedSfixed32 = { -123, 123 },
                 RepeatedSfixed32 = { -123, 123 },
@@ -92,8 +92,8 @@ namespace Google.Protobuf
                 RepeatedString = { "foo", "bar" },
                 RepeatedString = { "foo", "bar" },
                 RepeatedUint32 = { UInt32.MaxValue, UInt32.MinValue },
                 RepeatedUint32 = { UInt32.MaxValue, UInt32.MinValue },
                 RepeatedUint64 = { UInt64.MaxValue, UInt32.MinValue },
                 RepeatedUint64 = { UInt64.MaxValue, UInt32.MinValue },
-                OneofString = "Oneof string"                
+                OneofString = "Oneof string"
             };
             };
         }
         }
     }
     }
-}
+}

+ 2 - 2
csharp/src/Google.Protobuf.Test/TestCornerCases.cs

@@ -43,8 +43,8 @@ namespace Google.Protobuf
             NegativeEnumMessage msg = new NegativeEnumMessage
             NegativeEnumMessage msg = new NegativeEnumMessage
             {
             {
                 Value = NegativeEnum.MinusOne,
                 Value = NegativeEnum.MinusOne,
-                Values = { NegativeEnum.NEGATIVE_ENUM_ZERO, NegativeEnum.MinusOne, NegativeEnum.FiveBelow },
-                PackedValues = { NegativeEnum.NEGATIVE_ENUM_ZERO, NegativeEnum.MinusOne, NegativeEnum.FiveBelow }
+                Values = { NegativeEnum.Zero, NegativeEnum.MinusOne, NegativeEnum.FiveBelow },
+                PackedValues = { NegativeEnum.Zero, NegativeEnum.MinusOne, NegativeEnum.FiveBelow }
             };
             };
 
 
             Assert.AreEqual(58, msg.CalculateSize());
             Assert.AreEqual(58, msg.CalculateSize());

+ 4 - 4
csharp/src/Google.Protobuf.Test/TestProtos/MapUnittestProto3.cs

@@ -164,9 +164,9 @@ namespace Google.Protobuf.TestProtos {
   }
   }
   #region Enums
   #region Enums
   public enum MapEnum {
   public enum MapEnum {
-    MAP_ENUM_FOO = 0,
-    MAP_ENUM_BAR = 1,
-    MAP_ENUM_BAZ = 2,
+    [pbr::OriginalName("MAP_ENUM_FOO")] Foo = 0,
+    [pbr::OriginalName("MAP_ENUM_BAR")] Bar = 1,
+    [pbr::OriginalName("MAP_ENUM_BAZ")] Baz = 2,
   }
   }
 
 
   #endregion
   #endregion
@@ -1358,7 +1358,7 @@ namespace Google.Protobuf.TestProtos {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     public static partial class Types {
     public static partial class Types {
       public enum Type {
       public enum Type {
-        TYPE_FOO = 0,
+        [pbr::OriginalName("TYPE_FOO")] Foo = 0,
       }
       }
 
 
     }
     }

+ 4 - 4
csharp/src/Google.Protobuf.Test/TestProtos/UnittestImportProto3.cs

@@ -42,10 +42,10 @@ namespace Google.Protobuf.TestProtos {
   }
   }
   #region Enums
   #region Enums
   public enum ImportEnum {
   public enum ImportEnum {
-    IMPORT_ENUM_UNSPECIFIED = 0,
-    IMPORT_FOO = 7,
-    IMPORT_BAR = 8,
-    IMPORT_BAZ = 9,
+    [pbr::OriginalName("IMPORT_ENUM_UNSPECIFIED")] Unspecified = 0,
+    [pbr::OriginalName("IMPORT_FOO")] ImportFoo = 7,
+    [pbr::OriginalName("IMPORT_BAR")] ImportBar = 8,
+    [pbr::OriginalName("IMPORT_BAZ")] ImportBaz = 9,
   }
   }
 
 
   #endregion
   #endregion

+ 16 - 16
csharp/src/Google.Protobuf.Test/TestProtos/UnittestIssues.cs

@@ -66,14 +66,14 @@ namespace UnitTest.Issues.TestProtos {
   }
   }
   #region Enums
   #region Enums
   public enum NegativeEnum {
   public enum NegativeEnum {
-    NEGATIVE_ENUM_ZERO = 0,
-    FiveBelow = -5,
-    MinusOne = -1,
+    [pbr::OriginalName("NEGATIVE_ENUM_ZERO")] Zero = 0,
+    [pbr::OriginalName("FiveBelow")] FiveBelow = -5,
+    [pbr::OriginalName("MinusOne")] MinusOne = -1,
   }
   }
 
 
   public enum DeprecatedEnum {
   public enum DeprecatedEnum {
-    DEPRECATED_ZERO = 0,
-    one = 1,
+    [pbr::OriginalName("DEPRECATED_ZERO")] DeprecatedZero = 0,
+    [pbr::OriginalName("one")] One = 1,
   }
   }
 
 
   #endregion
   #endregion
@@ -356,7 +356,7 @@ namespace UnitTest.Issues.TestProtos {
 
 
     /// <summary>Field number for the "value" field.</summary>
     /// <summary>Field number for the "value" field.</summary>
     public const int ValueFieldNumber = 1;
     public const int ValueFieldNumber = 1;
-    private global::UnitTest.Issues.TestProtos.NegativeEnum value_ = global::UnitTest.Issues.TestProtos.NegativeEnum.NEGATIVE_ENUM_ZERO;
+    private global::UnitTest.Issues.TestProtos.NegativeEnum value_ = 0;
     public global::UnitTest.Issues.TestProtos.NegativeEnum Value {
     public global::UnitTest.Issues.TestProtos.NegativeEnum Value {
       get { return value_; }
       get { return value_; }
       set {
       set {
@@ -401,7 +401,7 @@ namespace UnitTest.Issues.TestProtos {
 
 
     public override int GetHashCode() {
     public override int GetHashCode() {
       int hash = 1;
       int hash = 1;
-      if (Value != global::UnitTest.Issues.TestProtos.NegativeEnum.NEGATIVE_ENUM_ZERO) hash ^= Value.GetHashCode();
+      if (Value != 0) hash ^= Value.GetHashCode();
       hash ^= values_.GetHashCode();
       hash ^= values_.GetHashCode();
       hash ^= packedValues_.GetHashCode();
       hash ^= packedValues_.GetHashCode();
       return hash;
       return hash;
@@ -412,7 +412,7 @@ namespace UnitTest.Issues.TestProtos {
     }
     }
 
 
     public void WriteTo(pb::CodedOutputStream output) {
     public void WriteTo(pb::CodedOutputStream output) {
-      if (Value != global::UnitTest.Issues.TestProtos.NegativeEnum.NEGATIVE_ENUM_ZERO) {
+      if (Value != 0) {
         output.WriteRawTag(8);
         output.WriteRawTag(8);
         output.WriteEnum((int) Value);
         output.WriteEnum((int) Value);
       }
       }
@@ -422,7 +422,7 @@ namespace UnitTest.Issues.TestProtos {
 
 
     public int CalculateSize() {
     public int CalculateSize() {
       int size = 0;
       int size = 0;
-      if (Value != global::UnitTest.Issues.TestProtos.NegativeEnum.NEGATIVE_ENUM_ZERO) {
+      if (Value != 0) {
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Value);
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Value);
       }
       }
       size += values_.CalculateSize(_repeated_values_codec);
       size += values_.CalculateSize(_repeated_values_codec);
@@ -434,7 +434,7 @@ namespace UnitTest.Issues.TestProtos {
       if (other == null) {
       if (other == null) {
         return;
         return;
       }
       }
-      if (other.Value != global::UnitTest.Issues.TestProtos.NegativeEnum.NEGATIVE_ENUM_ZERO) {
+      if (other.Value != 0) {
         Value = other.Value;
         Value = other.Value;
       }
       }
       values_.Add(other.values_);
       values_.Add(other.values_);
@@ -620,7 +620,7 @@ namespace UnitTest.Issues.TestProtos {
 
 
     /// <summary>Field number for the "EnumValue" field.</summary>
     /// <summary>Field number for the "EnumValue" field.</summary>
     public const int EnumValueFieldNumber = 5;
     public const int EnumValueFieldNumber = 5;
-    private global::UnitTest.Issues.TestProtos.DeprecatedEnum enumValue_ = global::UnitTest.Issues.TestProtos.DeprecatedEnum.DEPRECATED_ZERO;
+    private global::UnitTest.Issues.TestProtos.DeprecatedEnum enumValue_ = 0;
     [global::System.ObsoleteAttribute()]
     [global::System.ObsoleteAttribute()]
     public global::UnitTest.Issues.TestProtos.DeprecatedEnum EnumValue {
     public global::UnitTest.Issues.TestProtos.DeprecatedEnum EnumValue {
       get { return enumValue_; }
       get { return enumValue_; }
@@ -665,7 +665,7 @@ namespace UnitTest.Issues.TestProtos {
       hash ^= primitiveArray_.GetHashCode();
       hash ^= primitiveArray_.GetHashCode();
       if (messageValue_ != null) hash ^= MessageValue.GetHashCode();
       if (messageValue_ != null) hash ^= MessageValue.GetHashCode();
       hash ^= messageArray_.GetHashCode();
       hash ^= messageArray_.GetHashCode();
-      if (EnumValue != global::UnitTest.Issues.TestProtos.DeprecatedEnum.DEPRECATED_ZERO) hash ^= EnumValue.GetHashCode();
+      if (EnumValue != 0) hash ^= EnumValue.GetHashCode();
       hash ^= enumArray_.GetHashCode();
       hash ^= enumArray_.GetHashCode();
       return hash;
       return hash;
     }
     }
@@ -685,7 +685,7 @@ namespace UnitTest.Issues.TestProtos {
         output.WriteMessage(MessageValue);
         output.WriteMessage(MessageValue);
       }
       }
       messageArray_.WriteTo(output, _repeated_messageArray_codec);
       messageArray_.WriteTo(output, _repeated_messageArray_codec);
-      if (EnumValue != global::UnitTest.Issues.TestProtos.DeprecatedEnum.DEPRECATED_ZERO) {
+      if (EnumValue != 0) {
         output.WriteRawTag(40);
         output.WriteRawTag(40);
         output.WriteEnum((int) EnumValue);
         output.WriteEnum((int) EnumValue);
       }
       }
@@ -702,7 +702,7 @@ namespace UnitTest.Issues.TestProtos {
         size += 1 + pb::CodedOutputStream.ComputeMessageSize(MessageValue);
         size += 1 + pb::CodedOutputStream.ComputeMessageSize(MessageValue);
       }
       }
       size += messageArray_.CalculateSize(_repeated_messageArray_codec);
       size += messageArray_.CalculateSize(_repeated_messageArray_codec);
-      if (EnumValue != global::UnitTest.Issues.TestProtos.DeprecatedEnum.DEPRECATED_ZERO) {
+      if (EnumValue != 0) {
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) EnumValue);
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) EnumValue);
       }
       }
       size += enumArray_.CalculateSize(_repeated_enumArray_codec);
       size += enumArray_.CalculateSize(_repeated_enumArray_codec);
@@ -724,7 +724,7 @@ namespace UnitTest.Issues.TestProtos {
         MessageValue.MergeFrom(other.MessageValue);
         MessageValue.MergeFrom(other.MessageValue);
       }
       }
       messageArray_.Add(other.messageArray_);
       messageArray_.Add(other.messageArray_);
-      if (other.EnumValue != global::UnitTest.Issues.TestProtos.DeprecatedEnum.DEPRECATED_ZERO) {
+      if (other.EnumValue != 0) {
         EnumValue = other.EnumValue;
         EnumValue = other.EnumValue;
       }
       }
       enumArray_.Add(other.enumArray_);
       enumArray_.Add(other.enumArray_);
@@ -1435,7 +1435,7 @@ namespace UnitTest.Issues.TestProtos {
     public const int NameFieldNumber = 1;
     public const int NameFieldNumber = 1;
     private string name_ = "";
     private string name_ = "";
     /// <summary>
     /// <summary>
-    ///  json_name field options are not properly handled during deserialization
+    ///  Message for testing the effects for of the json_name option
     /// </summary>
     /// </summary>
     public string Name {
     public string Name {
       get { return name_; }
       get { return name_; }

+ 47 - 47
csharp/src/Google.Protobuf.Test/TestProtos/UnittestProto3.cs

@@ -193,39 +193,39 @@ namespace Google.Protobuf.TestProtos {
   }
   }
   #region Enums
   #region Enums
   public enum ForeignEnum {
   public enum ForeignEnum {
-    FOREIGN_UNSPECIFIED = 0,
-    FOREIGN_FOO = 4,
-    FOREIGN_BAR = 5,
-    FOREIGN_BAZ = 6,
+    [pbr::OriginalName("FOREIGN_UNSPECIFIED")] ForeignUnspecified = 0,
+    [pbr::OriginalName("FOREIGN_FOO")] ForeignFoo = 4,
+    [pbr::OriginalName("FOREIGN_BAR")] ForeignBar = 5,
+    [pbr::OriginalName("FOREIGN_BAZ")] ForeignBaz = 6,
   }
   }
 
 
   /// <summary>
   /// <summary>
   ///  Test an enum that has multiple values with the same number.
   ///  Test an enum that has multiple values with the same number.
   /// </summary>
   /// </summary>
   public enum TestEnumWithDupValue {
   public enum TestEnumWithDupValue {
-    TEST_ENUM_WITH_DUP_VALUE_UNSPECIFIED = 0,
-    FOO1 = 1,
-    BAR1 = 2,
-    BAZ = 3,
-    FOO2 = 1,
-    BAR2 = 2,
+    [pbr::OriginalName("TEST_ENUM_WITH_DUP_VALUE_UNSPECIFIED")] Unspecified = 0,
+    [pbr::OriginalName("FOO1")] Foo1 = 1,
+    [pbr::OriginalName("BAR1")] Bar1 = 2,
+    [pbr::OriginalName("BAZ")] Baz = 3,
+    [pbr::OriginalName("FOO2")] Foo2 = 1,
+    [pbr::OriginalName("BAR2")] Bar2 = 2,
   }
   }
 
 
   /// <summary>
   /// <summary>
   ///  Test an enum with large, unordered values.
   ///  Test an enum with large, unordered values.
   /// </summary>
   /// </summary>
   public enum TestSparseEnum {
   public enum TestSparseEnum {
-    TEST_SPARSE_ENUM_UNSPECIFIED = 0,
-    SPARSE_A = 123,
-    SPARSE_B = 62374,
-    SPARSE_C = 12589234,
-    SPARSE_D = -15,
-    SPARSE_E = -53452,
+    [pbr::OriginalName("TEST_SPARSE_ENUM_UNSPECIFIED")] Unspecified = 0,
+    [pbr::OriginalName("SPARSE_A")] SparseA = 123,
+    [pbr::OriginalName("SPARSE_B")] SparseB = 62374,
+    [pbr::OriginalName("SPARSE_C")] SparseC = 12589234,
+    [pbr::OriginalName("SPARSE_D")] SparseD = -15,
+    [pbr::OriginalName("SPARSE_E")] SparseE = -53452,
     /// <summary>
     /// <summary>
     ///  In proto3, value 0 must be the first one specified
     ///  In proto3, value 0 must be the first one specified
     ///  SPARSE_F = 0;
     ///  SPARSE_F = 0;
     /// </summary>
     /// </summary>
-    SPARSE_G = 2,
+    [pbr::OriginalName("SPARSE_G")] SparseG = 2,
   }
   }
 
 
   #endregion
   #endregion
@@ -505,7 +505,7 @@ namespace Google.Protobuf.TestProtos {
 
 
     /// <summary>Field number for the "single_nested_enum" field.</summary>
     /// <summary>Field number for the "single_nested_enum" field.</summary>
     public const int SingleNestedEnumFieldNumber = 21;
     public const int SingleNestedEnumFieldNumber = 21;
-    private global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum singleNestedEnum_ = global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum.NESTED_ENUM_UNSPECIFIED;
+    private global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum singleNestedEnum_ = 0;
     public global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum SingleNestedEnum {
     public global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum SingleNestedEnum {
       get { return singleNestedEnum_; }
       get { return singleNestedEnum_; }
       set {
       set {
@@ -515,7 +515,7 @@ namespace Google.Protobuf.TestProtos {
 
 
     /// <summary>Field number for the "single_foreign_enum" field.</summary>
     /// <summary>Field number for the "single_foreign_enum" field.</summary>
     public const int SingleForeignEnumFieldNumber = 22;
     public const int SingleForeignEnumFieldNumber = 22;
-    private global::Google.Protobuf.TestProtos.ForeignEnum singleForeignEnum_ = global::Google.Protobuf.TestProtos.ForeignEnum.FOREIGN_UNSPECIFIED;
+    private global::Google.Protobuf.TestProtos.ForeignEnum singleForeignEnum_ = 0;
     public global::Google.Protobuf.TestProtos.ForeignEnum SingleForeignEnum {
     public global::Google.Protobuf.TestProtos.ForeignEnum SingleForeignEnum {
       get { return singleForeignEnum_; }
       get { return singleForeignEnum_; }
       set {
       set {
@@ -525,7 +525,7 @@ namespace Google.Protobuf.TestProtos {
 
 
     /// <summary>Field number for the "single_import_enum" field.</summary>
     /// <summary>Field number for the "single_import_enum" field.</summary>
     public const int SingleImportEnumFieldNumber = 23;
     public const int SingleImportEnumFieldNumber = 23;
-    private global::Google.Protobuf.TestProtos.ImportEnum singleImportEnum_ = global::Google.Protobuf.TestProtos.ImportEnum.IMPORT_ENUM_UNSPECIFIED;
+    private global::Google.Protobuf.TestProtos.ImportEnum singleImportEnum_ = 0;
     public global::Google.Protobuf.TestProtos.ImportEnum SingleImportEnum {
     public global::Google.Protobuf.TestProtos.ImportEnum SingleImportEnum {
       get { return singleImportEnum_; }
       get { return singleImportEnum_; }
       set {
       set {
@@ -892,9 +892,9 @@ namespace Google.Protobuf.TestProtos {
       if (singleNestedMessage_ != null) hash ^= SingleNestedMessage.GetHashCode();
       if (singleNestedMessage_ != null) hash ^= SingleNestedMessage.GetHashCode();
       if (singleForeignMessage_ != null) hash ^= SingleForeignMessage.GetHashCode();
       if (singleForeignMessage_ != null) hash ^= SingleForeignMessage.GetHashCode();
       if (singleImportMessage_ != null) hash ^= SingleImportMessage.GetHashCode();
       if (singleImportMessage_ != null) hash ^= SingleImportMessage.GetHashCode();
-      if (SingleNestedEnum != global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum.NESTED_ENUM_UNSPECIFIED) hash ^= SingleNestedEnum.GetHashCode();
-      if (SingleForeignEnum != global::Google.Protobuf.TestProtos.ForeignEnum.FOREIGN_UNSPECIFIED) hash ^= SingleForeignEnum.GetHashCode();
-      if (SingleImportEnum != global::Google.Protobuf.TestProtos.ImportEnum.IMPORT_ENUM_UNSPECIFIED) hash ^= SingleImportEnum.GetHashCode();
+      if (SingleNestedEnum != 0) hash ^= SingleNestedEnum.GetHashCode();
+      if (SingleForeignEnum != 0) hash ^= SingleForeignEnum.GetHashCode();
+      if (SingleImportEnum != 0) hash ^= SingleImportEnum.GetHashCode();
       if (singlePublicImportMessage_ != null) hash ^= SinglePublicImportMessage.GetHashCode();
       if (singlePublicImportMessage_ != null) hash ^= SinglePublicImportMessage.GetHashCode();
       hash ^= repeatedInt32_.GetHashCode();
       hash ^= repeatedInt32_.GetHashCode();
       hash ^= repeatedInt64_.GetHashCode();
       hash ^= repeatedInt64_.GetHashCode();
@@ -1003,15 +1003,15 @@ namespace Google.Protobuf.TestProtos {
         output.WriteRawTag(162, 1);
         output.WriteRawTag(162, 1);
         output.WriteMessage(SingleImportMessage);
         output.WriteMessage(SingleImportMessage);
       }
       }
-      if (SingleNestedEnum != global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum.NESTED_ENUM_UNSPECIFIED) {
+      if (SingleNestedEnum != 0) {
         output.WriteRawTag(168, 1);
         output.WriteRawTag(168, 1);
         output.WriteEnum((int) SingleNestedEnum);
         output.WriteEnum((int) SingleNestedEnum);
       }
       }
-      if (SingleForeignEnum != global::Google.Protobuf.TestProtos.ForeignEnum.FOREIGN_UNSPECIFIED) {
+      if (SingleForeignEnum != 0) {
         output.WriteRawTag(176, 1);
         output.WriteRawTag(176, 1);
         output.WriteEnum((int) SingleForeignEnum);
         output.WriteEnum((int) SingleForeignEnum);
       }
       }
-      if (SingleImportEnum != global::Google.Protobuf.TestProtos.ImportEnum.IMPORT_ENUM_UNSPECIFIED) {
+      if (SingleImportEnum != 0) {
         output.WriteRawTag(184, 1);
         output.WriteRawTag(184, 1);
         output.WriteEnum((int) SingleImportEnum);
         output.WriteEnum((int) SingleImportEnum);
       }
       }
@@ -1115,13 +1115,13 @@ namespace Google.Protobuf.TestProtos {
       if (singleImportMessage_ != null) {
       if (singleImportMessage_ != null) {
         size += 2 + pb::CodedOutputStream.ComputeMessageSize(SingleImportMessage);
         size += 2 + pb::CodedOutputStream.ComputeMessageSize(SingleImportMessage);
       }
       }
-      if (SingleNestedEnum != global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum.NESTED_ENUM_UNSPECIFIED) {
+      if (SingleNestedEnum != 0) {
         size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) SingleNestedEnum);
         size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) SingleNestedEnum);
       }
       }
-      if (SingleForeignEnum != global::Google.Protobuf.TestProtos.ForeignEnum.FOREIGN_UNSPECIFIED) {
+      if (SingleForeignEnum != 0) {
         size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) SingleForeignEnum);
         size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) SingleForeignEnum);
       }
       }
-      if (SingleImportEnum != global::Google.Protobuf.TestProtos.ImportEnum.IMPORT_ENUM_UNSPECIFIED) {
+      if (SingleImportEnum != 0) {
         size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) SingleImportEnum);
         size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) SingleImportEnum);
       }
       }
       if (singlePublicImportMessage_ != null) {
       if (singlePublicImportMessage_ != null) {
@@ -1231,13 +1231,13 @@ namespace Google.Protobuf.TestProtos {
         }
         }
         SingleImportMessage.MergeFrom(other.SingleImportMessage);
         SingleImportMessage.MergeFrom(other.SingleImportMessage);
       }
       }
-      if (other.SingleNestedEnum != global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum.NESTED_ENUM_UNSPECIFIED) {
+      if (other.SingleNestedEnum != 0) {
         SingleNestedEnum = other.SingleNestedEnum;
         SingleNestedEnum = other.SingleNestedEnum;
       }
       }
-      if (other.SingleForeignEnum != global::Google.Protobuf.TestProtos.ForeignEnum.FOREIGN_UNSPECIFIED) {
+      if (other.SingleForeignEnum != 0) {
         SingleForeignEnum = other.SingleForeignEnum;
         SingleForeignEnum = other.SingleForeignEnum;
       }
       }
-      if (other.SingleImportEnum != global::Google.Protobuf.TestProtos.ImportEnum.IMPORT_ENUM_UNSPECIFIED) {
+      if (other.SingleImportEnum != 0) {
         SingleImportEnum = other.SingleImportEnum;
         SingleImportEnum = other.SingleImportEnum;
       }
       }
       if (other.singlePublicImportMessage_ != null) {
       if (other.singlePublicImportMessage_ != null) {
@@ -1526,14 +1526,14 @@ namespace Google.Protobuf.TestProtos {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     public static partial class Types {
     public static partial class Types {
       public enum NestedEnum {
       public enum NestedEnum {
-        NESTED_ENUM_UNSPECIFIED = 0,
-        FOO = 1,
-        BAR = 2,
-        BAZ = 3,
+        [pbr::OriginalName("NESTED_ENUM_UNSPECIFIED")] Unspecified = 0,
+        [pbr::OriginalName("FOO")] Foo = 1,
+        [pbr::OriginalName("BAR")] Bar = 2,
+        [pbr::OriginalName("BAZ")] Baz = 3,
         /// <summary>
         /// <summary>
         ///  Intentionally negative.
         ///  Intentionally negative.
         /// </summary>
         /// </summary>
-        NEG = -1,
+        [pbr::OriginalName("NEG")] Neg = -1,
       }
       }
 
 
       [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
       [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
@@ -2793,7 +2793,7 @@ namespace Google.Protobuf.TestProtos {
 
 
     /// <summary>Field number for the "EnumField" field.</summary>
     /// <summary>Field number for the "EnumField" field.</summary>
     public const int EnumFieldFieldNumber = 3;
     public const int EnumFieldFieldNumber = 3;
-    private global::Google.Protobuf.TestProtos.ForeignEnum enumField_ = global::Google.Protobuf.TestProtos.ForeignEnum.FOREIGN_UNSPECIFIED;
+    private global::Google.Protobuf.TestProtos.ForeignEnum enumField_ = 0;
     public global::Google.Protobuf.TestProtos.ForeignEnum EnumField {
     public global::Google.Protobuf.TestProtos.ForeignEnum EnumField {
       get { return enumField_; }
       get { return enumField_; }
       set {
       set {
@@ -2873,7 +2873,7 @@ namespace Google.Protobuf.TestProtos {
       int hash = 1;
       int hash = 1;
       if (PrimitiveField != 0) hash ^= PrimitiveField.GetHashCode();
       if (PrimitiveField != 0) hash ^= PrimitiveField.GetHashCode();
       if (StringField.Length != 0) hash ^= StringField.GetHashCode();
       if (StringField.Length != 0) hash ^= StringField.GetHashCode();
-      if (EnumField != global::Google.Protobuf.TestProtos.ForeignEnum.FOREIGN_UNSPECIFIED) hash ^= EnumField.GetHashCode();
+      if (EnumField != 0) hash ^= EnumField.GetHashCode();
       if (messageField_ != null) hash ^= MessageField.GetHashCode();
       if (messageField_ != null) hash ^= MessageField.GetHashCode();
       hash ^= repeatedPrimitiveField_.GetHashCode();
       hash ^= repeatedPrimitiveField_.GetHashCode();
       hash ^= repeatedStringField_.GetHashCode();
       hash ^= repeatedStringField_.GetHashCode();
@@ -2895,7 +2895,7 @@ namespace Google.Protobuf.TestProtos {
         output.WriteRawTag(18);
         output.WriteRawTag(18);
         output.WriteString(StringField);
         output.WriteString(StringField);
       }
       }
-      if (EnumField != global::Google.Protobuf.TestProtos.ForeignEnum.FOREIGN_UNSPECIFIED) {
+      if (EnumField != 0) {
         output.WriteRawTag(24);
         output.WriteRawTag(24);
         output.WriteEnum((int) EnumField);
         output.WriteEnum((int) EnumField);
       }
       }
@@ -2917,7 +2917,7 @@ namespace Google.Protobuf.TestProtos {
       if (StringField.Length != 0) {
       if (StringField.Length != 0) {
         size += 1 + pb::CodedOutputStream.ComputeStringSize(StringField);
         size += 1 + pb::CodedOutputStream.ComputeStringSize(StringField);
       }
       }
-      if (EnumField != global::Google.Protobuf.TestProtos.ForeignEnum.FOREIGN_UNSPECIFIED) {
+      if (EnumField != 0) {
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) EnumField);
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) EnumField);
       }
       }
       if (messageField_ != null) {
       if (messageField_ != null) {
@@ -2940,7 +2940,7 @@ namespace Google.Protobuf.TestProtos {
       if (other.StringField.Length != 0) {
       if (other.StringField.Length != 0) {
         StringField = other.StringField;
         StringField = other.StringField;
       }
       }
-      if (other.EnumField != global::Google.Protobuf.TestProtos.ForeignEnum.FOREIGN_UNSPECIFIED) {
+      if (other.EnumField != 0) {
         EnumField = other.EnumField;
         EnumField = other.EnumField;
       }
       }
       if (other.messageField_ != null) {
       if (other.messageField_ != null) {
@@ -3370,7 +3370,7 @@ namespace Google.Protobuf.TestProtos {
 
 
     /// <summary>Field number for the "sparse_enum" field.</summary>
     /// <summary>Field number for the "sparse_enum" field.</summary>
     public const int SparseEnumFieldNumber = 1;
     public const int SparseEnumFieldNumber = 1;
-    private global::Google.Protobuf.TestProtos.TestSparseEnum sparseEnum_ = global::Google.Protobuf.TestProtos.TestSparseEnum.TEST_SPARSE_ENUM_UNSPECIFIED;
+    private global::Google.Protobuf.TestProtos.TestSparseEnum sparseEnum_ = 0;
     public global::Google.Protobuf.TestProtos.TestSparseEnum SparseEnum {
     public global::Google.Protobuf.TestProtos.TestSparseEnum SparseEnum {
       get { return sparseEnum_; }
       get { return sparseEnum_; }
       set {
       set {
@@ -3395,7 +3395,7 @@ namespace Google.Protobuf.TestProtos {
 
 
     public override int GetHashCode() {
     public override int GetHashCode() {
       int hash = 1;
       int hash = 1;
-      if (SparseEnum != global::Google.Protobuf.TestProtos.TestSparseEnum.TEST_SPARSE_ENUM_UNSPECIFIED) hash ^= SparseEnum.GetHashCode();
+      if (SparseEnum != 0) hash ^= SparseEnum.GetHashCode();
       return hash;
       return hash;
     }
     }
 
 
@@ -3404,7 +3404,7 @@ namespace Google.Protobuf.TestProtos {
     }
     }
 
 
     public void WriteTo(pb::CodedOutputStream output) {
     public void WriteTo(pb::CodedOutputStream output) {
-      if (SparseEnum != global::Google.Protobuf.TestProtos.TestSparseEnum.TEST_SPARSE_ENUM_UNSPECIFIED) {
+      if (SparseEnum != 0) {
         output.WriteRawTag(8);
         output.WriteRawTag(8);
         output.WriteEnum((int) SparseEnum);
         output.WriteEnum((int) SparseEnum);
       }
       }
@@ -3412,7 +3412,7 @@ namespace Google.Protobuf.TestProtos {
 
 
     public int CalculateSize() {
     public int CalculateSize() {
       int size = 0;
       int size = 0;
-      if (SparseEnum != global::Google.Protobuf.TestProtos.TestSparseEnum.TEST_SPARSE_ENUM_UNSPECIFIED) {
+      if (SparseEnum != 0) {
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) SparseEnum);
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) SparseEnum);
       }
       }
       return size;
       return size;
@@ -3422,7 +3422,7 @@ namespace Google.Protobuf.TestProtos {
       if (other == null) {
       if (other == null) {
         return;
         return;
       }
       }
-      if (other.SparseEnum != global::Google.Protobuf.TestProtos.TestSparseEnum.TEST_SPARSE_ENUM_UNSPECIFIED) {
+      if (other.SparseEnum != 0) {
         SparseEnum = other.SparseEnum;
         SparseEnum = other.SparseEnum;
       }
       }
     }
     }

+ 55 - 55
csharp/src/Google.Protobuf/Reflection/Descriptor.cs

@@ -1291,7 +1291,7 @@ namespace Google.Protobuf.Reflection {
 
 
     /// <summary>Field number for the "label" field.</summary>
     /// <summary>Field number for the "label" field.</summary>
     public const int LabelFieldNumber = 4;
     public const int LabelFieldNumber = 4;
-    private global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label label_ = global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL;
+    private global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label label_ = 0;
     public global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label Label {
     public global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label Label {
       get { return label_; }
       get { return label_; }
       set {
       set {
@@ -1301,7 +1301,7 @@ namespace Google.Protobuf.Reflection {
 
 
     /// <summary>Field number for the "type" field.</summary>
     /// <summary>Field number for the "type" field.</summary>
     public const int TypeFieldNumber = 5;
     public const int TypeFieldNumber = 5;
-    private global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type type_ = global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.TYPE_DOUBLE;
+    private global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type type_ = 0;
     /// <summary>
     /// <summary>
     ///  If type_name is set, this need not be set.  If both this and type_name
     ///  If type_name is set, this need not be set.  If both this and type_name
     ///  are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
     ///  are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
@@ -1429,8 +1429,8 @@ namespace Google.Protobuf.Reflection {
       int hash = 1;
       int hash = 1;
       if (Name.Length != 0) hash ^= Name.GetHashCode();
       if (Name.Length != 0) hash ^= Name.GetHashCode();
       if (Number != 0) hash ^= Number.GetHashCode();
       if (Number != 0) hash ^= Number.GetHashCode();
-      if (Label != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL) hash ^= Label.GetHashCode();
-      if (Type != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.TYPE_DOUBLE) hash ^= Type.GetHashCode();
+      if (Label != 0) hash ^= Label.GetHashCode();
+      if (Type != 0) hash ^= Type.GetHashCode();
       if (TypeName.Length != 0) hash ^= TypeName.GetHashCode();
       if (TypeName.Length != 0) hash ^= TypeName.GetHashCode();
       if (Extendee.Length != 0) hash ^= Extendee.GetHashCode();
       if (Extendee.Length != 0) hash ^= Extendee.GetHashCode();
       if (DefaultValue.Length != 0) hash ^= DefaultValue.GetHashCode();
       if (DefaultValue.Length != 0) hash ^= DefaultValue.GetHashCode();
@@ -1457,11 +1457,11 @@ namespace Google.Protobuf.Reflection {
         output.WriteRawTag(24);
         output.WriteRawTag(24);
         output.WriteInt32(Number);
         output.WriteInt32(Number);
       }
       }
-      if (Label != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL) {
+      if (Label != 0) {
         output.WriteRawTag(32);
         output.WriteRawTag(32);
         output.WriteEnum((int) Label);
         output.WriteEnum((int) Label);
       }
       }
-      if (Type != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.TYPE_DOUBLE) {
+      if (Type != 0) {
         output.WriteRawTag(40);
         output.WriteRawTag(40);
         output.WriteEnum((int) Type);
         output.WriteEnum((int) Type);
       }
       }
@@ -1495,10 +1495,10 @@ namespace Google.Protobuf.Reflection {
       if (Number != 0) {
       if (Number != 0) {
         size += 1 + pb::CodedOutputStream.ComputeInt32Size(Number);
         size += 1 + pb::CodedOutputStream.ComputeInt32Size(Number);
       }
       }
-      if (Label != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL) {
+      if (Label != 0) {
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Label);
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Label);
       }
       }
-      if (Type != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.TYPE_DOUBLE) {
+      if (Type != 0) {
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
       }
       }
       if (TypeName.Length != 0) {
       if (TypeName.Length != 0) {
@@ -1532,10 +1532,10 @@ namespace Google.Protobuf.Reflection {
       if (other.Number != 0) {
       if (other.Number != 0) {
         Number = other.Number;
         Number = other.Number;
       }
       }
-      if (other.Label != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL) {
+      if (other.Label != 0) {
         Label = other.Label;
         Label = other.Label;
       }
       }
-      if (other.Type != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.TYPE_DOUBLE) {
+      if (other.Type != 0) {
         Type = other.Type;
         Type = other.Type;
       }
       }
       if (other.TypeName.Length != 0) {
       if (other.TypeName.Length != 0) {
@@ -1624,59 +1624,59 @@ namespace Google.Protobuf.Reflection {
         ///  0 is reserved for errors.
         ///  0 is reserved for errors.
         ///  Order is weird for historical reasons.
         ///  Order is weird for historical reasons.
         /// </summary>
         /// </summary>
-        TYPE_DOUBLE = 1,
-        TYPE_FLOAT = 2,
+        [pbr::OriginalName("TYPE_DOUBLE")] Double = 1,
+        [pbr::OriginalName("TYPE_FLOAT")] Float = 2,
         /// <summary>
         /// <summary>
         ///  Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
         ///  Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
         ///  negative values are likely.
         ///  negative values are likely.
         /// </summary>
         /// </summary>
-        TYPE_INT64 = 3,
-        TYPE_UINT64 = 4,
+        [pbr::OriginalName("TYPE_INT64")] Int64 = 3,
+        [pbr::OriginalName("TYPE_UINT64")] Uint64 = 4,
         /// <summary>
         /// <summary>
         ///  Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
         ///  Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
         ///  negative values are likely.
         ///  negative values are likely.
         /// </summary>
         /// </summary>
-        TYPE_INT32 = 5,
-        TYPE_FIXED64 = 6,
-        TYPE_FIXED32 = 7,
-        TYPE_BOOL = 8,
-        TYPE_STRING = 9,
+        [pbr::OriginalName("TYPE_INT32")] Int32 = 5,
+        [pbr::OriginalName("TYPE_FIXED64")] Fixed64 = 6,
+        [pbr::OriginalName("TYPE_FIXED32")] Fixed32 = 7,
+        [pbr::OriginalName("TYPE_BOOL")] Bool = 8,
+        [pbr::OriginalName("TYPE_STRING")] String = 9,
         /// <summary>
         /// <summary>
         ///  Tag-delimited aggregate.
         ///  Tag-delimited aggregate.
         /// </summary>
         /// </summary>
-        TYPE_GROUP = 10,
+        [pbr::OriginalName("TYPE_GROUP")] Group = 10,
         /// <summary>
         /// <summary>
         ///  Length-delimited aggregate.
         ///  Length-delimited aggregate.
         /// </summary>
         /// </summary>
-        TYPE_MESSAGE = 11,
+        [pbr::OriginalName("TYPE_MESSAGE")] Message = 11,
         /// <summary>
         /// <summary>
         ///  New in version 2.
         ///  New in version 2.
         /// </summary>
         /// </summary>
-        TYPE_BYTES = 12,
-        TYPE_UINT32 = 13,
-        TYPE_ENUM = 14,
-        TYPE_SFIXED32 = 15,
-        TYPE_SFIXED64 = 16,
+        [pbr::OriginalName("TYPE_BYTES")] Bytes = 12,
+        [pbr::OriginalName("TYPE_UINT32")] Uint32 = 13,
+        [pbr::OriginalName("TYPE_ENUM")] Enum = 14,
+        [pbr::OriginalName("TYPE_SFIXED32")] Sfixed32 = 15,
+        [pbr::OriginalName("TYPE_SFIXED64")] Sfixed64 = 16,
         /// <summary>
         /// <summary>
         ///  Uses ZigZag encoding.
         ///  Uses ZigZag encoding.
         /// </summary>
         /// </summary>
-        TYPE_SINT32 = 17,
+        [pbr::OriginalName("TYPE_SINT32")] Sint32 = 17,
         /// <summary>
         /// <summary>
         ///  Uses ZigZag encoding.
         ///  Uses ZigZag encoding.
         /// </summary>
         /// </summary>
-        TYPE_SINT64 = 18,
+        [pbr::OriginalName("TYPE_SINT64")] Sint64 = 18,
       }
       }
 
 
       internal enum Label {
       internal enum Label {
         /// <summary>
         /// <summary>
         ///  0 is reserved for errors
         ///  0 is reserved for errors
         /// </summary>
         /// </summary>
-        LABEL_OPTIONAL = 1,
-        LABEL_REQUIRED = 2,
+        [pbr::OriginalName("LABEL_OPTIONAL")] Optional = 1,
+        [pbr::OriginalName("LABEL_REQUIRED")] Required = 2,
         /// <summary>
         /// <summary>
         ///  TODO(sanjay): Should we add LABEL_MAP?
         ///  TODO(sanjay): Should we add LABEL_MAP?
         /// </summary>
         /// </summary>
-        LABEL_REPEATED = 3,
+        [pbr::OriginalName("LABEL_REPEATED")] Repeated = 3,
       }
       }
 
 
     }
     }
@@ -2666,7 +2666,7 @@ namespace Google.Protobuf.Reflection {
 
 
     /// <summary>Field number for the "optimize_for" field.</summary>
     /// <summary>Field number for the "optimize_for" field.</summary>
     public const int OptimizeForFieldNumber = 9;
     public const int OptimizeForFieldNumber = 9;
-    private global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode optimizeFor_ = global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.SPEED;
+    private global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode optimizeFor_ = 0;
     public global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode OptimizeFor {
     public global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode OptimizeFor {
       get { return optimizeFor_; }
       get { return optimizeFor_; }
       set {
       set {
@@ -2854,7 +2854,7 @@ namespace Google.Protobuf.Reflection {
       if (JavaMultipleFiles != false) hash ^= JavaMultipleFiles.GetHashCode();
       if (JavaMultipleFiles != false) hash ^= JavaMultipleFiles.GetHashCode();
       if (JavaGenerateEqualsAndHash != false) hash ^= JavaGenerateEqualsAndHash.GetHashCode();
       if (JavaGenerateEqualsAndHash != false) hash ^= JavaGenerateEqualsAndHash.GetHashCode();
       if (JavaStringCheckUtf8 != false) hash ^= JavaStringCheckUtf8.GetHashCode();
       if (JavaStringCheckUtf8 != false) hash ^= JavaStringCheckUtf8.GetHashCode();
-      if (OptimizeFor != global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.SPEED) hash ^= OptimizeFor.GetHashCode();
+      if (OptimizeFor != 0) hash ^= OptimizeFor.GetHashCode();
       if (GoPackage.Length != 0) hash ^= GoPackage.GetHashCode();
       if (GoPackage.Length != 0) hash ^= GoPackage.GetHashCode();
       if (CcGenericServices != false) hash ^= CcGenericServices.GetHashCode();
       if (CcGenericServices != false) hash ^= CcGenericServices.GetHashCode();
       if (JavaGenericServices != false) hash ^= JavaGenericServices.GetHashCode();
       if (JavaGenericServices != false) hash ^= JavaGenericServices.GetHashCode();
@@ -2881,7 +2881,7 @@ namespace Google.Protobuf.Reflection {
         output.WriteRawTag(66);
         output.WriteRawTag(66);
         output.WriteString(JavaOuterClassname);
         output.WriteString(JavaOuterClassname);
       }
       }
-      if (OptimizeFor != global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.SPEED) {
+      if (OptimizeFor != 0) {
         output.WriteRawTag(72);
         output.WriteRawTag(72);
         output.WriteEnum((int) OptimizeFor);
         output.WriteEnum((int) OptimizeFor);
       }
       }
@@ -2953,7 +2953,7 @@ namespace Google.Protobuf.Reflection {
       if (JavaStringCheckUtf8 != false) {
       if (JavaStringCheckUtf8 != false) {
         size += 2 + 1;
         size += 2 + 1;
       }
       }
-      if (OptimizeFor != global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.SPEED) {
+      if (OptimizeFor != 0) {
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) OptimizeFor);
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) OptimizeFor);
       }
       }
       if (GoPackage.Length != 0) {
       if (GoPackage.Length != 0) {
@@ -3006,7 +3006,7 @@ namespace Google.Protobuf.Reflection {
       if (other.JavaStringCheckUtf8 != false) {
       if (other.JavaStringCheckUtf8 != false) {
         JavaStringCheckUtf8 = other.JavaStringCheckUtf8;
         JavaStringCheckUtf8 = other.JavaStringCheckUtf8;
       }
       }
-      if (other.OptimizeFor != global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.SPEED) {
+      if (other.OptimizeFor != 0) {
         OptimizeFor = other.OptimizeFor;
         OptimizeFor = other.OptimizeFor;
       }
       }
       if (other.GoPackage.Length != 0) {
       if (other.GoPackage.Length != 0) {
@@ -3125,15 +3125,15 @@ namespace Google.Protobuf.Reflection {
         /// <summary>
         /// <summary>
         ///  Generate complete code for parsing, serialization,
         ///  Generate complete code for parsing, serialization,
         /// </summary>
         /// </summary>
-        SPEED = 1,
+        [pbr::OriginalName("SPEED")] Speed = 1,
         /// <summary>
         /// <summary>
         ///  etc.
         ///  etc.
         /// </summary>
         /// </summary>
-        CODE_SIZE = 2,
+        [pbr::OriginalName("CODE_SIZE")] CodeSize = 2,
         /// <summary>
         /// <summary>
         ///  Generate code using MessageLite and the lite runtime.
         ///  Generate code using MessageLite and the lite runtime.
         /// </summary>
         /// </summary>
-        LITE_RUNTIME = 3,
+        [pbr::OriginalName("LITE_RUNTIME")] LiteRuntime = 3,
       }
       }
 
 
     }
     }
@@ -3436,7 +3436,7 @@ namespace Google.Protobuf.Reflection {
 
 
     /// <summary>Field number for the "ctype" field.</summary>
     /// <summary>Field number for the "ctype" field.</summary>
     public const int CtypeFieldNumber = 1;
     public const int CtypeFieldNumber = 1;
-    private global::Google.Protobuf.Reflection.FieldOptions.Types.CType ctype_ = global::Google.Protobuf.Reflection.FieldOptions.Types.CType.STRING;
+    private global::Google.Protobuf.Reflection.FieldOptions.Types.CType ctype_ = 0;
     /// <summary>
     /// <summary>
     ///  The ctype option instructs the C++ code generator to use a different
     ///  The ctype option instructs the C++ code generator to use a different
     ///  representation of the field than it normally would.  See the specific
     ///  representation of the field than it normally would.  See the specific
@@ -3469,7 +3469,7 @@ namespace Google.Protobuf.Reflection {
 
 
     /// <summary>Field number for the "jstype" field.</summary>
     /// <summary>Field number for the "jstype" field.</summary>
     public const int JstypeFieldNumber = 6;
     public const int JstypeFieldNumber = 6;
-    private global::Google.Protobuf.Reflection.FieldOptions.Types.JSType jstype_ = global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JS_NORMAL;
+    private global::Google.Protobuf.Reflection.FieldOptions.Types.JSType jstype_ = 0;
     /// <summary>
     /// <summary>
     ///  The jstype option determines the JavaScript type used for values of the
     ///  The jstype option determines the JavaScript type used for values of the
     ///  field.  The option is permitted only for 64 bit integral and fixed types
     ///  field.  The option is permitted only for 64 bit integral and fixed types
@@ -3591,9 +3591,9 @@ namespace Google.Protobuf.Reflection {
 
 
     public override int GetHashCode() {
     public override int GetHashCode() {
       int hash = 1;
       int hash = 1;
-      if (Ctype != global::Google.Protobuf.Reflection.FieldOptions.Types.CType.STRING) hash ^= Ctype.GetHashCode();
+      if (Ctype != 0) hash ^= Ctype.GetHashCode();
       if (Packed != false) hash ^= Packed.GetHashCode();
       if (Packed != false) hash ^= Packed.GetHashCode();
-      if (Jstype != global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JS_NORMAL) hash ^= Jstype.GetHashCode();
+      if (Jstype != 0) hash ^= Jstype.GetHashCode();
       if (Lazy != false) hash ^= Lazy.GetHashCode();
       if (Lazy != false) hash ^= Lazy.GetHashCode();
       if (Deprecated != false) hash ^= Deprecated.GetHashCode();
       if (Deprecated != false) hash ^= Deprecated.GetHashCode();
       if (Weak != false) hash ^= Weak.GetHashCode();
       if (Weak != false) hash ^= Weak.GetHashCode();
@@ -3606,7 +3606,7 @@ namespace Google.Protobuf.Reflection {
     }
     }
 
 
     public void WriteTo(pb::CodedOutputStream output) {
     public void WriteTo(pb::CodedOutputStream output) {
-      if (Ctype != global::Google.Protobuf.Reflection.FieldOptions.Types.CType.STRING) {
+      if (Ctype != 0) {
         output.WriteRawTag(8);
         output.WriteRawTag(8);
         output.WriteEnum((int) Ctype);
         output.WriteEnum((int) Ctype);
       }
       }
@@ -3622,7 +3622,7 @@ namespace Google.Protobuf.Reflection {
         output.WriteRawTag(40);
         output.WriteRawTag(40);
         output.WriteBool(Lazy);
         output.WriteBool(Lazy);
       }
       }
-      if (Jstype != global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JS_NORMAL) {
+      if (Jstype != 0) {
         output.WriteRawTag(48);
         output.WriteRawTag(48);
         output.WriteEnum((int) Jstype);
         output.WriteEnum((int) Jstype);
       }
       }
@@ -3635,13 +3635,13 @@ namespace Google.Protobuf.Reflection {
 
 
     public int CalculateSize() {
     public int CalculateSize() {
       int size = 0;
       int size = 0;
-      if (Ctype != global::Google.Protobuf.Reflection.FieldOptions.Types.CType.STRING) {
+      if (Ctype != 0) {
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Ctype);
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Ctype);
       }
       }
       if (Packed != false) {
       if (Packed != false) {
         size += 1 + 1;
         size += 1 + 1;
       }
       }
-      if (Jstype != global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JS_NORMAL) {
+      if (Jstype != 0) {
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Jstype);
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Jstype);
       }
       }
       if (Lazy != false) {
       if (Lazy != false) {
@@ -3661,13 +3661,13 @@ namespace Google.Protobuf.Reflection {
       if (other == null) {
       if (other == null) {
         return;
         return;
       }
       }
-      if (other.Ctype != global::Google.Protobuf.Reflection.FieldOptions.Types.CType.STRING) {
+      if (other.Ctype != 0) {
         Ctype = other.Ctype;
         Ctype = other.Ctype;
       }
       }
       if (other.Packed != false) {
       if (other.Packed != false) {
         Packed = other.Packed;
         Packed = other.Packed;
       }
       }
-      if (other.Jstype != global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JS_NORMAL) {
+      if (other.Jstype != 0) {
         Jstype = other.Jstype;
         Jstype = other.Jstype;
       }
       }
       if (other.Lazy != false) {
       if (other.Lazy != false) {
@@ -3729,24 +3729,24 @@ namespace Google.Protobuf.Reflection {
         /// <summary>
         /// <summary>
         ///  Default mode.
         ///  Default mode.
         /// </summary>
         /// </summary>
-        STRING = 0,
-        CORD = 1,
-        STRING_PIECE = 2,
+        [pbr::OriginalName("STRING")] String = 0,
+        [pbr::OriginalName("CORD")] Cord = 1,
+        [pbr::OriginalName("STRING_PIECE")] StringPiece = 2,
       }
       }
 
 
       internal enum JSType {
       internal enum JSType {
         /// <summary>
         /// <summary>
         ///  Use the default type.
         ///  Use the default type.
         /// </summary>
         /// </summary>
-        JS_NORMAL = 0,
+        [pbr::OriginalName("JS_NORMAL")] JsNormal = 0,
         /// <summary>
         /// <summary>
         ///  Use JavaScript strings.
         ///  Use JavaScript strings.
         /// </summary>
         /// </summary>
-        JS_STRING = 1,
+        [pbr::OriginalName("JS_STRING")] JsString = 1,
         /// <summary>
         /// <summary>
         ///  Use JavaScript numbers.
         ///  Use JavaScript numbers.
         /// </summary>
         /// </summary>
-        JS_NUMBER = 2,
+        [pbr::OriginalName("JS_NUMBER")] JsNumber = 2,
       }
       }
 
 
     }
     }

+ 19 - 19
csharp/src/Google.Protobuf/Reflection/FieldDescriptor.cs

@@ -133,41 +133,41 @@ namespace Google.Protobuf.Reflection
         {
         {
             switch (type)
             switch (type)
             {
             {
-                case FieldDescriptorProto.Types.Type.TYPE_DOUBLE:
+                case FieldDescriptorProto.Types.Type.Double:
                     return FieldType.Double;
                     return FieldType.Double;
-                case FieldDescriptorProto.Types.Type.TYPE_FLOAT:
+                case FieldDescriptorProto.Types.Type.Float:
                     return FieldType.Float;
                     return FieldType.Float;
-                case FieldDescriptorProto.Types.Type.TYPE_INT64:
+                case FieldDescriptorProto.Types.Type.Int64:
                     return FieldType.Int64;
                     return FieldType.Int64;
-                case FieldDescriptorProto.Types.Type.TYPE_UINT64:
+                case FieldDescriptorProto.Types.Type.Uint64:
                     return FieldType.UInt64;
                     return FieldType.UInt64;
-                case FieldDescriptorProto.Types.Type.TYPE_INT32:
+                case FieldDescriptorProto.Types.Type.Int32:
                     return FieldType.Int32;
                     return FieldType.Int32;
-                case FieldDescriptorProto.Types.Type.TYPE_FIXED64:
+                case FieldDescriptorProto.Types.Type.Fixed64:
                     return FieldType.Fixed64;
                     return FieldType.Fixed64;
-                case FieldDescriptorProto.Types.Type.TYPE_FIXED32:
+                case FieldDescriptorProto.Types.Type.Fixed32:
                     return FieldType.Fixed32;
                     return FieldType.Fixed32;
-                case FieldDescriptorProto.Types.Type.TYPE_BOOL:
+                case FieldDescriptorProto.Types.Type.Bool:
                     return FieldType.Bool;
                     return FieldType.Bool;
-                case FieldDescriptorProto.Types.Type.TYPE_STRING:
+                case FieldDescriptorProto.Types.Type.String:
                     return FieldType.String;
                     return FieldType.String;
-                case FieldDescriptorProto.Types.Type.TYPE_GROUP:
+                case FieldDescriptorProto.Types.Type.Group:
                     return FieldType.Group;
                     return FieldType.Group;
-                case FieldDescriptorProto.Types.Type.TYPE_MESSAGE:
+                case FieldDescriptorProto.Types.Type.Message:
                     return FieldType.Message;
                     return FieldType.Message;
-                case FieldDescriptorProto.Types.Type.TYPE_BYTES:
+                case FieldDescriptorProto.Types.Type.Bytes:
                     return FieldType.Bytes;
                     return FieldType.Bytes;
-                case FieldDescriptorProto.Types.Type.TYPE_UINT32:
+                case FieldDescriptorProto.Types.Type.Uint32:
                     return FieldType.UInt32;
                     return FieldType.UInt32;
-                case FieldDescriptorProto.Types.Type.TYPE_ENUM:
+                case FieldDescriptorProto.Types.Type.Enum:
                     return FieldType.Enum;
                     return FieldType.Enum;
-                case FieldDescriptorProto.Types.Type.TYPE_SFIXED32:
+                case FieldDescriptorProto.Types.Type.Sfixed32:
                     return FieldType.SFixed32;
                     return FieldType.SFixed32;
-                case FieldDescriptorProto.Types.Type.TYPE_SFIXED64:
+                case FieldDescriptorProto.Types.Type.Sfixed64:
                     return FieldType.SFixed64;
                     return FieldType.SFixed64;
-                case FieldDescriptorProto.Types.Type.TYPE_SINT32:
+                case FieldDescriptorProto.Types.Type.Sint32:
                     return FieldType.SInt32;
                     return FieldType.SInt32;
-                case FieldDescriptorProto.Types.Type.TYPE_SINT64:
+                case FieldDescriptorProto.Types.Type.Sint64:
                     return FieldType.SInt64;
                     return FieldType.SInt64;
                 default:
                 default:
                     throw new ArgumentException("Invalid type specified");
                     throw new ArgumentException("Invalid type specified");
@@ -177,7 +177,7 @@ namespace Google.Protobuf.Reflection
         /// <summary>
         /// <summary>
         /// Returns <c>true</c> if this field is a repeated field; <c>false</c> otherwise.
         /// Returns <c>true</c> if this field is a repeated field; <c>false</c> otherwise.
         /// </summary>
         /// </summary>
-        public bool IsRepeated => Proto.Label == FieldDescriptorProto.Types.Label.LABEL_REPEATED;
+        public bool IsRepeated => Proto.Label == FieldDescriptorProto.Types.Label.Repeated;
 
 
         /// <summary>
         /// <summary>
         /// Returns <c>true</c> if this field is a map field; <c>false</c> otherwise.
         /// Returns <c>true</c> if this field is a map field; <c>false</c> otherwise.

+ 10 - 10
csharp/src/Google.Protobuf/WellKnownTypes/Api.cs

@@ -185,7 +185,7 @@ namespace Google.Protobuf.WellKnownTypes {
 
 
     /// <summary>Field number for the "syntax" field.</summary>
     /// <summary>Field number for the "syntax" field.</summary>
     public const int SyntaxFieldNumber = 7;
     public const int SyntaxFieldNumber = 7;
-    private global::Google.Protobuf.WellKnownTypes.Syntax syntax_ = global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2;
+    private global::Google.Protobuf.WellKnownTypes.Syntax syntax_ = 0;
     /// <summary>
     /// <summary>
     ///  The source syntax of the service.
     ///  The source syntax of the service.
     /// </summary>
     /// </summary>
@@ -225,7 +225,7 @@ namespace Google.Protobuf.WellKnownTypes {
       if (Version.Length != 0) hash ^= Version.GetHashCode();
       if (Version.Length != 0) hash ^= Version.GetHashCode();
       if (sourceContext_ != null) hash ^= SourceContext.GetHashCode();
       if (sourceContext_ != null) hash ^= SourceContext.GetHashCode();
       hash ^= mixins_.GetHashCode();
       hash ^= mixins_.GetHashCode();
-      if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) hash ^= Syntax.GetHashCode();
+      if (Syntax != 0) hash ^= Syntax.GetHashCode();
       return hash;
       return hash;
     }
     }
 
 
@@ -249,7 +249,7 @@ namespace Google.Protobuf.WellKnownTypes {
         output.WriteMessage(SourceContext);
         output.WriteMessage(SourceContext);
       }
       }
       mixins_.WriteTo(output, _repeated_mixins_codec);
       mixins_.WriteTo(output, _repeated_mixins_codec);
-      if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
+      if (Syntax != 0) {
         output.WriteRawTag(56);
         output.WriteRawTag(56);
         output.WriteEnum((int) Syntax);
         output.WriteEnum((int) Syntax);
       }
       }
@@ -269,7 +269,7 @@ namespace Google.Protobuf.WellKnownTypes {
         size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceContext);
         size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceContext);
       }
       }
       size += mixins_.CalculateSize(_repeated_mixins_codec);
       size += mixins_.CalculateSize(_repeated_mixins_codec);
-      if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
+      if (Syntax != 0) {
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Syntax);
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Syntax);
       }
       }
       return size;
       return size;
@@ -294,7 +294,7 @@ namespace Google.Protobuf.WellKnownTypes {
         SourceContext.MergeFrom(other.SourceContext);
         SourceContext.MergeFrom(other.SourceContext);
       }
       }
       mixins_.Add(other.mixins_);
       mixins_.Add(other.mixins_);
-      if (other.Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
+      if (other.Syntax != 0) {
         Syntax = other.Syntax;
         Syntax = other.Syntax;
       }
       }
     }
     }
@@ -458,7 +458,7 @@ namespace Google.Protobuf.WellKnownTypes {
 
 
     /// <summary>Field number for the "syntax" field.</summary>
     /// <summary>Field number for the "syntax" field.</summary>
     public const int SyntaxFieldNumber = 7;
     public const int SyntaxFieldNumber = 7;
-    private global::Google.Protobuf.WellKnownTypes.Syntax syntax_ = global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2;
+    private global::Google.Protobuf.WellKnownTypes.Syntax syntax_ = 0;
     /// <summary>
     /// <summary>
     ///  The source syntax of this method.
     ///  The source syntax of this method.
     /// </summary>
     /// </summary>
@@ -498,7 +498,7 @@ namespace Google.Protobuf.WellKnownTypes {
       if (ResponseTypeUrl.Length != 0) hash ^= ResponseTypeUrl.GetHashCode();
       if (ResponseTypeUrl.Length != 0) hash ^= ResponseTypeUrl.GetHashCode();
       if (ResponseStreaming != false) hash ^= ResponseStreaming.GetHashCode();
       if (ResponseStreaming != false) hash ^= ResponseStreaming.GetHashCode();
       hash ^= options_.GetHashCode();
       hash ^= options_.GetHashCode();
-      if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) hash ^= Syntax.GetHashCode();
+      if (Syntax != 0) hash ^= Syntax.GetHashCode();
       return hash;
       return hash;
     }
     }
 
 
@@ -528,7 +528,7 @@ namespace Google.Protobuf.WellKnownTypes {
         output.WriteBool(ResponseStreaming);
         output.WriteBool(ResponseStreaming);
       }
       }
       options_.WriteTo(output, _repeated_options_codec);
       options_.WriteTo(output, _repeated_options_codec);
-      if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
+      if (Syntax != 0) {
         output.WriteRawTag(56);
         output.WriteRawTag(56);
         output.WriteEnum((int) Syntax);
         output.WriteEnum((int) Syntax);
       }
       }
@@ -552,7 +552,7 @@ namespace Google.Protobuf.WellKnownTypes {
         size += 1 + 1;
         size += 1 + 1;
       }
       }
       size += options_.CalculateSize(_repeated_options_codec);
       size += options_.CalculateSize(_repeated_options_codec);
-      if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
+      if (Syntax != 0) {
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Syntax);
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Syntax);
       }
       }
       return size;
       return size;
@@ -578,7 +578,7 @@ namespace Google.Protobuf.WellKnownTypes {
         ResponseStreaming = other.ResponseStreaming;
         ResponseStreaming = other.ResponseStreaming;
       }
       }
       options_.Add(other.options_);
       options_.Add(other.options_);
-      if (other.Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
+      if (other.Syntax != 0) {
         Syntax = other.Syntax;
         Syntax = other.Syntax;
       }
       }
     }
     }

+ 2 - 2
csharp/src/Google.Protobuf/WellKnownTypes/Struct.cs

@@ -59,7 +59,7 @@ namespace Google.Protobuf.WellKnownTypes {
     /// <summary>
     /// <summary>
     ///  Null value.
     ///  Null value.
     /// </summary>
     /// </summary>
-    NULL_VALUE = 0,
+    [pbr::OriginalName("NULL_VALUE")] NullValue = 0,
   }
   }
 
 
   #endregion
   #endregion
@@ -234,7 +234,7 @@ namespace Google.Protobuf.WellKnownTypes {
     ///  Represents a null value.
     ///  Represents a null value.
     /// </summary>
     /// </summary>
     public global::Google.Protobuf.WellKnownTypes.NullValue NullValue {
     public global::Google.Protobuf.WellKnownTypes.NullValue NullValue {
-      get { return kindCase_ == KindOneofCase.NullValue ? (global::Google.Protobuf.WellKnownTypes.NullValue) kind_ : global::Google.Protobuf.WellKnownTypes.NullValue.NULL_VALUE; }
+      get { return kindCase_ == KindOneofCase.NullValue ? (global::Google.Protobuf.WellKnownTypes.NullValue) kind_ : 0; }
       set {
       set {
         kind_ = value;
         kind_ = value;
         kindCase_ = KindOneofCase.NullValue;
         kindCase_ = KindOneofCase.NullValue;

+ 45 - 45
csharp/src/Google.Protobuf/WellKnownTypes/Type.cs

@@ -79,11 +79,11 @@ namespace Google.Protobuf.WellKnownTypes {
     /// <summary>
     /// <summary>
     ///  Syntax `proto2`.
     ///  Syntax `proto2`.
     /// </summary>
     /// </summary>
-    SYNTAX_PROTO2 = 0,
+    [pbr::OriginalName("SYNTAX_PROTO2")] Proto2 = 0,
     /// <summary>
     /// <summary>
     ///  Syntax `proto3`.
     ///  Syntax `proto3`.
     /// </summary>
     /// </summary>
-    SYNTAX_PROTO3 = 1,
+    [pbr::OriginalName("SYNTAX_PROTO3")] Proto3 = 1,
   }
   }
 
 
   #endregion
   #endregion
@@ -188,7 +188,7 @@ namespace Google.Protobuf.WellKnownTypes {
 
 
     /// <summary>Field number for the "syntax" field.</summary>
     /// <summary>Field number for the "syntax" field.</summary>
     public const int SyntaxFieldNumber = 6;
     public const int SyntaxFieldNumber = 6;
-    private global::Google.Protobuf.WellKnownTypes.Syntax syntax_ = global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2;
+    private global::Google.Protobuf.WellKnownTypes.Syntax syntax_ = 0;
     /// <summary>
     /// <summary>
     ///  The source syntax.
     ///  The source syntax.
     /// </summary>
     /// </summary>
@@ -226,7 +226,7 @@ namespace Google.Protobuf.WellKnownTypes {
       hash ^= oneofs_.GetHashCode();
       hash ^= oneofs_.GetHashCode();
       hash ^= options_.GetHashCode();
       hash ^= options_.GetHashCode();
       if (sourceContext_ != null) hash ^= SourceContext.GetHashCode();
       if (sourceContext_ != null) hash ^= SourceContext.GetHashCode();
-      if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) hash ^= Syntax.GetHashCode();
+      if (Syntax != 0) hash ^= Syntax.GetHashCode();
       return hash;
       return hash;
     }
     }
 
 
@@ -246,7 +246,7 @@ namespace Google.Protobuf.WellKnownTypes {
         output.WriteRawTag(42);
         output.WriteRawTag(42);
         output.WriteMessage(SourceContext);
         output.WriteMessage(SourceContext);
       }
       }
-      if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
+      if (Syntax != 0) {
         output.WriteRawTag(48);
         output.WriteRawTag(48);
         output.WriteEnum((int) Syntax);
         output.WriteEnum((int) Syntax);
       }
       }
@@ -263,7 +263,7 @@ namespace Google.Protobuf.WellKnownTypes {
       if (sourceContext_ != null) {
       if (sourceContext_ != null) {
         size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceContext);
         size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceContext);
       }
       }
-      if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
+      if (Syntax != 0) {
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Syntax);
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Syntax);
       }
       }
       return size;
       return size;
@@ -285,7 +285,7 @@ namespace Google.Protobuf.WellKnownTypes {
         }
         }
         SourceContext.MergeFrom(other.SourceContext);
         SourceContext.MergeFrom(other.SourceContext);
       }
       }
-      if (other.Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
+      if (other.Syntax != 0) {
         Syntax = other.Syntax;
         Syntax = other.Syntax;
       }
       }
     }
     }
@@ -371,7 +371,7 @@ namespace Google.Protobuf.WellKnownTypes {
 
 
     /// <summary>Field number for the "kind" field.</summary>
     /// <summary>Field number for the "kind" field.</summary>
     public const int KindFieldNumber = 1;
     public const int KindFieldNumber = 1;
-    private global::Google.Protobuf.WellKnownTypes.Field.Types.Kind kind_ = global::Google.Protobuf.WellKnownTypes.Field.Types.Kind.TYPE_UNKNOWN;
+    private global::Google.Protobuf.WellKnownTypes.Field.Types.Kind kind_ = 0;
     /// <summary>
     /// <summary>
     ///  The field type.
     ///  The field type.
     /// </summary>
     /// </summary>
@@ -384,7 +384,7 @@ namespace Google.Protobuf.WellKnownTypes {
 
 
     /// <summary>Field number for the "cardinality" field.</summary>
     /// <summary>Field number for the "cardinality" field.</summary>
     public const int CardinalityFieldNumber = 2;
     public const int CardinalityFieldNumber = 2;
-    private global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality cardinality_ = global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.CARDINALITY_UNKNOWN;
+    private global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality cardinality_ = 0;
     /// <summary>
     /// <summary>
     ///  The field cardinality.
     ///  The field cardinality.
     /// </summary>
     /// </summary>
@@ -526,8 +526,8 @@ namespace Google.Protobuf.WellKnownTypes {
 
 
     public override int GetHashCode() {
     public override int GetHashCode() {
       int hash = 1;
       int hash = 1;
-      if (Kind != global::Google.Protobuf.WellKnownTypes.Field.Types.Kind.TYPE_UNKNOWN) hash ^= Kind.GetHashCode();
-      if (Cardinality != global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.CARDINALITY_UNKNOWN) hash ^= Cardinality.GetHashCode();
+      if (Kind != 0) hash ^= Kind.GetHashCode();
+      if (Cardinality != 0) hash ^= Cardinality.GetHashCode();
       if (Number != 0) hash ^= Number.GetHashCode();
       if (Number != 0) hash ^= Number.GetHashCode();
       if (Name.Length != 0) hash ^= Name.GetHashCode();
       if (Name.Length != 0) hash ^= Name.GetHashCode();
       if (TypeUrl.Length != 0) hash ^= TypeUrl.GetHashCode();
       if (TypeUrl.Length != 0) hash ^= TypeUrl.GetHashCode();
@@ -544,11 +544,11 @@ namespace Google.Protobuf.WellKnownTypes {
     }
     }
 
 
     public void WriteTo(pb::CodedOutputStream output) {
     public void WriteTo(pb::CodedOutputStream output) {
-      if (Kind != global::Google.Protobuf.WellKnownTypes.Field.Types.Kind.TYPE_UNKNOWN) {
+      if (Kind != 0) {
         output.WriteRawTag(8);
         output.WriteRawTag(8);
         output.WriteEnum((int) Kind);
         output.WriteEnum((int) Kind);
       }
       }
-      if (Cardinality != global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.CARDINALITY_UNKNOWN) {
+      if (Cardinality != 0) {
         output.WriteRawTag(16);
         output.WriteRawTag(16);
         output.WriteEnum((int) Cardinality);
         output.WriteEnum((int) Cardinality);
       }
       }
@@ -585,10 +585,10 @@ namespace Google.Protobuf.WellKnownTypes {
 
 
     public int CalculateSize() {
     public int CalculateSize() {
       int size = 0;
       int size = 0;
-      if (Kind != global::Google.Protobuf.WellKnownTypes.Field.Types.Kind.TYPE_UNKNOWN) {
+      if (Kind != 0) {
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Kind);
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Kind);
       }
       }
-      if (Cardinality != global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.CARDINALITY_UNKNOWN) {
+      if (Cardinality != 0) {
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Cardinality);
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Cardinality);
       }
       }
       if (Number != 0) {
       if (Number != 0) {
@@ -620,10 +620,10 @@ namespace Google.Protobuf.WellKnownTypes {
       if (other == null) {
       if (other == null) {
         return;
         return;
       }
       }
-      if (other.Kind != global::Google.Protobuf.WellKnownTypes.Field.Types.Kind.TYPE_UNKNOWN) {
+      if (other.Kind != 0) {
         Kind = other.Kind;
         Kind = other.Kind;
       }
       }
-      if (other.Cardinality != global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.CARDINALITY_UNKNOWN) {
+      if (other.Cardinality != 0) {
         Cardinality = other.Cardinality;
         Cardinality = other.Cardinality;
       }
       }
       if (other.Number != 0) {
       if (other.Number != 0) {
@@ -712,79 +712,79 @@ namespace Google.Protobuf.WellKnownTypes {
         /// <summary>
         /// <summary>
         ///  Field type unknown.
         ///  Field type unknown.
         /// </summary>
         /// </summary>
-        TYPE_UNKNOWN = 0,
+        [pbr::OriginalName("TYPE_UNKNOWN")] TypeUnknown = 0,
         /// <summary>
         /// <summary>
         ///  Field type double.
         ///  Field type double.
         /// </summary>
         /// </summary>
-        TYPE_DOUBLE = 1,
+        [pbr::OriginalName("TYPE_DOUBLE")] TypeDouble = 1,
         /// <summary>
         /// <summary>
         ///  Field type float.
         ///  Field type float.
         /// </summary>
         /// </summary>
-        TYPE_FLOAT = 2,
+        [pbr::OriginalName("TYPE_FLOAT")] TypeFloat = 2,
         /// <summary>
         /// <summary>
         ///  Field type int64.
         ///  Field type int64.
         /// </summary>
         /// </summary>
-        TYPE_INT64 = 3,
+        [pbr::OriginalName("TYPE_INT64")] TypeInt64 = 3,
         /// <summary>
         /// <summary>
         ///  Field type uint64.
         ///  Field type uint64.
         /// </summary>
         /// </summary>
-        TYPE_UINT64 = 4,
+        [pbr::OriginalName("TYPE_UINT64")] TypeUint64 = 4,
         /// <summary>
         /// <summary>
         ///  Field type int32.
         ///  Field type int32.
         /// </summary>
         /// </summary>
-        TYPE_INT32 = 5,
+        [pbr::OriginalName("TYPE_INT32")] TypeInt32 = 5,
         /// <summary>
         /// <summary>
         ///  Field type fixed64.
         ///  Field type fixed64.
         /// </summary>
         /// </summary>
-        TYPE_FIXED64 = 6,
+        [pbr::OriginalName("TYPE_FIXED64")] TypeFixed64 = 6,
         /// <summary>
         /// <summary>
         ///  Field type fixed32.
         ///  Field type fixed32.
         /// </summary>
         /// </summary>
-        TYPE_FIXED32 = 7,
+        [pbr::OriginalName("TYPE_FIXED32")] TypeFixed32 = 7,
         /// <summary>
         /// <summary>
         ///  Field type bool.
         ///  Field type bool.
         /// </summary>
         /// </summary>
-        TYPE_BOOL = 8,
+        [pbr::OriginalName("TYPE_BOOL")] TypeBool = 8,
         /// <summary>
         /// <summary>
         ///  Field type string.
         ///  Field type string.
         /// </summary>
         /// </summary>
-        TYPE_STRING = 9,
+        [pbr::OriginalName("TYPE_STRING")] TypeString = 9,
         /// <summary>
         /// <summary>
         ///  Field type group. Proto2 syntax only, and deprecated.
         ///  Field type group. Proto2 syntax only, and deprecated.
         /// </summary>
         /// </summary>
-        TYPE_GROUP = 10,
+        [pbr::OriginalName("TYPE_GROUP")] TypeGroup = 10,
         /// <summary>
         /// <summary>
         ///  Field type message.
         ///  Field type message.
         /// </summary>
         /// </summary>
-        TYPE_MESSAGE = 11,
+        [pbr::OriginalName("TYPE_MESSAGE")] TypeMessage = 11,
         /// <summary>
         /// <summary>
         ///  Field type bytes.
         ///  Field type bytes.
         /// </summary>
         /// </summary>
-        TYPE_BYTES = 12,
+        [pbr::OriginalName("TYPE_BYTES")] TypeBytes = 12,
         /// <summary>
         /// <summary>
         ///  Field type uint32.
         ///  Field type uint32.
         /// </summary>
         /// </summary>
-        TYPE_UINT32 = 13,
+        [pbr::OriginalName("TYPE_UINT32")] TypeUint32 = 13,
         /// <summary>
         /// <summary>
         ///  Field type enum.
         ///  Field type enum.
         /// </summary>
         /// </summary>
-        TYPE_ENUM = 14,
+        [pbr::OriginalName("TYPE_ENUM")] TypeEnum = 14,
         /// <summary>
         /// <summary>
         ///  Field type sfixed32.
         ///  Field type sfixed32.
         /// </summary>
         /// </summary>
-        TYPE_SFIXED32 = 15,
+        [pbr::OriginalName("TYPE_SFIXED32")] TypeSfixed32 = 15,
         /// <summary>
         /// <summary>
         ///  Field type sfixed64.
         ///  Field type sfixed64.
         /// </summary>
         /// </summary>
-        TYPE_SFIXED64 = 16,
+        [pbr::OriginalName("TYPE_SFIXED64")] TypeSfixed64 = 16,
         /// <summary>
         /// <summary>
         ///  Field type sint32.
         ///  Field type sint32.
         /// </summary>
         /// </summary>
-        TYPE_SINT32 = 17,
+        [pbr::OriginalName("TYPE_SINT32")] TypeSint32 = 17,
         /// <summary>
         /// <summary>
         ///  Field type sint64.
         ///  Field type sint64.
         /// </summary>
         /// </summary>
-        TYPE_SINT64 = 18,
+        [pbr::OriginalName("TYPE_SINT64")] TypeSint64 = 18,
       }
       }
 
 
       /// <summary>
       /// <summary>
@@ -794,19 +794,19 @@ namespace Google.Protobuf.WellKnownTypes {
         /// <summary>
         /// <summary>
         ///  For fields with unknown cardinality.
         ///  For fields with unknown cardinality.
         /// </summary>
         /// </summary>
-        CARDINALITY_UNKNOWN = 0,
+        [pbr::OriginalName("CARDINALITY_UNKNOWN")] Unknown = 0,
         /// <summary>
         /// <summary>
         ///  For optional fields.
         ///  For optional fields.
         /// </summary>
         /// </summary>
-        CARDINALITY_OPTIONAL = 1,
+        [pbr::OriginalName("CARDINALITY_OPTIONAL")] Optional = 1,
         /// <summary>
         /// <summary>
         ///  For required fields. Proto2 syntax only.
         ///  For required fields. Proto2 syntax only.
         /// </summary>
         /// </summary>
-        CARDINALITY_REQUIRED = 2,
+        [pbr::OriginalName("CARDINALITY_REQUIRED")] Required = 2,
         /// <summary>
         /// <summary>
         ///  For repeated fields.
         ///  For repeated fields.
         /// </summary>
         /// </summary>
-        CARDINALITY_REPEATED = 3,
+        [pbr::OriginalName("CARDINALITY_REPEATED")] Repeated = 3,
       }
       }
 
 
     }
     }
@@ -900,7 +900,7 @@ namespace Google.Protobuf.WellKnownTypes {
 
 
     /// <summary>Field number for the "syntax" field.</summary>
     /// <summary>Field number for the "syntax" field.</summary>
     public const int SyntaxFieldNumber = 5;
     public const int SyntaxFieldNumber = 5;
-    private global::Google.Protobuf.WellKnownTypes.Syntax syntax_ = global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2;
+    private global::Google.Protobuf.WellKnownTypes.Syntax syntax_ = 0;
     /// <summary>
     /// <summary>
     ///  The source syntax.
     ///  The source syntax.
     /// </summary>
     /// </summary>
@@ -936,7 +936,7 @@ namespace Google.Protobuf.WellKnownTypes {
       hash ^= enumvalue_.GetHashCode();
       hash ^= enumvalue_.GetHashCode();
       hash ^= options_.GetHashCode();
       hash ^= options_.GetHashCode();
       if (sourceContext_ != null) hash ^= SourceContext.GetHashCode();
       if (sourceContext_ != null) hash ^= SourceContext.GetHashCode();
-      if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) hash ^= Syntax.GetHashCode();
+      if (Syntax != 0) hash ^= Syntax.GetHashCode();
       return hash;
       return hash;
     }
     }
 
 
@@ -955,7 +955,7 @@ namespace Google.Protobuf.WellKnownTypes {
         output.WriteRawTag(34);
         output.WriteRawTag(34);
         output.WriteMessage(SourceContext);
         output.WriteMessage(SourceContext);
       }
       }
-      if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
+      if (Syntax != 0) {
         output.WriteRawTag(40);
         output.WriteRawTag(40);
         output.WriteEnum((int) Syntax);
         output.WriteEnum((int) Syntax);
       }
       }
@@ -971,7 +971,7 @@ namespace Google.Protobuf.WellKnownTypes {
       if (sourceContext_ != null) {
       if (sourceContext_ != null) {
         size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceContext);
         size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceContext);
       }
       }
-      if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
+      if (Syntax != 0) {
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Syntax);
         size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Syntax);
       }
       }
       return size;
       return size;
@@ -992,7 +992,7 @@ namespace Google.Protobuf.WellKnownTypes {
         }
         }
         SourceContext.MergeFrom(other.SourceContext);
         SourceContext.MergeFrom(other.SourceContext);
       }
       }
-      if (other.Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.SYNTAX_PROTO2) {
+      if (other.Syntax != 0) {
         Syntax = other.Syntax;
         Syntax = other.Syntax;
       }
       }
     }
     }