Browse Source

[Resolver] Fixed resolve at location bug.

newNRvisualizers
Mike Krüger 13 years ago
parent
commit
293af2e2c9
  1. 4
      ICSharpCode.NRefactory.CSharp/Resolver/ResolveAtLocation.cs
  2. 29
      ICSharpCode.NRefactory.Tests/CSharp/Resolver/ResolveAtLocationTests.cs

4
ICSharpCode.NRefactory.CSharp/Resolver/ResolveAtLocation.cs

@ -79,11 +79,11 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver @@ -79,11 +79,11 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
}
InvocationExpression parentInvocation = null;
if (node is IdentifierExpression || node is MemberReferenceExpression || node is PointerReferenceExpression) {
if ((node is IdentifierExpression || node is MemberReferenceExpression || node is PointerReferenceExpression) && node.Role != Roles.Argument) {
// we also need to resolve the invocation
parentInvocation = node.Parent as InvocationExpression;
}
CSharpAstResolver resolver = new CSharpAstResolver(compilation, cu, parsedFile);
resolver.ApplyNavigator(new NodeListResolveVisitorNavigator(node), cancellationToken);
ResolveResult rr = resolver.Resolve(node, cancellationToken);

29
ICSharpCode.NRefactory.Tests/CSharp/Resolver/ResolveAtLocationTests.cs

@ -132,5 +132,34 @@ class A { public A() : ba$se() {} }"); @@ -132,5 +132,34 @@ class A { public A() : ba$se() {} }");
"public class A { int M(List<int> a) { return a$[1]; } }");
Assert.AreEqual(EntityType.Indexer, rr.Member.EntityType);
}
[Test]
public void TestBug5114()
{
var rr = ResolveAtLocation<MethodGroupResolveResult>(
@"using System;
namespace Bug5114
{
class Test
{
Test oLongPressRecognizer;
public void AddTarget (Action target)
{}
public void HandleLongPressGesture ()
{
}
public Test ()
{
this.oLongPressRecognizer.AddTarget (this.$HandleLongPressGesture);
}
}
}
");
Assert.AreEqual("HandleLongPressGesture", rr.MethodName);
}
}
}

Loading…
Cancel
Save