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();