Browse Source

Fixed unit test.

newNRvisualizers
Mike Krüger 14 years ago
parent
commit
98ad3bacc4
  1. 65
      ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
  2. 3
      ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs

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

@ -1300,24 +1300,26 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
// Console.WriteLine ("IS PROT ALLOWED:" + isProtectedAllowed); // Console.WriteLine ("IS PROT ALLOWED:" + isProtectedAllowed);
// Console.WriteLine (resolveResult); // Console.WriteLine (resolveResult);
// Console.WriteLine (currentMember != null ? currentMember.IsStatic : "currentMember == null"); // Console.WriteLine (currentMember != null ? currentMember.IsStatic : "currentMember == null");
foreach (var member in type.GetMembers (ctx)) { if (resolvedNode.Annotation<ObjectCreateExpression> () == null) { //tags the created expression as part of an object create expression.
if (!lookup.IsAccessible (member, isProtectedAllowed)) { foreach (var member in type.GetMembers (ctx)) {
// Console.WriteLine ("skip access: " + member.FullName); if (!lookup.IsAccessible (member, isProtectedAllowed)) {
continue; // Console.WriteLine ("skip access: " + member.FullName);
} continue;
if (resolvedNode is BaseReferenceExpression && member.IsAbstract) }
continue; if (resolvedNode is BaseReferenceExpression && member.IsAbstract)
continue;
if (!includeStaticMembers && member.IsStatic && !(resolveResult is TypeResolveResult)) {
// Console.WriteLine ("skip static member: " + member.FullName); if (!includeStaticMembers && member.IsStatic && !(resolveResult is TypeResolveResult)) {
continue; // Console.WriteLine ("skip static member: " + member.FullName);
} continue;
if (!member.IsStatic && (resolveResult is TypeResolveResult)) { }
// Console.WriteLine ("skip non static member: " + member.FullName); if (!member.IsStatic && (resolveResult is TypeResolveResult)) {
continue; // Console.WriteLine ("skip non static member: " + member.FullName);
continue;
}
// Console.WriteLine ("add : "+ member.FullName + " --- " + member.IsStatic);
result.AddMember (member);
} }
// Console.WriteLine ("add : "+ member.FullName + " --- " + member.IsStatic);
result.AddMember (member);
} }
if (resolveResult is TypeResolveResult || includeStaticMembers) { if (resolveResult is TypeResolveResult || includeStaticMembers) {
@ -1403,19 +1405,38 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
return null; return null;
} }
baseUnit = ParseStub ("a()"); baseUnit = ParseStub ("a()");
Print (baseUnit);
var memberLocation = currentMember != null ? currentMember.Region.Begin : currentType.Region.Begin; var memberLocation = currentMember != null ? currentMember.Region.Begin : currentType.Region.Begin;
var mref = baseUnit.GetNodeAt<MemberReferenceExpression> (location); var mref = baseUnit.GetNodeAt<MemberReferenceExpression> (location);
Expression expr; if (mref == null){
var invoke = baseUnit.GetNodeAt<InvocationExpression> (location);
if (invoke != null)
mref = invoke.Target as MemberReferenceExpression;
}
Expression expr = null;
if (mref != null) { if (mref != null) {
expr = mref.Target.Clone (); expr = mref.Target.Clone ();
mref.Parent.ReplaceWith (expr); mref.Parent.ReplaceWith (expr);
} else { } else {
var tref = baseUnit.GetNodeAt<TypeReferenceExpression> (location); Expression tref = baseUnit.GetNodeAt<TypeReferenceExpression> (location);
var memberType = tref != null ? tref.Type as MemberType : null; var memberType = tref != null ? ((TypeReferenceExpression)tref).Type as MemberType : null;
if (memberType == null) {
memberType = baseUnit.GetNodeAt<MemberType> (location);
if (memberType != null) {
tref = baseUnit.GetNodeAt<Expression> (location);
if (tref == null)
return null;
}
if (tref is ObjectCreateExpression) {
expr = new TypeReferenceExpression (memberType.Target.Clone ());
expr.AddAnnotation (new ObjectCreateExpression ());
}
}
if (memberType == null) if (memberType == null)
return null; return null;
expr = new TypeReferenceExpression (memberType.Target.Clone ()); if (expr == null)
expr = new TypeReferenceExpression (memberType.Target.Clone ());
tref.ReplaceWith (expr); tref.ReplaceWith (expr);
} }

3
ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs

@ -345,7 +345,8 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
var result = visitor.GetResolveResult (resolveNode); var result = visitor.GetResolveResult (resolveNode);
return Tuple.Create (result, state); return Tuple.Create (result, state);
} }
static void Print (AstNode node)
protected static void Print (AstNode node)
{ {
var v = new CSharpOutputVisitor (Console.Out, new CSharpFormattingOptions ()); var v = new CSharpOutputVisitor (Console.Out, new CSharpFormattingOptions ());
node.AcceptVisitor (v, null); node.AcceptVisitor (v, null);

Loading…
Cancel
Save