From 34932efc78ef8614e4ddd35b28857e30906c3f1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Tue, 31 Jul 2012 15:58:23 +0200 Subject: [PATCH] [Parser] Hacked work around for parser error. --- .../Parser/mcs/cs-tokenizer.cs | 24 +++++++++++++++++-- .../Expression/PrimitiveExpressionTests.cs | 1 - 2 files changed, 22 insertions(+), 3 deletions(-) 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();