From f4794966708f4ea2b9a8a076e2399d5082d9a211 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Wed, 25 Feb 2015 21:04:19 +0100 Subject: [PATCH] fix #531 - ICSharpCode.Decompiler.ReferenceResolvingException when Searching for Instantiations --- ICSharpCode.Decompiler/Ast/TypesHierarchyHelpers.cs | 6 ++++-- ICSharpCode.Decompiler/CecilExtensions.cs | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/ICSharpCode.Decompiler/Ast/TypesHierarchyHelpers.cs b/ICSharpCode.Decompiler/Ast/TypesHierarchyHelpers.cs index 8131eeaa0..f0f5ece53 100644 --- a/ICSharpCode.Decompiler/Ast/TypesHierarchyHelpers.cs +++ b/ICSharpCode.Decompiler/Ast/TypesHierarchyHelpers.cs @@ -32,9 +32,11 @@ namespace ICSharpCode.Decompiler.Ast if (resolveTypeArguments) return BaseTypes(derivedType).Any(t => t.Item == baseType); else { - var comparableBaseType = baseType.ResolveOrThrow(); + var comparableBaseType = baseType.Resolve(); + if (comparableBaseType == null) + return false; while (derivedType.BaseType != null) { - var resolvedBaseType = derivedType.BaseType.ResolveOrThrow(); + var resolvedBaseType = derivedType.BaseType.Resolve(); if (resolvedBaseType == null) return false; if (comparableBaseType == resolvedBaseType) diff --git a/ICSharpCode.Decompiler/CecilExtensions.cs b/ICSharpCode.Decompiler/CecilExtensions.cs index cc047e09c..c2a4c19dc 100644 --- a/ICSharpCode.Decompiler/CecilExtensions.cs +++ b/ICSharpCode.Decompiler/CecilExtensions.cs @@ -190,6 +190,7 @@ namespace ICSharpCode.Decompiler return null; } + [Obsolete("throwing exceptions is considered a bug")] public static TypeDefinition ResolveOrThrow(this TypeReference typeReference) { var resolved = typeReference.Resolve();