From d5ead1600050d116d730c5a673e99d5c47576525 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Thu, 12 Jan 2012 10:10:22 +0100 Subject: [PATCH] Fixed unit tests with leading dots & integer at eol. --- ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-tokenizer.cs | 8 +++++--- ICSharpCode.NRefactory.CSharp/Parser/mcs/support.cs | 7 ++++++- .../CSharp/Parser/Expression/PrimitiveExpressionTests.cs | 3 --- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-tokenizer.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-tokenizer.cs index 2ee2e16b74..d9c679406b 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-tokenizer.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-tokenizer.cs @@ -1514,6 +1514,7 @@ namespace Mono.CSharp #endif number_pos = 0; var loc = Location; + bool hasLeadingDot = c == '.'; if (c >= '0' && c <= '9'){ if (c == '0'){ @@ -1545,7 +1546,6 @@ namespace Mono.CSharp putback ('.'); number_pos--; val = res = adjust_int (-1, loc); - #if FULL_AST res.ParsedValue = reader.ReadChars (read_start, reader.Position - 1); #endif @@ -1595,9 +1595,11 @@ namespace Mono.CSharp } val = res; - #if FULL_AST - res.ParsedValue = reader.ReadChars (read_start, reader.Position - (type == TypeCode.Empty ? 1 : 0)); + var endPos = reader.Position - (type == TypeCode.Empty ? 1 : 0); + if (reader.GetChar (endPos - 1) == '\r') + endPos--; + res.ParsedValue = reader.ReadChars (hasLeadingDot ? read_start - 1 : read_start, endPos); #endif return Token.LITERAL; diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/support.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/support.cs index 3a518a4fed..1c30ee1828 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/support.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/support.cs @@ -238,7 +238,12 @@ namespace Mono.CSharp { return pos < char_count; } - + + public char GetChar (int position) + { + return buffer[position]; + } + public char[] ReadChars (int fromPosition, int toPosition) { char[] chars = new char[toPosition - fromPosition]; diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Parser/Expression/PrimitiveExpressionTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Parser/Expression/PrimitiveExpressionTests.cs index 1738689bfd..85c8834211 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Parser/Expression/PrimitiveExpressionTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Parser/Expression/PrimitiveExpressionTests.cs @@ -49,14 +49,12 @@ namespace ICSharpCode.NRefactory.CSharp.Parser.Expression Assert.AreEqual(code, pe.LiteralValue); } - [Ignore("Fixme!")] [Test] public void DoubleWithLeadingDot() { CheckLiteral(".5e-06", .5e-06); } - [Ignore("Fixme!")] [Test] public void FloatWithLeadingDot() { @@ -228,7 +226,6 @@ namespace ICSharpCode.NRefactory.CSharp.Parser.Expression CheckLiteral(@"'\U00000041'", '\U00000041'); } - [Ignore("Fixme!")] [Test] public void TestPositionOfIntegerAtEndOfLine() {