authorgravatar for r00ster91@proton.meWooster <r00ster91@proton.me> 2022-08-10 18:40:18+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-08-10 16:13:56-04:00
log8fd20a5eb015fda4b27cef14c9e3149575861994
tree31a7ce1c8bc55b59184854bf9ca2142b50ce455c
parent40447b25e87ece9eee2d83d1c78c365ad7ab40f1

fix: disallow newline in char literal


1 files changed, 18 insertions(+), 0 deletions(-)

lib/std/zig/tokenizer.zig+18
...@@ -797,6 +797,10 @@ pub const Tokenizer = struct {...@@ -797,6 +797,10 @@ pub const Tokenizer = struct {
797 remaining_code_units = 3;797 remaining_code_units = 3;
798 state = .char_literal_unicode;798 state = .char_literal_unicode;
799 },799 },
800 '\n' => {
801 result.tag = .invalid;
802 break;
803 },
800 else => {804 else => {
801 state = .char_literal_end;805 state = .char_literal_end;
802 },806 },
...@@ -1507,6 +1511,20 @@ test "tokenizer - code point literal with hex escape" {...@@ -1507,6 +1511,20 @@ test "tokenizer - code point literal with hex escape" {
1507 , &.{ .invalid, .invalid });1511 , &.{ .invalid, .invalid });
1508}1512}
15091513
1514test "tokenizer - newline in char literal" {
1515 try testTokenize(
1516 \\'
1517 \\'
1518 , &.{ .invalid, .invalid });
1519}
1520
1521test "tokenizer - newline in string literal" {
1522 try testTokenize(
1523 \\"
1524 \\"
1525 , &.{ .invalid, .string_literal });
1526}
1527
1510test "tokenizer - code point literal with unicode escapes" {1528test "tokenizer - code point literal with unicode escapes" {
1511 // Valid unicode escapes1529 // Valid unicode escapes
1512 try testTokenize(1530 try testTokenize(