From 42f5055b47deea1d85d9d547a92db427165b07be Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Fri, 14 Sep 2012 23:35:58 +0200 Subject: [PATCH] Fix potential NullReferenceException in GetAccessibleMembers() if GetDefinition() returns null --- ICSharpCode.NRefactory.CSharp/Resolver/MemberLookup.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ICSharpCode.NRefactory.CSharp/Resolver/MemberLookup.cs b/ICSharpCode.NRefactory.CSharp/Resolver/MemberLookup.cs index c490f9b72b..ead362d155 100644 --- a/ICSharpCode.NRefactory.CSharp/Resolver/MemberLookup.cs +++ b/ICSharpCode.NRefactory.CSharp/Resolver/MemberLookup.cs @@ -167,8 +167,11 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver List entities = new List(); entities.AddRange(type.GetMembers(options: GetMemberOptions.IgnoreInheritedMembers)); - if (!targetIsTypeParameter) - entities.AddRange(type.GetNestedTypes(options: GetMemberOptions.IgnoreInheritedMembers | GetMemberOptions.ReturnMemberDefinitions).Select(t => t.GetDefinition())); + if (!targetIsTypeParameter) { + var nestedTypes = type.GetNestedTypes(options: GetMemberOptions.IgnoreInheritedMembers | GetMemberOptions.ReturnMemberDefinitions); + // GetDefinition() might return null if some IType has a strange implementation of GetNestedTypes. + entities.AddRange(nestedTypes.Select(t => t.GetDefinition()).Where(td => td != null)); + } foreach (var entityGroup in entities.GroupBy(e => e.Name)) {