From ef539696b9540cc45a4343f0fecdb4bbcb1a8a0e Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 23 May 2020 11:39:29 +0100 Subject: Strip carriage return `\r` from raw string literals --- src/tokenizer.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/tokenizer.cpp') diff --git a/src/tokenizer.cpp b/src/tokenizer.cpp index b4c1b01a1..c9a58cee6 100644 --- a/src/tokenizer.cpp +++ b/src/tokenizer.cpp @@ -960,6 +960,7 @@ Token tokenizer_get_token(Tokenizer *t) { case '`': // Raw String Literal case '"': // String Literal { + bool has_carriage_return = false; i32 success; Rune quote = curr_rune; token.kind = Token_String; @@ -989,10 +990,13 @@ Token tokenizer_get_token(Tokenizer *t) { if (r == quote) { break; } + if (r == '\r') { + has_carriage_return = true; + } } } token.string.len = t->curr - token.string.text; - success = unquote_string(heap_allocator(), &token.string); + success = unquote_string(heap_allocator(), &token.string, 0, has_carriage_return); if (success > 0) { if (success == 2) { array_add(&t->allocated_strings, token.string); -- cgit v1.2.3