diff --git a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs index 027d7638c6..baaf143fbb 100644 --- a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs +++ b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs @@ -2399,23 +2399,28 @@ namespace ICSharpCode.NRefactory.CSharp.Completion result.AddMember(member); }*/ foreach (var member in lookup.GetAccessibleMembers (resolveResult)) { - if (member.EntityType == EntityType.Indexer || member.EntityType == EntityType.Operator || member.EntityType == EntityType.Constructor || member.EntityType == EntityType.Destructor) { continue; } if (resolvedNode is BaseReferenceExpression && member.IsAbstract) { continue; } + if (member is IType) { + if (resolveResult is TypeResolveResult || includeStaticMembers) { + result.AddType ((IType)member, false); + continue; + } + } bool memberIsStatic = member.IsStatic; if (!includeStaticMembers && memberIsStatic && !(resolveResult is TypeResolveResult)) { // Console.WriteLine ("skip static member: " + member.FullName); continue; } + var field = member as IField; if (field != null) { memberIsStatic |= field.IsConst; } - if (!memberIsStatic && skipNonStaticMembers) { continue; } @@ -2429,23 +2434,11 @@ namespace ICSharpCode.NRefactory.CSharp.Completion if (member is IMember) { result.AddMember ((IMember)member); - } else { - if (resolveResult is TypeResolveResult || includeStaticMembers) - result.AddType ((IType)member, false); } } } - - if (resolveResult is TypeResolveResult || includeStaticMembers) { - foreach (var nested in type.GetNestedTypes ()) { - if (!lookup.IsAccessible(nested.GetDefinition(), isProtectedAllowed)) - continue; - IType addType = typePred != null ? typePred(nested) : nested; - if (addType != null) - result.AddType(addType, false); - } - - } else { + + if (!(resolveResult is TypeResolveResult || includeStaticMembers)) { foreach (var meths in state.GetExtensionMethods (type)) { foreach (var m in meths) { if (!lookup.IsAccessible(m, isProtectedAllowed))