Browse Source

Fixed resolve at location failure.

Was caused by an invalid token location.
pull/32/merge
Mike Krüger 13 years ago
parent
commit
52350b3cb0
  1. 3
      ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs
  2. 12
      ICSharpCode.NRefactory.Tests/CSharp/Resolver/ResolveAtLocationTests.cs

3
ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs

@ -213,7 +213,8 @@ namespace ICSharpCode.NRefactory.CSharp @@ -213,7 +213,8 @@ namespace ICSharpCode.NRefactory.CSharp
var memberType = new MemberType ();
memberType.AddChild (ConvertToType (ma.LeftExpression), MemberType.TargetRole);
memberType.AddChild (new CSharpTokenNode (Convert (ma.DotLocation), Roles.Dot), Roles.Dot);
if (!ma.DotLocation.IsNull)
memberType.AddChild (new CSharpTokenNode (Convert (ma.DotLocation), Roles.Dot), Roles.Dot);
memberType.MemberNameToken = Identifier.Create (ma.Name, Convert (ma.Location));

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

@ -238,5 +238,17 @@ class Test { @@ -238,5 +238,17 @@ class Test {
Assert.AreEqual("Method", rr.Member.Name);
Assert.AreEqual(0, ((IMethod)rr.Member).Parameters.Count);
}
[Test]
public void MemberTypeTarget()
{
var rr = ResolveAtLocation<TypeResolveResult>(
@"using System;
class Test {
E$nvironment.SpecialFolder folder;
}
");
Assert.AreEqual("System.Environment", rr.Type.FullName);
}
}
}

Loading…
Cancel
Save