| ... | @@ -845,7 +845,7 @@ pub const Tokenizer = struct { | ... | @@ -845,7 +845,7 @@ pub const Tokenizer = struct { |
| 845 | self.index += 1; | 845 | self.index += 1; |
| 846 | break; | 846 | break; |
| 847 | }, | 847 | }, |
| 848 | '\t' => {}, | 848 | '\t', '\r' => {}, |
| 849 | else => self.checkLiteralCharacter(), | 849 | else => self.checkLiteralCharacter(), |
| 850 | }, | 850 | }, |
| 851 | | 851 | |
| ... | @@ -1936,6 +1936,10 @@ test "tokenizer - invalid builtin identifiers" { | ... | @@ -1936,6 +1936,10 @@ test "tokenizer - invalid builtin identifiers" { |
| 1936 | try testTokenize("@0()", &.{ .invalid, .integer_literal, .l_paren, .r_paren }); | 1936 | try testTokenize("@0()", &.{ .invalid, .integer_literal, .l_paren, .r_paren }); |
| 1937 | } | 1937 | } |
| 1938 | | 1938 | |
| | 1939 | test "tokenizer - multiline string literal with a DOS-encoded CRLF line endings (issue #9257)" { |
| | 1940 | try testTokenize("\\\\foobar\r\n", &.{.multiline_string_literal_line}); |
| | 1941 | } |
| | 1942 | |
| 1939 | fn testTokenize(source: [:0]const u8, expected_tokens: []const Token.Tag) !void { | 1943 | fn testTokenize(source: [:0]const u8, expected_tokens: []const Token.Tag) !void { |
| 1940 | var tokenizer = Tokenizer.init(source); | 1944 | var tokenizer = Tokenizer.init(source); |
| 1941 | for (expected_tokens) |expected_token_id| { | 1945 | for (expected_tokens) |expected_token_id| { |