diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-tokenizer.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-tokenizer.cs index 6e4dce7a9d..cfb3d5b5ec 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-tokenizer.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-tokenizer.cs @@ -1789,7 +1789,7 @@ namespace Mono.CSharp if (peek_char () == '\n') { putback_char = -1; } - + x = '\n'; advance_line (); } else if (x == '\n') { @@ -1800,6 +1800,26 @@ namespace Mono.CSharp return x; } + int get_char_withwithoutskippingwindowseol () + { + int x; + if (putback_char != -1) { + x = putback_char; + putback_char = -1; + } else { + x = reader.Read (); + } + + if (x == '\r') { + + } else if (x == '\n') { + advance_line (); + } else { + col++; + } + return x; + } + void advance_line () { line++; @@ -2887,7 +2907,7 @@ namespace Mono.CSharp #endif while (true){ - c = get_char (); + c = get_char_withwithoutskippingwindowseol (); if (c == '"') { if (quoted && peek_char () == '"') { if (pos == value_builder.Length) diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Parser/Expression/PrimitiveExpressionTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Parser/Expression/PrimitiveExpressionTests.cs index e9583cd93a..d6667e53a7 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Parser/Expression/PrimitiveExpressionTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Parser/Expression/PrimitiveExpressionTests.cs @@ -245,7 +245,6 @@ namespace ICSharpCode.NRefactory.CSharp.Parser.Expression } [Test] - [Ignore("Mono parser crash")] public void LargeVerbatimString() { StringBuilder b = new StringBuilder();