Browse Source

GetOrRegisterExtension -> GetOrInitializeExtension
Add comment explaining IExtensionMessage instability

Sydney Acksman 6 years ago
parent
commit
0436b8db85

+ 3 - 3
csharp/src/Google.Protobuf.Test/GeneratedMessageTest.Proto2.cs

@@ -278,7 +278,7 @@ namespace Google.Protobuf
 
 
             Assert.True(message.IsInitialized());
             Assert.True(message.IsInitialized());
 
 
-            message.GetOrRegisterExtension(TestRequired.Extensions.Multi);
+            message.GetOrInitializeExtension(TestRequired.Extensions.Multi);
 
 
             Assert.True(message.IsInitialized());
             Assert.True(message.IsInitialized());
 
 
@@ -297,7 +297,7 @@ namespace Google.Protobuf
 
 
             Assert.True(message.IsInitialized());
             Assert.True(message.IsInitialized());
 
 
-            message.GetOrRegisterExtension(UnittestExtensions.RepeatedBoolExtension).Add(true);
+            message.GetOrInitializeExtension(UnittestExtensions.RepeatedBoolExtension).Add(true);
 
 
             Assert.True(message.IsInitialized());
             Assert.True(message.IsInitialized());
         }
         }
@@ -342,7 +342,7 @@ namespace Google.Protobuf
         {
         {
             var message = new TestAllExtensions();
             var message = new TestAllExtensions();
             message.SetExtension(UnittestExtensions.OptionalGroupExtension, new OptionalGroup_extension { A = 10 });
             message.SetExtension(UnittestExtensions.OptionalGroupExtension, new OptionalGroup_extension { A = 10 });
-            message.GetOrRegisterExtension(UnittestExtensions.RepeatedGroupExtension).AddRange(new[]
+            message.GetOrInitializeExtension(UnittestExtensions.RepeatedGroupExtension).AddRange(new[]
             {
             {
                 new RepeatedGroup_extension { A = 10 },
                 new RepeatedGroup_extension { A = 10 },
                 new RepeatedGroup_extension { A = 20 },
                 new RepeatedGroup_extension { A = 20 },

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

@@ -32,8 +32,8 @@
 
 
 using System;
 using System;
 using Google.Protobuf.TestProtos;
 using Google.Protobuf.TestProtos;
-using Proto2 = Google.Protobuf.TestProtos.Proto2;
-
+using Proto2 = Google.Protobuf.TestProtos.Proto2;
+
 using static Google.Protobuf.TestProtos.Proto2.UnittestExtensions;
 using static Google.Protobuf.TestProtos.Proto2.UnittestExtensions;
 
 
 namespace Google.Protobuf
 namespace Google.Protobuf
@@ -152,9 +152,9 @@ namespace Google.Protobuf
             };
             };
         }
         }
 
 
-        public static Proto2.TestAllExtensions CreateFullTestAllExtensions()
-        {
-            var message = new Proto2.TestAllExtensions();
+        public static Proto2.TestAllExtensions CreateFullTestAllExtensions()
+        {
+            var message = new Proto2.TestAllExtensions();
             message.SetExtension(OptionalBoolExtension, true);
             message.SetExtension(OptionalBoolExtension, true);
             message.SetExtension(OptionalBytesExtension, ByteString.CopyFrom(1, 2, 3, 4));
             message.SetExtension(OptionalBytesExtension, ByteString.CopyFrom(1, 2, 3, 4));
             message.SetExtension(OptionalDoubleExtension, 23.5);
             message.SetExtension(OptionalDoubleExtension, 23.5);
@@ -178,30 +178,30 @@ namespace Google.Protobuf
             message.SetExtension(OptionalUint32Extension, UInt32.MaxValue);
             message.SetExtension(OptionalUint32Extension, UInt32.MaxValue);
             message.SetExtension(OptionalUint64Extension, UInt64.MaxValue);
             message.SetExtension(OptionalUint64Extension, UInt64.MaxValue);
             message.SetExtension(OptionalGroupExtension, new Proto2.OptionalGroup_extension { A = 10 });
             message.SetExtension(OptionalGroupExtension, new Proto2.OptionalGroup_extension { A = 10 });
-            message.GetOrRegisterExtension(RepeatedBoolExtension).AddRange(new[] { true, false });
-            message.GetOrRegisterExtension(RepeatedBytesExtension).AddRange(new[] { ByteString.CopyFrom(1, 2, 3, 4), ByteString.CopyFrom(5, 6), ByteString.CopyFrom(new byte[1000]) });
-            message.GetOrRegisterExtension(RepeatedDoubleExtension).AddRange(new[] { -12.25, 23.5 });
-            message.GetOrRegisterExtension(RepeatedFixed32Extension).AddRange(new[] { UInt32.MaxValue, 23u });
-            message.GetOrRegisterExtension(RepeatedFixed64Extension).AddRange(new[] { UInt64.MaxValue, 1234567890123ul });
-            message.GetOrRegisterExtension(RepeatedFloatExtension).AddRange(new[] { 100f, 12.25f });
-            message.GetOrRegisterExtension(RepeatedForeignEnumExtension).AddRange(new[] { Proto2.ForeignEnum.ForeignFoo, Proto2.ForeignEnum.ForeignBar });
-            message.GetOrRegisterExtension(RepeatedForeignMessageExtension).AddRange(new[] { new Proto2.ForeignMessage(), new Proto2.ForeignMessage { C = 10 } });
-            message.GetOrRegisterExtension(RepeatedImportEnumExtension).AddRange(new[] { Proto2.ImportEnum.ImportBaz, Proto2.ImportEnum.ImportFoo });
-            message.GetOrRegisterExtension(RepeatedImportMessageExtension).AddRange(new[] { new Proto2.ImportMessage { D = 20 }, new Proto2.ImportMessage { D = 25 } });
-            message.GetOrRegisterExtension(RepeatedInt32Extension).AddRange(new[] { 100, 200 });
-            message.GetOrRegisterExtension(RepeatedInt64Extension).AddRange(new[] { 3210987654321, Int64.MaxValue });
-            message.GetOrRegisterExtension(RepeatedNestedEnumExtension).AddRange(new[] { Proto2.TestAllTypes.Types.NestedEnum.Foo, Proto2.TestAllTypes.Types.NestedEnum.Neg });
-            message.GetOrRegisterExtension(RepeatedNestedMessageExtension).AddRange(new[] { new Proto2.TestAllTypes.Types.NestedMessage { Bb = 35 }, new Proto2.TestAllTypes.Types.NestedMessage { Bb = 10 } });
-            message.GetOrRegisterExtension(RepeatedSfixed32Extension).AddRange(new[] { -123, 123 });
-            message.GetOrRegisterExtension(RepeatedSfixed64Extension).AddRange(new[] { -12345678901234, 12345678901234 });
-            message.GetOrRegisterExtension(RepeatedSint32Extension).AddRange(new[] { -456, 100 });
-            message.GetOrRegisterExtension(RepeatedSint64Extension).AddRange(new[] { -12345678901235, 123 });
-            message.GetOrRegisterExtension(RepeatedStringExtension).AddRange(new[] { "foo", "bar" });
-            message.GetOrRegisterExtension(RepeatedUint32Extension).AddRange(new[] { UInt32.MaxValue, UInt32.MinValue });
-            message.GetOrRegisterExtension(RepeatedUint64Extension).AddRange(new[] { UInt64.MaxValue, UInt32.MinValue });
-            message.GetOrRegisterExtension(RepeatedGroupExtension).AddRange(new[] { new Proto2.RepeatedGroup_extension { A = 10 }, new Proto2.RepeatedGroup_extension { A = 20 } });
-            message.SetExtension(OneofStringExtension, "Oneof string");
-            return message;
+            message.GetOrInitializeExtension(RepeatedBoolExtension).AddRange(new[] { true, false });
+            message.GetOrInitializeExtension(RepeatedBytesExtension).AddRange(new[] { ByteString.CopyFrom(1, 2, 3, 4), ByteString.CopyFrom(5, 6), ByteString.CopyFrom(new byte[1000]) });
+            message.GetOrInitializeExtension(RepeatedDoubleExtension).AddRange(new[] { -12.25, 23.5 });
+            message.GetOrInitializeExtension(RepeatedFixed32Extension).AddRange(new[] { UInt32.MaxValue, 23u });
+            message.GetOrInitializeExtension(RepeatedFixed64Extension).AddRange(new[] { UInt64.MaxValue, 1234567890123ul });
+            message.GetOrInitializeExtension(RepeatedFloatExtension).AddRange(new[] { 100f, 12.25f });
+            message.GetOrInitializeExtension(RepeatedForeignEnumExtension).AddRange(new[] { Proto2.ForeignEnum.ForeignFoo, Proto2.ForeignEnum.ForeignBar });
+            message.GetOrInitializeExtension(RepeatedForeignMessageExtension).AddRange(new[] { new Proto2.ForeignMessage(), new Proto2.ForeignMessage { C = 10 } });
+            message.GetOrInitializeExtension(RepeatedImportEnumExtension).AddRange(new[] { Proto2.ImportEnum.ImportBaz, Proto2.ImportEnum.ImportFoo });
+            message.GetOrInitializeExtension(RepeatedImportMessageExtension).AddRange(new[] { new Proto2.ImportMessage { D = 20 }, new Proto2.ImportMessage { D = 25 } });
+            message.GetOrInitializeExtension(RepeatedInt32Extension).AddRange(new[] { 100, 200 });
+            message.GetOrInitializeExtension(RepeatedInt64Extension).AddRange(new[] { 3210987654321, Int64.MaxValue });
+            message.GetOrInitializeExtension(RepeatedNestedEnumExtension).AddRange(new[] { Proto2.TestAllTypes.Types.NestedEnum.Foo, Proto2.TestAllTypes.Types.NestedEnum.Neg });
+            message.GetOrInitializeExtension(RepeatedNestedMessageExtension).AddRange(new[] { new Proto2.TestAllTypes.Types.NestedMessage { Bb = 35 }, new Proto2.TestAllTypes.Types.NestedMessage { Bb = 10 } });
+            message.GetOrInitializeExtension(RepeatedSfixed32Extension).AddRange(new[] { -123, 123 });
+            message.GetOrInitializeExtension(RepeatedSfixed64Extension).AddRange(new[] { -12345678901234, 12345678901234 });
+            message.GetOrInitializeExtension(RepeatedSint32Extension).AddRange(new[] { -456, 100 });
+            message.GetOrInitializeExtension(RepeatedSint64Extension).AddRange(new[] { -12345678901235, 123 });
+            message.GetOrInitializeExtension(RepeatedStringExtension).AddRange(new[] { "foo", "bar" });
+            message.GetOrInitializeExtension(RepeatedUint32Extension).AddRange(new[] { UInt32.MaxValue, UInt32.MinValue });
+            message.GetOrInitializeExtension(RepeatedUint64Extension).AddRange(new[] { UInt64.MaxValue, UInt32.MinValue });
+            message.GetOrInitializeExtension(RepeatedGroupExtension).AddRange(new[] { new Proto2.RepeatedGroup_extension { A = 10 }, new Proto2.RepeatedGroup_extension { A = 20 } });
+            message.SetExtension(OneofStringExtension, "Oneof string");
+            return message;
         }
         }
     }
     }
 }
 }

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

@@ -3904,8 +3904,8 @@ namespace ProtobufTestMessages.Proto2 {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestAllTypesProto2, TValue> extension) {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestAllTypesProto2, TValue> extension) {
       return pb::ExtensionSet.Get(ref _extensions, extension);
       return pb::ExtensionSet.Get(ref _extensions, extension);
     }
     }
-    public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<TestAllTypesProto2, TValue> extension) {
-      return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+    public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<TestAllTypesProto2, TValue> extension) {
+      return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
     }
     }
     public void SetExtension<TValue>(pb::Extension<TestAllTypesProto2, TValue> extension, TValue value) {
     public void SetExtension<TValue>(pb::Extension<TestAllTypesProto2, TValue> extension, TValue value) {
       pb::ExtensionSet.Set(ref _extensions, extension, value);
       pb::ExtensionSet.Set(ref _extensions, extension, value);
@@ -4438,8 +4438,8 @@ namespace ProtobufTestMessages.Proto2 {
         public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<MessageSetCorrect, TValue> extension) {
         public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<MessageSetCorrect, TValue> extension) {
           return pb::ExtensionSet.Get(ref _extensions, extension);
           return pb::ExtensionSet.Get(ref _extensions, extension);
         }
         }
-        public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<MessageSetCorrect, TValue> extension) {
-          return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+        public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<MessageSetCorrect, TValue> extension) {
+          return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
         }
         }
         public void SetExtension<TValue>(pb::Extension<MessageSetCorrect, TValue> extension, TValue value) {
         public void SetExtension<TValue>(pb::Extension<MessageSetCorrect, TValue> extension, TValue value) {
           pb::ExtensionSet.Set(ref _extensions, extension, value);
           pb::ExtensionSet.Set(ref _extensions, extension, value);

+ 20 - 20
csharp/src/Google.Protobuf.Test/TestProtos/Unittest.cs

@@ -5258,8 +5258,8 @@ namespace Google.Protobuf.TestProtos.Proto2 {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestAllExtensions, TValue> extension) {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestAllExtensions, TValue> extension) {
       return pb::ExtensionSet.Get(ref _extensions, extension);
       return pb::ExtensionSet.Get(ref _extensions, extension);
     }
     }
-    public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<TestAllExtensions, TValue> extension) {
-      return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+    public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<TestAllExtensions, TValue> extension) {
+      return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
     }
     }
     public void SetExtension<TValue>(pb::Extension<TestAllExtensions, TValue> extension, TValue value) {
     public void SetExtension<TValue>(pb::Extension<TestAllExtensions, TValue> extension, TValue value) {
       pb::ExtensionSet.Set(ref _extensions, extension, value);
       pb::ExtensionSet.Set(ref _extensions, extension, value);
@@ -6033,8 +6033,8 @@ namespace Google.Protobuf.TestProtos.Proto2 {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestGroupExtension, TValue> extension) {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestGroupExtension, TValue> extension) {
       return pb::ExtensionSet.Get(ref _extensions, extension);
       return pb::ExtensionSet.Get(ref _extensions, extension);
     }
     }
-    public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<TestGroupExtension, TValue> extension) {
-      return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+    public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<TestGroupExtension, TValue> extension) {
+      return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
     }
     }
     public void SetExtension<TValue>(pb::Extension<TestGroupExtension, TValue> extension, TValue value) {
     public void SetExtension<TValue>(pb::Extension<TestGroupExtension, TValue> extension, TValue value) {
       pb::ExtensionSet.Set(ref _extensions, extension, value);
       pb::ExtensionSet.Set(ref _extensions, extension, value);
@@ -8604,8 +8604,8 @@ namespace Google.Protobuf.TestProtos.Proto2 {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestEmptyMessageWithExtensions, TValue> extension) {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestEmptyMessageWithExtensions, TValue> extension) {
       return pb::ExtensionSet.Get(ref _extensions, extension);
       return pb::ExtensionSet.Get(ref _extensions, extension);
     }
     }
-    public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<TestEmptyMessageWithExtensions, TValue> extension) {
-      return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+    public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<TestEmptyMessageWithExtensions, TValue> extension) {
+      return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
     }
     }
     public void SetExtension<TValue>(pb::Extension<TestEmptyMessageWithExtensions, TValue> extension, TValue value) {
     public void SetExtension<TValue>(pb::Extension<TestEmptyMessageWithExtensions, TValue> extension, TValue value) {
       pb::ExtensionSet.Set(ref _extensions, extension, value);
       pb::ExtensionSet.Set(ref _extensions, extension, value);
@@ -8745,8 +8745,8 @@ namespace Google.Protobuf.TestProtos.Proto2 {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestMultipleExtensionRanges, TValue> extension) {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestMultipleExtensionRanges, TValue> extension) {
       return pb::ExtensionSet.Get(ref _extensions, extension);
       return pb::ExtensionSet.Get(ref _extensions, extension);
     }
     }
-    public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<TestMultipleExtensionRanges, TValue> extension) {
-      return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+    public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<TestMultipleExtensionRanges, TValue> extension) {
+      return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
     }
     }
     public void SetExtension<TValue>(pb::Extension<TestMultipleExtensionRanges, TValue> extension, TValue value) {
     public void SetExtension<TValue>(pb::Extension<TestMultipleExtensionRanges, TValue> extension, TValue value) {
       pb::ExtensionSet.Set(ref _extensions, extension, value);
       pb::ExtensionSet.Set(ref _extensions, extension, value);
@@ -12223,8 +12223,8 @@ namespace Google.Protobuf.TestProtos.Proto2 {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestFieldOrderings, TValue> extension) {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestFieldOrderings, TValue> extension) {
       return pb::ExtensionSet.Get(ref _extensions, extension);
       return pb::ExtensionSet.Get(ref _extensions, extension);
     }
     }
-    public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<TestFieldOrderings, TValue> extension) {
-      return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+    public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<TestFieldOrderings, TValue> extension) {
+      return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
     }
     }
     public void SetExtension<TValue>(pb::Extension<TestFieldOrderings, TValue> extension, TValue value) {
     public void SetExtension<TValue>(pb::Extension<TestFieldOrderings, TValue> extension, TValue value) {
       pb::ExtensionSet.Set(ref _extensions, extension, value);
       pb::ExtensionSet.Set(ref _extensions, extension, value);
@@ -19369,8 +19369,8 @@ namespace Google.Protobuf.TestProtos.Proto2 {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestPackedExtensions, TValue> extension) {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestPackedExtensions, TValue> extension) {
       return pb::ExtensionSet.Get(ref _extensions, extension);
       return pb::ExtensionSet.Get(ref _extensions, extension);
     }
     }
-    public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<TestPackedExtensions, TValue> extension) {
-      return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+    public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<TestPackedExtensions, TValue> extension) {
+      return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
     }
     }
     public void SetExtension<TValue>(pb::Extension<TestPackedExtensions, TValue> extension, TValue value) {
     public void SetExtension<TValue>(pb::Extension<TestPackedExtensions, TValue> extension, TValue value) {
       pb::ExtensionSet.Set(ref _extensions, extension, value);
       pb::ExtensionSet.Set(ref _extensions, extension, value);
@@ -19510,8 +19510,8 @@ namespace Google.Protobuf.TestProtos.Proto2 {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestUnpackedExtensions, TValue> extension) {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestUnpackedExtensions, TValue> extension) {
       return pb::ExtensionSet.Get(ref _extensions, extension);
       return pb::ExtensionSet.Get(ref _extensions, extension);
     }
     }
-    public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<TestUnpackedExtensions, TValue> extension) {
-      return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+    public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<TestUnpackedExtensions, TValue> extension) {
+      return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
     }
     }
     public void SetExtension<TValue>(pb::Extension<TestUnpackedExtensions, TValue> extension, TValue value) {
     public void SetExtension<TValue>(pb::Extension<TestUnpackedExtensions, TValue> extension, TValue value) {
       pb::ExtensionSet.Set(ref _extensions, extension, value);
       pb::ExtensionSet.Set(ref _extensions, extension, value);
@@ -20586,8 +20586,8 @@ namespace Google.Protobuf.TestProtos.Proto2 {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestParsingMerge, TValue> extension) {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestParsingMerge, TValue> extension) {
       return pb::ExtensionSet.Get(ref _extensions, extension);
       return pb::ExtensionSet.Get(ref _extensions, extension);
     }
     }
-    public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<TestParsingMerge, TValue> extension) {
-      return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+    public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<TestParsingMerge, TValue> extension) {
+      return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
     }
     }
     public void SetExtension<TValue>(pb::Extension<TestParsingMerge, TValue> extension, TValue value) {
     public void SetExtension<TValue>(pb::Extension<TestParsingMerge, TValue> extension, TValue value) {
       pb::ExtensionSet.Set(ref _extensions, extension, value);
       pb::ExtensionSet.Set(ref _extensions, extension, value);
@@ -23251,8 +23251,8 @@ namespace Google.Protobuf.TestProtos.Proto2 {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestHugeFieldNumbers, TValue> extension) {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestHugeFieldNumbers, TValue> extension) {
       return pb::ExtensionSet.Get(ref _extensions, extension);
       return pb::ExtensionSet.Get(ref _extensions, extension);
     }
     }
-    public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<TestHugeFieldNumbers, TValue> extension) {
-      return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+    public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<TestHugeFieldNumbers, TValue> extension) {
+      return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
     }
     }
     public void SetExtension<TValue>(pb::Extension<TestHugeFieldNumbers, TValue> extension, TValue value) {
     public void SetExtension<TValue>(pb::Extension<TestHugeFieldNumbers, TValue> extension, TValue value) {
       pb::ExtensionSet.Set(ref _extensions, extension, value);
       pb::ExtensionSet.Set(ref _extensions, extension, value);
@@ -23916,8 +23916,8 @@ namespace Google.Protobuf.TestProtos.Proto2 {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestExtensionInsideTable, TValue> extension) {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<TestExtensionInsideTable, TValue> extension) {
       return pb::ExtensionSet.Get(ref _extensions, extension);
       return pb::ExtensionSet.Get(ref _extensions, extension);
     }
     }
-    public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<TestExtensionInsideTable, TValue> extension) {
-      return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+    public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<TestExtensionInsideTable, TValue> extension) {
+      return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
     }
     }
     public void SetExtension<TValue>(pb::Extension<TestExtensionInsideTable, TValue> extension, TValue value) {
     public void SetExtension<TValue>(pb::Extension<TestExtensionInsideTable, TValue> extension, TValue value) {
       pb::ExtensionSet.Set(ref _extensions, extension, value);
       pb::ExtensionSet.Set(ref _extensions, extension, value);

+ 1 - 1
csharp/src/Google.Protobuf/ExtensionSet.cs

@@ -89,7 +89,7 @@ namespace Google.Protobuf
         /// <summary>
         /// <summary>
         /// Gets the value of the specified repeated extension, registering it if it doesn't exist
         /// Gets the value of the specified repeated extension, registering it if it doesn't exist
         /// </summary>
         /// </summary>
-        public static RepeatedField<TValue> GetOrRegister<TTarget, TValue>(ref ExtensionSet<TTarget> set, RepeatedExtension<TTarget, TValue> extension) where TTarget : IExtendableMessage<TTarget>
+        public static RepeatedField<TValue> GetOrInitialize<TTarget, TValue>(ref ExtensionSet<TTarget> set, RepeatedExtension<TTarget, TValue> extension) where TTarget : IExtendableMessage<TTarget>
         {
         {
             IExtensionValue value;
             IExtensionValue value;
             if (set == null)
             if (set == null)

+ 4 - 3
csharp/src/Google.Protobuf/IExtendableMessage.cs

@@ -35,7 +35,8 @@ using Google.Protobuf.Collections;
 namespace Google.Protobuf
 namespace Google.Protobuf
 {
 {
     /// <summary>
     /// <summary>
-    /// Generic interface for a Protocol Buffers message containing one or more extensions, where the type parameter is expected to be the same type as the implementation class
+    /// Generic interface for a Protocol Buffers message containing one or more extensions, where the type parameter is expected to be the same type as the implementation class.
+    /// This interface is experiemental and is subject to change.
     /// </summary>
     /// </summary>
     public interface IExtendableMessage<T> : IMessage<T> where T : IExtendableMessage<T>
     public interface IExtendableMessage<T> : IMessage<T> where T : IExtendableMessage<T>
     {
     {
@@ -46,14 +47,14 @@ namespace Google.Protobuf
 
 
         /// <summary>
         /// <summary>
         /// Gets the value of the specified repeated extension or null if the extension isn't registered in this set.
         /// Gets the value of the specified repeated extension or null if the extension isn't registered in this set.
-        /// For a version of this method that never returns null, use <see cref="IExtendableMessage{T}.GetOrRegisterExtension{TValue}(RepeatedExtension{T, TValue})"/>
+        /// For a version of this method that never returns null, use <see cref="IExtendableMessage{T}.GetOrInitializeExtension{TValue}(RepeatedExtension{T, TValue})"/>
         /// </summary>
         /// </summary>
         RepeatedField<TValue> GetExtension<TValue>(RepeatedExtension<T, TValue> extension);
         RepeatedField<TValue> GetExtension<TValue>(RepeatedExtension<T, TValue> extension);
 
 
         /// <summary>
         /// <summary>
         /// Gets the value of the specified repeated extension, registering it if it hasn't already been registered.
         /// Gets the value of the specified repeated extension, registering it if it hasn't already been registered.
         /// </summary>
         /// </summary>
-        RepeatedField<TValue> GetOrRegisterExtension<TValue>(RepeatedExtension<T, TValue> extension);
+        RepeatedField<TValue> GetOrInitializeExtension<TValue>(RepeatedExtension<T, TValue> extension);
 
 
         /// <summary>
         /// <summary>
         /// Sets the value of the specified extension
         /// Sets the value of the specified extension

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

@@ -1733,8 +1733,8 @@ namespace Google.Protobuf.Reflection {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<ExtensionRangeOptions, TValue> extension) {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<ExtensionRangeOptions, TValue> extension) {
       return pb::ExtensionSet.Get(ref _extensions, extension);
       return pb::ExtensionSet.Get(ref _extensions, extension);
     }
     }
-    public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<ExtensionRangeOptions, TValue> extension) {
-      return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+    public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<ExtensionRangeOptions, TValue> extension) {
+      return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
     }
     }
     public void SetExtension<TValue>(pb::Extension<ExtensionRangeOptions, TValue> extension, TValue value) {
     public void SetExtension<TValue>(pb::Extension<ExtensionRangeOptions, TValue> extension, TValue value) {
       pb::ExtensionSet.Set(ref _extensions, extension, value);
       pb::ExtensionSet.Set(ref _extensions, extension, value);
@@ -4871,8 +4871,8 @@ namespace Google.Protobuf.Reflection {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<FileOptions, TValue> extension) {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<FileOptions, TValue> extension) {
       return pb::ExtensionSet.Get(ref _extensions, extension);
       return pb::ExtensionSet.Get(ref _extensions, extension);
     }
     }
-    public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<FileOptions, TValue> extension) {
-      return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+    public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<FileOptions, TValue> extension) {
+      return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
     }
     }
     public void SetExtension<TValue>(pb::Extension<FileOptions, TValue> extension, TValue value) {
     public void SetExtension<TValue>(pb::Extension<FileOptions, TValue> extension, TValue value) {
       pb::ExtensionSet.Set(ref _extensions, extension, value);
       pb::ExtensionSet.Set(ref _extensions, extension, value);
@@ -5280,8 +5280,8 @@ namespace Google.Protobuf.Reflection {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<MessageOptions, TValue> extension) {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<MessageOptions, TValue> extension) {
       return pb::ExtensionSet.Get(ref _extensions, extension);
       return pb::ExtensionSet.Get(ref _extensions, extension);
     }
     }
-    public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<MessageOptions, TValue> extension) {
-      return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+    public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<MessageOptions, TValue> extension) {
+      return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
     }
     }
     public void SetExtension<TValue>(pb::Extension<MessageOptions, TValue> extension, TValue value) {
     public void SetExtension<TValue>(pb::Extension<MessageOptions, TValue> extension, TValue value) {
       pb::ExtensionSet.Set(ref _extensions, extension, value);
       pb::ExtensionSet.Set(ref _extensions, extension, value);
@@ -5756,8 +5756,8 @@ namespace Google.Protobuf.Reflection {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<FieldOptions, TValue> extension) {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<FieldOptions, TValue> extension) {
       return pb::ExtensionSet.Get(ref _extensions, extension);
       return pb::ExtensionSet.Get(ref _extensions, extension);
     }
     }
-    public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<FieldOptions, TValue> extension) {
-      return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+    public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<FieldOptions, TValue> extension) {
+      return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
     }
     }
     public void SetExtension<TValue>(pb::Extension<FieldOptions, TValue> extension, TValue value) {
     public void SetExtension<TValue>(pb::Extension<FieldOptions, TValue> extension, TValue value) {
       pb::ExtensionSet.Set(ref _extensions, extension, value);
       pb::ExtensionSet.Set(ref _extensions, extension, value);
@@ -5951,8 +5951,8 @@ namespace Google.Protobuf.Reflection {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<OneofOptions, TValue> extension) {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<OneofOptions, TValue> extension) {
       return pb::ExtensionSet.Get(ref _extensions, extension);
       return pb::ExtensionSet.Get(ref _extensions, extension);
     }
     }
-    public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<OneofOptions, TValue> extension) {
-      return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+    public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<OneofOptions, TValue> extension) {
+      return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
     }
     }
     public void SetExtension<TValue>(pb::Extension<OneofOptions, TValue> extension, TValue value) {
     public void SetExtension<TValue>(pb::Extension<OneofOptions, TValue> extension, TValue value) {
       pb::ExtensionSet.Set(ref _extensions, extension, value);
       pb::ExtensionSet.Set(ref _extensions, extension, value);
@@ -6209,8 +6209,8 @@ namespace Google.Protobuf.Reflection {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<EnumOptions, TValue> extension) {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<EnumOptions, TValue> extension) {
       return pb::ExtensionSet.Get(ref _extensions, extension);
       return pb::ExtensionSet.Get(ref _extensions, extension);
     }
     }
-    public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<EnumOptions, TValue> extension) {
-      return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+    public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<EnumOptions, TValue> extension) {
+      return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
     }
     }
     public void SetExtension<TValue>(pb::Extension<EnumOptions, TValue> extension, TValue value) {
     public void SetExtension<TValue>(pb::Extension<EnumOptions, TValue> extension, TValue value) {
       pb::ExtensionSet.Set(ref _extensions, extension, value);
       pb::ExtensionSet.Set(ref _extensions, extension, value);
@@ -6422,8 +6422,8 @@ namespace Google.Protobuf.Reflection {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<EnumValueOptions, TValue> extension) {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<EnumValueOptions, TValue> extension) {
       return pb::ExtensionSet.Get(ref _extensions, extension);
       return pb::ExtensionSet.Get(ref _extensions, extension);
     }
     }
-    public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<EnumValueOptions, TValue> extension) {
-      return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+    public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<EnumValueOptions, TValue> extension) {
+      return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
     }
     }
     public void SetExtension<TValue>(pb::Extension<EnumValueOptions, TValue> extension, TValue value) {
     public void SetExtension<TValue>(pb::Extension<EnumValueOptions, TValue> extension, TValue value) {
       pb::ExtensionSet.Set(ref _extensions, extension, value);
       pb::ExtensionSet.Set(ref _extensions, extension, value);
@@ -6635,8 +6635,8 @@ namespace Google.Protobuf.Reflection {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<ServiceOptions, TValue> extension) {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<ServiceOptions, TValue> extension) {
       return pb::ExtensionSet.Get(ref _extensions, extension);
       return pb::ExtensionSet.Get(ref _extensions, extension);
     }
     }
-    public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<ServiceOptions, TValue> extension) {
-      return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+    public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<ServiceOptions, TValue> extension) {
+      return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
     }
     }
     public void SetExtension<TValue>(pb::Extension<ServiceOptions, TValue> extension, TValue value) {
     public void SetExtension<TValue>(pb::Extension<ServiceOptions, TValue> extension, TValue value) {
       pb::ExtensionSet.Set(ref _extensions, extension, value);
       pb::ExtensionSet.Set(ref _extensions, extension, value);
@@ -6889,8 +6889,8 @@ namespace Google.Protobuf.Reflection {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<MethodOptions, TValue> extension) {
     public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<MethodOptions, TValue> extension) {
       return pb::ExtensionSet.Get(ref _extensions, extension);
       return pb::ExtensionSet.Get(ref _extensions, extension);
     }
     }
-    public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<MethodOptions, TValue> extension) {
-      return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);
+    public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<MethodOptions, TValue> extension) {
+      return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);
     }
     }
     public void SetExtension<TValue>(pb::Extension<MethodOptions, TValue> extension, TValue value) {
     public void SetExtension<TValue>(pb::Extension<MethodOptions, TValue> extension, TValue value) {
       pb::ExtensionSet.Set(ref _extensions, extension, value);
       pb::ExtensionSet.Set(ref _extensions, extension, value);

+ 3 - 3
csharp/src/Google.Protobuf/Reflection/ReflectionUtil.cs

@@ -230,7 +230,7 @@ namespace Google.Protobuf.Reflection
                 }
                 }
                 else if (extension is RepeatedExtension<T1, T3>)
                 else if (extension is RepeatedExtension<T1, T3>)
                 {
                 {
-                    return extensionMessage.GetOrRegisterExtension(extension as RepeatedExtension<T1, T3>);
+                    return extensionMessage.GetOrInitializeExtension(extension as RepeatedExtension<T1, T3>);
                 }
                 }
                 else
                 else
                 {
                 {
@@ -312,11 +312,11 @@ namespace Google.Protobuf.Reflection
         {
         {
             public Func<IMessage, bool> CreateIsInitializedCaller()
             public Func<IMessage, bool> CreateIsInitializedCaller()
             {
             {
-                var prop = typeof(T1).GetTypeInfo().GetDeclaredProperty("_Extensions");
+                var prop = typeof(T1).GetTypeInfo().GetDeclaredProperty("_Extensions");
 #if NET35
 #if NET35
                 var getFunc = (Func<T1, ExtensionSet<T1>>)prop.GetGetMethod(true).CreateDelegate(typeof(Func<T1, ExtensionSet<T1>>));
                 var getFunc = (Func<T1, ExtensionSet<T1>>)prop.GetGetMethod(true).CreateDelegate(typeof(Func<T1, ExtensionSet<T1>>));
 #else
 #else
-                var getFunc = (Func<T1, ExtensionSet<T1>>)prop.GetMethod.CreateDelegate(typeof(Func<T1, ExtensionSet<T1>>));
+                var getFunc = (Func<T1, ExtensionSet<T1>>)prop.GetMethod.CreateDelegate(typeof(Func<T1, ExtensionSet<T1>>));
 #endif
 #endif
                 var initializedFunc = (Func<ExtensionSet<T1>, bool>)
                 var initializedFunc = (Func<ExtensionSet<T1>, bool>)
                     typeof(ExtensionSet<T1>)
                     typeof(ExtensionSet<T1>)

+ 2 - 2
src/google/protobuf/compiler/csharp/csharp_message.cc

@@ -272,8 +272,8 @@ void MessageGenerator::Generate(io::Printer* printer) {
       "public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<$class_name$, TValue> extension) {\n"
       "public pbc::RepeatedField<TValue> GetExtension<TValue>(pb::RepeatedExtension<$class_name$, TValue> extension) {\n"
       "  return pb::ExtensionSet.Get(ref _extensions, extension);\n"
       "  return pb::ExtensionSet.Get(ref _extensions, extension);\n"
       "}\n"
       "}\n"
-      "public pbc::RepeatedField<TValue> GetOrRegisterExtension<TValue>(pb::RepeatedExtension<$class_name$, TValue> extension) {\n"
-      "  return pb::ExtensionSet.GetOrRegister(ref _extensions, extension);\n"
+      "public pbc::RepeatedField<TValue> GetOrInitializeExtension<TValue>(pb::RepeatedExtension<$class_name$, TValue> extension) {\n"
+      "  return pb::ExtensionSet.GetOrInitialize(ref _extensions, extension);\n"
       "}\n"
       "}\n"
       "public void SetExtension<TValue>(pb::Extension<$class_name$, TValue> extension, TValue value) {\n"
       "public void SetExtension<TValue>(pb::Extension<$class_name$, TValue> extension, TValue value) {\n"
       "  pb::ExtensionSet.Set(ref _extensions, extension, value);\n"
       "  pb::ExtensionSet.Set(ref _extensions, extension, value);\n"