diff --git a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs index f61098ba13..78cadb8dff 100644 --- a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs +++ b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs @@ -1776,21 +1776,15 @@ namespace ICSharpCode.NRefactory.CSharp.Completion IType type = resolveResult.Type; var typeDef = resolveResult.Type.GetDefinition (); - var lookup = new MemberLookup (ctx.CurrentTypeDefinition, Compilation.MainAssembly); var result = new CompletionDataWrapper (this); - bool isProtectedAllowed = false; bool includeStaticMembers = false; if (resolveResult is LocalResolveResult) { - isProtectedAllowed = currentType != null && typeDef != null ? typeDef.GetAllBaseTypeDefinitions ().Any (bt => bt.Equals (currentType)) : false; if (resolvedNode is IdentifierExpression) { var mrr = (LocalResolveResult)resolveResult; includeStaticMembers = mrr.Variable.Name == mrr.Type.Name; } - } else { - isProtectedAllowed = currentType != null && typeDef != null ? currentType.Resolve (ctx).GetDefinition ().GetAllBaseTypeDefinitions ().Any (bt => bt.Equals (typeDef)) : false; } - if (resolveResult is TypeResolveResult && type.Kind == TypeKind.Enum) { foreach (var field in type.GetFields ()) { result.AddMember (field); @@ -1810,12 +1804,16 @@ namespace ICSharpCode.NRefactory.CSharp.Completion includeStaticMembers = true; // Console.WriteLine ("type:" + type +"/"+type.GetType ()); +// Console.WriteLine ("current:" + ctx.CurrentTypeDefinition); // Console.WriteLine ("IS PROT ALLOWED:" + isProtectedAllowed + " static: "+ includeStaticMembers); // Console.WriteLine (resolveResult); // Console.WriteLine ("node:" + resolvedNode); // Console.WriteLine (currentMember != null ? currentMember.IsStatic : "currentMember == null"); if (resolvedNode.Annotation () == null) { //tags the created expression as part of an object create expression. + var lookup = new MemberLookup (ctx.CurrentTypeDefinition, Compilation.MainAssembly); + bool isProtectedAllowed = resolveResult is ThisResolveResult ? true : lookup.IsProtectedAccessAllowed (type); + var filteredList = new List (); foreach (var member in type.GetMembers ()) { // Console.WriteLine ("member:" + member + member.IsShadowing);