diff options
| author | zooster <r00ster91@proton.me> | 2022-08-10 18:40:18 +0200 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-08-10 16:13:56 -0400 |
| commit | 8fd20a5eb015fda4b27cef14c9e3149575861994 (patch) | |
| tree | 31a7ce1c8bc55b59184854bf9ca2142b50ce455c /lib/std | |
| parent | 40447b25e87ece9eee2d83d1c78c365ad7ab40f1 (diff) | |
| download | zig-8fd20a5eb015fda4b27cef14c9e3149575861994.tar.gz zig-8fd20a5eb015fda4b27cef14c9e3149575861994.zip | |
fix: disallow newline in char literal
Diffstat (limited to 'lib/std')
| -rw-r--r-- | lib/std/zig/tokenizer.zig | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/std/zig/tokenizer.zig b/lib/std/zig/tokenizer.zig index 8a0885ab7b..5c6d732419 100644 --- a/lib/std/zig/tokenizer.zig +++ b/lib/std/zig/tokenizer.zig @@ -797,6 +797,10 @@ pub const Tokenizer = struct { remaining_code_units = 3; state = .char_literal_unicode; }, + '\n' => { + result.tag = .invalid; + break; + }, else => { state = .char_literal_end; }, @@ -1507,6 +1511,20 @@ test "tokenizer - code point literal with hex escape" { , &.{ .invalid, .invalid }); } +test "tokenizer - newline in char literal" { + try testTokenize( + \\' + \\' + , &.{ .invalid, .invalid }); +} + +test "tokenizer - newline in string literal" { + try testTokenize( + \\" + \\" + , &.{ .invalid, .string_literal }); +} + test "tokenizer - code point literal with unicode escapes" { // Valid unicode escapes try testTokenize( |
