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 3 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 @@ -65,6 +65,9 @@ csharp_EXTRA_DIST= \
csharp/keys/Google.Protobuf.snk \
csharp/keys/README.md \
csharp/protos/README.md \
csharp/protos/extensions/extensions_a.proto \
csharp/protos/extensions/extensions_b.proto \
csharp/protos/extensions/extensions_c.proto \
csharp/protos/map_unittest_proto3.proto \
csharp/protos/old_extensions1.proto \
csharp/protos/old_extensions2.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/ExtensionsA.cs \
csharp/src/Google.Protobuf.Test.TestProtos/ExtensionsB.cs \
csharp/src/Google.Protobuf.Test.TestProtos/ExtensionsC.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
29 changes: 16 additions & 13 deletions csharp/generate_protos.sh
Expand Up @@ -44,23 +44,26 @@ $PROTOC -Isrc --csharp_out=csharp/src/Google.Protobuf \
# Note that this deliberately does *not* include old_extensions1.proto
# and old_extensions2.proto, which are generated with an older version
# of protoc.
$PROTOC -Isrc -Icsharp/protos \
$PROTOC -Isrc -Icsharp/protos -Icsharp/protos/extensions \
--csharp_out=csharp/src/Google.Protobuf.Test.TestProtos \
--descriptor_set_out=csharp/src/Google.Protobuf.Test/testprotos.pb \
--include_source_info \
--include_imports \
csharp/protos/map_unittest_proto3.proto \
csharp/protos/unittest_issues.proto \
csharp/protos/unittest_custom_options_proto3.proto \
csharp/protos/unittest_proto3.proto \
csharp/protos/unittest_import_proto3.proto \
csharp/protos/unittest_import_public_proto3.proto \
csharp/protos/unittest.proto \
csharp/protos/unittest_import.proto \
csharp/protos/unittest_import_public.proto \
src/google/protobuf/unittest_well_known_types.proto \
src/google/protobuf/test_messages_proto3.proto \
src/google/protobuf/test_messages_proto2.proto
map_unittest_proto3.proto \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why are you removing the prefix from the path? Looks unrelated to this PR.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please revert unnecessary changes.

unittest_issues.proto \
unittest_custom_options_proto3.proto \
unittest_proto3.proto \
unittest_import_proto3.proto \
unittest_import_public_proto3.proto \
unittest.proto \
unittest_import.proto \
unittest_import_public.proto \
extensions_a.proto \
extensions_b.proto \
extensions_c.proto \
google/protobuf/unittest_well_known_types.proto \
google/protobuf/test_messages_proto3.proto \
google/protobuf/test_messages_proto2.proto

# AddressBook sample protos
$PROTOC -Iexamples -Isrc --csharp_out=csharp/src/AddressBook \
Expand Down
12 changes: 12 additions & 0 deletions csharp/protos/extensions/extensions_a.proto
@@ -0,0 +1,12 @@
syntax = "proto3";
ObsidianMinor marked this conversation as resolved.
Show resolved Hide resolved
ObsidianMinor marked this conversation as resolved.
Show resolved Hide resolved

option csharp_namespace = "Google.Protobuf.TestProtos.Extensions";

// 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 b and c

import "google/protobuf/descriptor.proto";

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

import "extensions_a.proto";

option csharp_namespace = "Google.Protobuf.TestProtos.Extensions";

// 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 c
ObsidianMinor marked this conversation as resolved.
Show resolved Hide resolved

message Foo {
option (opt) = "bar";
ObsidianMinor marked this conversation as resolved.
Show resolved Hide resolved
}
14 changes: 14 additions & 0 deletions csharp/protos/extensions/extensions_c.proto
@@ -0,0 +1,14 @@
syntax = "proto3";

import "extensions_a.proto";
import "extensions_b.proto";

option csharp_namespace = "Google.Protobuf.TestProtos.Extensions";

// 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) = "foo";
Foo foo = 1;
}
46 changes: 46 additions & 0 deletions csharp/src/Google.Protobuf.Test.TestProtos/ExtensionsA.cs
@@ -0,0 +1,46 @@
// <auto-generated>
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: extensions_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 Google.Protobuf.TestProtos.Extensions {

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

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

static ExtensionsAReflection() {
byte[] descriptorData = global::System.Convert.FromBase64String(
string.Concat(
"ChJleHRlbnNpb25zX2EucHJvdG8aIGdvb2dsZS9wcm90b2J1Zi9kZXNjcmlw",
"dG9yLnByb3RvOi4KA29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0",
"aW9ucxjQhgMgASgJQiiqAiVHb29nbGUuUHJvdG9idWYuVGVzdFByb3Rvcy5F",
"eHRlbnNpb25zYgZwcm90bzM="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, new pb::Extension[] { ExtensionsAExtensions.Opt }, null));
}
#endregion

}
/// <summary>Holder for extension identifiers generated from the top level of extensions_a.proto</summary>
public static partial class ExtensionsAExtensions {
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/ExtensionsB.cs
@@ -0,0 +1,145 @@
// <auto-generated>
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: extensions_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 Google.Protobuf.TestProtos.Extensions {

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

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

static ExtensionsBReflection() {
byte[] descriptorData = global::System.Convert.FromBase64String(
string.Concat(
"ChJleHRlbnNpb25zX2IucHJvdG8aEmV4dGVuc2lvbnNfYS5wcm90byIOCgNG",
"b286B4K1GANiYXJCKKoCJUdvb2dsZS5Qcm90b2J1Zi5UZXN0UHJvdG9zLkV4",
"dGVuc2lvbnNiBnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Google.Protobuf.TestProtos.Extensions.ExtensionsAReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.Extensions.Foo), global::Google.Protobuf.TestProtos.Extensions.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::Google.Protobuf.TestProtos.Extensions.ExtensionsBReflection.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