Browse Source

Fixed verbatim identifier location.

pull/32/merge
Mike Krüger 13 years ago
parent
commit
494ae64565
  1. 2
      ICSharpCode.NRefactory.CSharp/Ast/Identifier.cs
  2. 12
      ICSharpCode.NRefactory.Tests/CSharp/Parser/Expression/IdentifierExpressionTests.cs

2
ICSharpCode.NRefactory.CSharp/Ast/Identifier.cs

@ -127,7 +127,7 @@ namespace ICSharpCode.NRefactory.CSharp @@ -127,7 +127,7 @@ namespace ICSharpCode.NRefactory.CSharp
if (string.IsNullOrEmpty(name))
return Identifier.Null;
if (name[0] == '@')
return new Identifier (name.Substring (1), location) { IsVerbatim = true };
return new Identifier (name.Substring (1), new TextLocation (location.Line, location.Column + 1)) { IsVerbatim = true };
else
return new Identifier (name, location);
}

12
ICSharpCode.NRefactory.Tests/CSharp/Parser/Expression/IdentifierExpressionTests.cs

@ -98,5 +98,17 @@ namespace ICSharpCode.NRefactory.CSharp.Parser.Expression @@ -98,5 +98,17 @@ namespace ICSharpCode.NRefactory.CSharp.Parser.Expression
}
}.IsMatch(ident));
}
[Test]
public void TestVerbatimIdentifier()
{
var tree = SyntaxTree.Parse ("class @foo {}");
var ident = tree.GetNodeAt<Identifier> (1, 8);
Assert.IsNotNull (ident);
Assert.IsTrue (ident.IsVerbatim);
Assert.AreEqual (new TextLocation (1, 7), ident.StartLocation);
Assert.AreEqual (new TextLocation (1, 11), ident.EndLocation);
}
}
}

Loading…
Cancel
Save