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

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

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

Loading…
Cancel
Save