-
Notifications
You must be signed in to change notification settings - Fork 15.6k
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
jtattermusch
merged 6 commits into
protocolbuffers:master
from
ObsidianMinor:csharp/fix/6936
Dec 5, 2019
Merged
Changes from 2 commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
3c2a32a
Use Distinct on depended extensions to filter duplicate extensions
ObsidianMinor 2b0b838
Add tests
ObsidianMinor cd11d54
Improve test to make sure the extensions are actually loaded for Cust…
ObsidianMinor 145033c
Adjust based on review feedback
ObsidianMinor 34f9497
Use explicit comparer for extension identifiers
ObsidianMinor 367fd27
Rename files and revert changes to generate protos script
ObsidianMinor File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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
145
csharp/src/Google.Protobuf.Test.TestProtos/ExtensionsB.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please revert unnecessary changes.