From 8fd20a5eb015fda4b27cef14c9e3149575861994 Mon Sep 17 00:00:00 2001 From: zooster Date: Wed, 10 Aug 2022 18:40:18 +0200 Subject: [PATCH] fix: disallow newline in char literal --- lib/std/zig/tokenizer.zig | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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(