diff options
author | Jon Skeet <skeet@pobox.com> | 2009-01-27 14:43:10 +0000 |
---|---|---|
committer | Jon Skeet <skeet@pobox.com> | 2009-01-27 14:43:10 +0000 |
commit | 49fcd4f794bb96c3dcf729f81c0ffcb19fdadc14 (patch) | |
tree | 8ec88242bda7104a649c2273770605f89a4aba37 /src/ProtocolBuffers | |
parent | 642a8140c88dfb61f5f4812fc179e4f42beb4978 (diff) | |
download | protobuf-49fcd4f794bb96c3dcf729f81c0ffcb19fdadc14.tar.gz protobuf-49fcd4f794bb96c3dcf729f81c0ffcb19fdadc14.tar.bz2 protobuf-49fcd4f794bb96c3dcf729f81c0ffcb19fdadc14.zip |
Merge extensions correctly
Diffstat (limited to 'src/ProtocolBuffers')
-rw-r--r-- | src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs | 7 | ||||
-rw-r--r-- | src/ProtocolBuffers/DynamicMessage.cs | 7 | ||||
-rw-r--r-- | src/ProtocolBuffers/ExtendableBuilder.cs | 6 |
3 files changed, 14 insertions, 6 deletions
diff --git a/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs b/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs index 67fdf966..4206f261 100644 --- a/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs +++ b/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs @@ -3936,6 +3936,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { if (other.uninterpretedOption_.Count != 0) { base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_); } + this.MergeExtensionFields(other); this.MergeUnknownFields(other.UnknownFields); return this; } @@ -4273,6 +4274,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { if (other.uninterpretedOption_.Count != 0) { base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_); } + this.MergeExtensionFields(other); this.MergeUnknownFields(other.UnknownFields); return this; } @@ -4565,6 +4567,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { if (other.uninterpretedOption_.Count != 0) { base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_); } + this.MergeExtensionFields(other); this.MergeUnknownFields(other.UnknownFields); return this; } @@ -4839,6 +4842,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { if (other.uninterpretedOption_.Count != 0) { base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_); } + this.MergeExtensionFields(other); this.MergeUnknownFields(other.UnknownFields); return this; } @@ -5063,6 +5067,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { if (other.uninterpretedOption_.Count != 0) { base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_); } + this.MergeExtensionFields(other); this.MergeUnknownFields(other.UnknownFields); return this; } @@ -5287,6 +5292,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { if (other.uninterpretedOption_.Count != 0) { base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_); } + this.MergeExtensionFields(other); this.MergeUnknownFields(other.UnknownFields); return this; } @@ -5511,6 +5517,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { if (other.uninterpretedOption_.Count != 0) { base.AddRange(other.uninterpretedOption_, result.uninterpretedOption_); } + this.MergeExtensionFields(other); this.MergeUnknownFields(other.UnknownFields); return this; } diff --git a/src/ProtocolBuffers/DynamicMessage.cs b/src/ProtocolBuffers/DynamicMessage.cs index 812be1c8..b740013b 100644 --- a/src/ProtocolBuffers/DynamicMessage.cs +++ b/src/ProtocolBuffers/DynamicMessage.cs @@ -284,15 +284,12 @@ namespace Google.ProtocolBuffers { throw new ArgumentException("MergeFrom(IMessage) can only merge messages of the same type."); } fields.MergeFrom(other); + MergeUnknownFields(other.UnknownFields); return this; } public override Builder MergeFrom(DynamicMessage other) { - if (other.DescriptorForType != type) { - throw new ArgumentException("MergeFrom(IMessage) can only merge messages of the same type."); - } - fields.MergeFrom(other); - return this; + return MergeFrom((IMessage)other); } public override DynamicMessage Build() { diff --git a/src/ProtocolBuffers/ExtendableBuilder.cs b/src/ProtocolBuffers/ExtendableBuilder.cs index 7f4461cb..b88f2994 100644 --- a/src/ProtocolBuffers/ExtendableBuilder.cs +++ b/src/ProtocolBuffers/ExtendableBuilder.cs @@ -159,12 +159,16 @@ namespace Google.ProtocolBuffers { public override TBuilder AddRepeatedField(FieldDescriptor field, object value) { if (field.IsExtension) { ExtendableMessage<TMessage, TBuilder> message = MessageBeingBuilt; - message.VerifyContainingType(field); + message.VerifyContainingType(field); message.Extensions.AddRepeatedField(field, value); return ThisBuilder; } else { return base.AddRepeatedField(field, value); } } + + protected void MergeExtensionFields(ExtendableMessage<TMessage, TBuilder> other) { + MessageBeingBuilt.Extensions.MergeFrom(other.Extensions); + } } } |