aboutsummaryrefslogtreecommitdiff
path: root/lib/std
diff options
context:
space:
mode:
authorzooster <r00ster91@proton.me>2022-08-10 18:40:18 +0200
committerAndrew Kelley <andrew@ziglang.org>2022-08-10 16:13:56 -0400
commit8fd20a5eb015fda4b27cef14c9e3149575861994 (patch)
tree31a7ce1c8bc55b59184854bf9ca2142b50ce455c /lib/std
parent40447b25e87ece9eee2d83d1c78c365ad7ab40f1 (diff)
downloadzig-8fd20a5eb015fda4b27cef14c9e3149575861994.tar.gz
zig-8fd20a5eb015fda4b27cef14c9e3149575861994.zip
fix: disallow newline in char literal
Diffstat (limited to 'lib/std')
-rw-r--r--lib/std/zig/tokenizer.zig18
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(