Browse Source

Fix #3263: Properly handle assemblies that do not provide a type system in DerivedTypesTreeNode.

pull/3265/head
Siegfried Pammer 9 months ago
parent
commit
d0d60f9a6d
  1. 13
      ILSpy/TreeNodes/DerivedTypesTreeNode.cs

13
ILSpy/TreeNodes/DerivedTypesTreeNode.cs

@ -17,7 +17,6 @@
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Threading; using System.Threading;
using ICSharpCode.Decompiler; using ICSharpCode.Decompiler;
@ -66,12 +65,16 @@ namespace ICSharpCode.ILSpy.TreeNodes
{ {
var definitionMetadata = type.ParentModule.MetadataFile.Metadata; var definitionMetadata = type.ParentModule.MetadataFile.Metadata;
var metadataToken = (SRM.TypeDefinitionHandle)type.MetadataToken; var metadataToken = (SRM.TypeDefinitionHandle)type.MetadataToken;
var assemblies = list.GetAllAssemblies().GetAwaiter().GetResult() var assemblies = list.GetAllAssemblies().GetAwaiter().GetResult();
.Select(node => node.GetMetadataFileOrNull()).Where(asm => asm != null).ToArray(); foreach (var loadedAssembly in assemblies)
foreach (var module in assemblies)
{ {
var module = loadedAssembly.GetMetadataFileOrNull();
if (module == null)
continue;
var metadata = module.Metadata; var metadata = module.Metadata;
var assembly = (MetadataModule)module.GetTypeSystemOrNull().MainModule; var assembly = module.GetTypeSystemOrNull()?.MainModule as MetadataModule;
if (assembly != null)
continue;
foreach (var h in metadata.TypeDefinitions) foreach (var h in metadata.TypeDefinitions)
{ {
cancellationToken.ThrowIfCancellationRequested(); cancellationToken.ThrowIfCancellationRequested();

Loading…
Cancel
Save