Browse Source

Fixed bug in protected member logic.

newNRvisualizers
Mike Krüger 14 years ago
parent
commit
27a91ccd69
  1. 10
      ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs

10
ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs

@ -1776,21 +1776,15 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -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 @@ -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<ObjectCreateExpression> () == 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<IMember> ();
foreach (var member in type.GetMembers ()) {
// Console.WriteLine ("member:" + member + member.IsShadowing);

Loading…
Cancel
Save