Skip to content

Commit

Permalink
Use Distinct on depended extensions to filter duplicate extensions
Browse files Browse the repository at this point in the history
  • Loading branch information
ObsidianMinor committed Nov 24, 2019
1 parent a9f390f commit 3c2a32a
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions csharp/src/Google.Protobuf/Reflection/FileDescriptor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -422,7 +422,8 @@ public static FileDescriptor FromGeneratedCode(
GeneratedClrTypeInfo generatedCodeInfo)
{
ExtensionRegistry registry = new ExtensionRegistry();
AddAllExtensions(dependencies, generatedCodeInfo, registry);
registry.AddRange(GetAllExtensions(dependencies, generatedCodeInfo));

FileDescriptorProto proto;
try
{
Expand All @@ -445,9 +446,9 @@ public static FileDescriptor FromGeneratedCode(
}
}

private static void AddAllExtensions(FileDescriptor[] dependencies, GeneratedClrTypeInfo generatedInfo, ExtensionRegistry registry)
private static IEnumerable<Extension> GetAllExtensions(FileDescriptor[] dependencies, GeneratedClrTypeInfo generatedInfo)
{
registry.AddRange(dependencies.SelectMany(GetAllDependedExtensions).Concat(GetAllGeneratedExtensions(generatedInfo)).ToArray());
return dependencies.SelectMany(GetAllDependedExtensions).Distinct().Concat(GetAllGeneratedExtensions(generatedInfo));
}

private static IEnumerable<Extension> GetAllGeneratedExtensions(GeneratedClrTypeInfo generated)
Expand Down

0 comments on commit 3c2a32a

Please sign in to comment.