Browse Source

fix NRE and false positives in HidesBaseMember

pull/728/head
Siegfried Pammer 9 years ago
parent
commit
39c1bbcfaf
  1. 6
      ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs

6
ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs

@ -399,9 +399,9 @@ namespace ICSharpCode.Decompiler.CSharp @@ -399,9 +399,9 @@ namespace ICSharpCode.Decompiler.CSharp
IMemberDefinition GetDefinitionFromAnnotation(EntityDeclaration member)
{
if (member is TypeDeclaration) {
return (IMemberDefinition)typeSystem.GetCecil(member.Annotation<TypeResolveResult>().Type.GetDefinition());
return (IMemberDefinition)typeSystem.GetCecil(member.Annotation<TypeResolveResult>()?.Type.GetDefinition());
} else {
return (IMemberDefinition)typeSystem.GetCecil(member.Annotation<MemberResolveResult>().Member.MemberDefinition);
return (IMemberDefinition)typeSystem.GetCecil(member.Annotation<MemberResolveResult>()?.Member.MemberDefinition);
}
}
@ -454,7 +454,9 @@ namespace ICSharpCode.Decompiler.CSharp @@ -454,7 +454,9 @@ namespace ICSharpCode.Decompiler.CSharp
static bool AnyIsHiddenBy<T>(IEnumerable<T> members, IMemberDefinition derived, Predicate<T> condition = null)
where T : IMemberDefinition
{
int numberOfGenericParameters = (derived as IGenericParameterProvider)?.GenericParameters.Count ?? 0;
return members.Any(m => m.Name == derived.Name
&& ((m as IGenericParameterProvider)?.GenericParameters.Count ?? 0) == numberOfGenericParameters
&& (condition == null || condition(m))
&& TypesHierarchyHelpers.IsVisibleFromDerived(m, derived.DeclaringType));
}

Loading…
Cancel
Save