Browse Source

fix #531 - ICSharpCode.Decompiler.ReferenceResolvingException when Searching for Instantiations

pull/478/merge
Siegfried Pammer 11 years ago
parent
commit
f479496670
  1. 6
      ICSharpCode.Decompiler/Ast/TypesHierarchyHelpers.cs
  2. 1
      ICSharpCode.Decompiler/CecilExtensions.cs

6
ICSharpCode.Decompiler/Ast/TypesHierarchyHelpers.cs

@ -32,9 +32,11 @@ namespace ICSharpCode.Decompiler.Ast @@ -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)

1
ICSharpCode.Decompiler/CecilExtensions.cs

@ -190,6 +190,7 @@ namespace ICSharpCode.Decompiler @@ -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();

Loading…
Cancel
Save