Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix latest ArgumentException for C# extensions #6938

Merged
merged 6 commits into from Dec 5, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
6 changes: 6 additions & 0 deletions Makefile.am
Expand Up @@ -68,6 +68,9 @@ csharp_EXTRA_DIST= \
csharp/protos/map_unittest_proto3.proto \
csharp/protos/old_extensions1.proto \
csharp/protos/old_extensions2.proto \
csharp/protos/unittest_issue6936_a.proto \
csharp/protos/unittest_issue6936_b.proto \
csharp/protos/unittest_issue6936_c.proto \
csharp/protos/unittest_custom_options_proto3.proto \
csharp/protos/unittest_import_public_proto3.proto \
csharp/protos/unittest_import_public.proto \
Expand Down Expand Up @@ -128,6 +131,9 @@ csharp_EXTRA_DIST= \
csharp/src/Google.Protobuf.Test/SampleNaNs.cs \
csharp/src/Google.Protobuf.Test/TestCornerCases.cs \
csharp/src/Google.Protobuf.Test.TestProtos/Google.Protobuf.Test.TestProtos.csproj \
csharp/src/Google.Protobuf.Test.TestProtos/UnittestIssue6936A.cs \
csharp/src/Google.Protobuf.Test.TestProtos/UnittestIssue6936B.cs \
csharp/src/Google.Protobuf.Test.TestProtos/UnittestIssue6936C.cs \
csharp/src/Google.Protobuf.Test.TestProtos/ForeignMessagePartial.cs \
csharp/src/Google.Protobuf.Test.TestProtos/MapUnittestProto3.cs \
csharp/src/Google.Protobuf.Test.TestProtos/OldExtensions1.cs \
Expand Down
3 changes: 3 additions & 0 deletions csharp/generate_protos.sh
Expand Up @@ -58,6 +58,9 @@ $PROTOC -Isrc -Icsharp/protos \
csharp/protos/unittest.proto \
csharp/protos/unittest_import.proto \
csharp/protos/unittest_import_public.proto \
csharp/protos/unittest_issue6936_a.proto \
csharp/protos/unittest_issue6936_b.proto \
csharp/protos/unittest_issue6936_c.proto \
src/google/protobuf/unittest_well_known_types.proto \
src/google/protobuf/test_messages_proto3.proto \
src/google/protobuf/test_messages_proto2.proto
Expand Down
15 changes: 15 additions & 0 deletions csharp/protos/unittest_issue6936_a.proto
@@ -0,0 +1,15 @@
syntax = "proto3";

package unittest_issues;

option csharp_namespace = "UnitTest.Issues.TestProtos";

// This file is used as part of a unit test for issue 6936
// We don't need to use it, we just have to import it in both
// "extensions_issue6936_b.proto" and "extensions_issue6936_c.proto"

import "google/protobuf/descriptor.proto";

extend google.protobuf.MessageOptions {
string opt = 50000;
}
14 changes: 14 additions & 0 deletions csharp/protos/unittest_issue6936_b.proto
@@ -0,0 +1,14 @@
syntax = "proto3";

import "unittest_issue6936_a.proto";

package unittest_issues;

option csharp_namespace = "UnitTest.Issues.TestProtos";

// This file is used as part of a unit test for issue 6936
// We don't need to use it, we just have to import it in "unittest_issue6936_c.proto"

message Foo {
option (opt) = "foo";
}
16 changes: 16 additions & 0 deletions csharp/protos/unittest_issue6936_c.proto
@@ -0,0 +1,16 @@
syntax = "proto3";

import "unittest_issue6936_a.proto";
import "unittest_issue6936_b.proto";

package unittest_issues;

option csharp_namespace = "UnitTest.Issues.TestProtos";

// This file is used as part of a unit test for issue 6936
// We don't need to use it, we just have to load it at runtime

message Bar {
option (opt) = "bar";
Foo foo = 1;
}
46 changes: 46 additions & 0 deletions csharp/src/Google.Protobuf.Test.TestProtos/UnittestIssue6936A.cs
@@ -0,0 +1,46 @@
// <auto-generated>
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: unittest_issue6936_a.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace UnitTest.Issues.TestProtos {

/// <summary>Holder for reflection information generated from unittest_issue6936_a.proto</summary>
public static partial class UnittestIssue6936AReflection {

#region Descriptor
/// <summary>File descriptor for unittest_issue6936_a.proto</summary>
public static pbr::FileDescriptor Descriptor {
get { return descriptor; }
}
private static pbr::FileDescriptor descriptor;

static UnittestIssue6936AReflection() {
byte[] descriptorData = global::System.Convert.FromBase64String(
string.Concat(
"Chp1bml0dGVzdF9pc3N1ZTY5MzZfYS5wcm90bxIPdW5pdHRlc3RfaXNzdWVz",
"GiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bzouCgNvcHQSHy5n",
"b29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMY0IYDIAEoCUIdqgIaVW5p",
"dFRlc3QuSXNzdWVzLlRlc3RQcm90b3NiBnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, new pb::Extension[] { UnittestIssue6936AExtensions.Opt }, null));
}
#endregion

}
/// <summary>Holder for extension identifiers generated from the top level of unittest_issue6936_a.proto</summary>
public static partial class UnittestIssue6936AExtensions {
public static readonly pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, string> Opt =
new pb::Extension<global::Google.Protobuf.Reflection.MessageOptions, string>(50000, pb::FieldCodec.ForString(400002, ""));
}

}

#endregion Designer generated code
145 changes: 145 additions & 0 deletions csharp/src/Google.Protobuf.Test.TestProtos/UnittestIssue6936B.cs
@@ -0,0 +1,145 @@
// <auto-generated>
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: unittest_issue6936_b.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace UnitTest.Issues.TestProtos {

/// <summary>Holder for reflection information generated from unittest_issue6936_b.proto</summary>
public static partial class UnittestIssue6936BReflection {

#region Descriptor
/// <summary>File descriptor for unittest_issue6936_b.proto</summary>
public static pbr::FileDescriptor Descriptor {
get { return descriptor; }
}
private static pbr::FileDescriptor descriptor;

static UnittestIssue6936BReflection() {
byte[] descriptorData = global::System.Convert.FromBase64String(
string.Concat(
"Chp1bml0dGVzdF9pc3N1ZTY5MzZfYi5wcm90bxIPdW5pdHRlc3RfaXNzdWVz",
"Ghp1bml0dGVzdF9pc3N1ZTY5MzZfYS5wcm90byIOCgNGb286B4K1GANmb29C",
"HaoCGlVuaXRUZXN0Lklzc3Vlcy5UZXN0UHJvdG9zYgZwcm90bzM="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::UnitTest.Issues.TestProtos.UnittestIssue6936AReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.Foo), global::UnitTest.Issues.TestProtos.Foo.Parser, null, null, null, null, null)
}));
}
#endregion

}
#region Messages
public sealed partial class Foo : pb::IMessage<Foo> {
private static readonly pb::MessageParser<Foo> _parser = new pb::MessageParser<Foo>(() => new Foo());
private pb::UnknownFieldSet _unknownFields;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<Foo> Parser { get { return _parser; } }

[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pbr::MessageDescriptor Descriptor {
get { return global::UnitTest.Issues.TestProtos.UnittestIssue6936BReflection.Descriptor.MessageTypes[0]; }
}

[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
pbr::MessageDescriptor pb::IMessage.Descriptor {
get { return Descriptor; }
}

[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public Foo() {
OnConstruction();
}

partial void OnConstruction();

[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public Foo(Foo other) : this() {
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}

[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public Foo Clone() {
return new Foo(this);
}

[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override bool Equals(object other) {
return Equals(other as Foo);
}

[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public bool Equals(Foo other) {
if (ReferenceEquals(other, null)) {
return false;
}
if (ReferenceEquals(other, this)) {
return true;
}
return Equals(_unknownFields, other._unknownFields);
}

[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override int GetHashCode() {
int hash = 1;
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
return hash;
}

[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override string ToString() {
return pb::JsonFormatter.ToDiagnosticString(this);
}

[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public void WriteTo(pb::CodedOutputStream output) {
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
}

[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public int CalculateSize() {
int size = 0;
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
return size;
}

[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public void MergeFrom(Foo other) {
if (other == null) {
return;
}
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
}

[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public void MergeFrom(pb::CodedInputStream input) {
uint tag;
while ((tag = input.ReadTag()) != 0) {
switch(tag) {
default:
_unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
break;
}
}
}

}

#endregion

}

#endregion Designer generated code