Skip to content

Commit cd43521

Browse files
committed
Add tests for carriage return handling
1 parent 89ff1be commit cd43521

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

test/compare_output.zig

+9
Original file line numberDiff line numberDiff line change
@@ -528,4 +528,13 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
528528
\\debug: free - len: 5
529529
\\
530530
);
531+
532+
cases.add("valid carriage return example", "const io = @import(\"std\").io;\r\n" ++ // Testing CRLF line endings are valid
533+
"\r\n" ++
534+
"pub \r fn main() void {\r\n" ++ // Testing isolated carriage return as whitespace is valid
535+
" const stdout = io.getStdOut().writer();\r\n" ++
536+
" stdout.print(\\A Multiline\r\n" ++ // testing CRLF at end of multiline string line is valid and normalises to \n in the output
537+
" \\String\r\n" ++
538+
" , .{}) catch unreachable;\r\n" ++
539+
"}\r\n", "A Multiline\nString");
531540
}

test/compile_errors.zig

+13-3
Original file line numberDiff line numberDiff line change
@@ -164,13 +164,23 @@ pub fn addCases(ctx: *TestContext) !void {
164164
\\ );
165165
\\}
166166
, &[_][]const u8{
167-
\\:2:5: error:
167+
\\:2:5: error:
168168
\\ hello!
169169
\\ I'm a multiline error message.
170170
\\ I hope to be very useful!
171-
\\
171+
\\
172172
\\ also I will leave this trailing newline here if you don't mind
173-
\\
173+
\\
174+
});
175+
}
176+
177+
{
178+
const case = ctx.obj("isolated carriage return in multiline string literal", .{});
179+
case.backend = .stage2;
180+
181+
case.addError("const foo = \\\\\test\r\r rogue carriage return\n;", &[_][]const u8{
182+
":1:19: error: expected ';' after declaration",
183+
":1:20: note: invalid byte: '\\r'",
174184
});
175185
}
176186

0 commit comments

Comments
 (0)