authorgravatar for yujiri@disroot.orgyujiri8 <yujiri@disroot.org> 2022-12-16 22:24:58+00:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2022-12-17 00:24:58+02:00
log68d2f68ed823984a59724e256e78c5654d55b088
treebc407334939073aaa1a7b095314fcbe458c76356
parent8da9cc85af8d8f587b12e2d1ee275f50bf83b224
signaturebadge-question-mark Signed by PGP key 4AEE18F83AFDEB23

zig fmt: fix extra whitespace with multiline strings

Fixes #13937

4 files changed, 107 insertions(+), 72 deletions(-)

lib/std/zig/parser_test.zig+29
...@@ -5500,6 +5500,35 @@ test "zig fmt: canonicalize symbols (keywords)" {...@@ -5500,6 +5500,35 @@ test "zig fmt: canonicalize symbols (keywords)" {
5500 );5500 );
5501}5501}
55025502
5503test "zig fmt: no space before newline before multiline string" {
5504 try testCanonical(
5505 \\const S = struct {
5506 \\ text: []const u8,
5507 \\ comment: []const u8,
5508 \\};
5509 \\
5510 \\test {
5511 \\ const s1 = .{
5512 \\ .text =
5513 \\ \\hello
5514 \\ \\world
5515 \\ ,
5516 \\ .comment = "test",
5517 \\ };
5518 \\ _ = s1;
5519 \\ const s2 = .{
5520 \\ .comment = "test",
5521 \\ .text =
5522 \\ \\hello
5523 \\ \\world
5524 \\ ,
5525 \\ };
5526 \\ _ = s2;
5527 \\}
5528 \\
5529 );
5530}
5531
5503// Normalize \xNN and \u{NN} escapes and unicode inside @"" escapes.5532// Normalize \xNN and \u{NN} escapes and unicode inside @"" escapes.
5504test "zig fmt: canonicalize symbols (character escapes)" {5533test "zig fmt: canonicalize symbols (character escapes)" {
5505 try testTransform(5534 try testTransform(
lib/std/zig/render.zig+8-2
...@@ -1675,7 +1675,12 @@ fn renderStructInit(...@@ -1675,7 +1675,12 @@ fn renderStructInit(
16751675
1676 try renderToken(ais, tree, struct_init.ast.lbrace + 1, .none); // .1676 try renderToken(ais, tree, struct_init.ast.lbrace + 1, .none); // .
1677 try renderIdentifier(ais, tree, struct_init.ast.lbrace + 2, .space, .eagerly_unquote); // name1677 try renderIdentifier(ais, tree, struct_init.ast.lbrace + 2, .space, .eagerly_unquote); // name
1678 try renderToken(ais, tree, struct_init.ast.lbrace + 3, .space); // =1678 // Don't output a space after the = if expression is a multiline string,
1679 // since then it will start on the next line.
1680 const nodes = tree.nodes.items(.tag);
1681 const expr = nodes[struct_init.ast.fields[0]];
1682 var space_after_equal: Space = if (expr == .multiline_string_literal) .none else .space;
1683 try renderToken(ais, tree, struct_init.ast.lbrace + 3, space_after_equal); // =
1679 try renderExpression(gpa, ais, tree, struct_init.ast.fields[0], .comma);1684 try renderExpression(gpa, ais, tree, struct_init.ast.fields[0], .comma);
16801685
1681 for (struct_init.ast.fields[1..]) |field_init| {1686 for (struct_init.ast.fields[1..]) |field_init| {
...@@ -1683,7 +1688,8 @@ fn renderStructInit(...@@ -1683,7 +1688,8 @@ fn renderStructInit(
1683 try renderExtraNewlineToken(ais, tree, init_token - 3);1688 try renderExtraNewlineToken(ais, tree, init_token - 3);
1684 try renderToken(ais, tree, init_token - 3, .none); // .1689 try renderToken(ais, tree, init_token - 3, .none); // .
1685 try renderIdentifier(ais, tree, init_token - 2, .space, .eagerly_unquote); // name1690 try renderIdentifier(ais, tree, init_token - 2, .space, .eagerly_unquote); // name
1686 try renderToken(ais, tree, init_token - 1, .space); // =1691 space_after_equal = if (nodes[field_init] == .multiline_string_literal) .none else .space;
1692 try renderToken(ais, tree, init_token - 1, space_after_equal); // =
1687 try renderExpression(gpa, ais, tree, field_init, .comma);1693 try renderExpression(gpa, ais, tree, field_init, .comma);
1688 }1694 }
16891695
src/codegen/llvm.zig+3-3
...@@ -9948,7 +9948,7 @@ pub const FuncGen = struct {...@@ -9948,7 +9948,7 @@ pub const FuncGen = struct {
9948 constraints: [:0]const u8,9948 constraints: [:0]const u8,
9949 } = switch (target.cpu.arch) {9949 } = switch (target.cpu.arch) {
9950 .x86 => .{9950 .x86 => .{
9951 .template = 9951 .template =
9952 \\roll $$3, %edi ; roll $$13, %edi9952 \\roll $$3, %edi ; roll $$13, %edi
9953 \\roll $$61, %edi ; roll $$51, %edi9953 \\roll $$61, %edi ; roll $$51, %edi
9954 \\xchgl %ebx,%ebx9954 \\xchgl %ebx,%ebx
...@@ -9956,7 +9956,7 @@ pub const FuncGen = struct {...@@ -9956,7 +9956,7 @@ pub const FuncGen = struct {
9956 .constraints = "={edx},{eax},0,~{cc},~{memory}",9956 .constraints = "={edx},{eax},0,~{cc},~{memory}",
9957 },9957 },
9958 .x86_64 => .{9958 .x86_64 => .{
9959 .template = 9959 .template =
9960 \\rolq $$3, %rdi ; rolq $$13, %rdi9960 \\rolq $$3, %rdi ; rolq $$13, %rdi
9961 \\rolq $$61, %rdi ; rolq $$51, %rdi9961 \\rolq $$61, %rdi ; rolq $$51, %rdi
9962 \\xchgq %rbx,%rbx9962 \\xchgq %rbx,%rbx
...@@ -9964,7 +9964,7 @@ pub const FuncGen = struct {...@@ -9964,7 +9964,7 @@ pub const FuncGen = struct {
9964 .constraints = "={rdx},{rax},0,~{cc},~{memory}",9964 .constraints = "={rdx},{rax},0,~{cc},~{memory}",
9965 },9965 },
9966 .aarch64, .aarch64_32, .aarch64_be => .{9966 .aarch64, .aarch64_32, .aarch64_be => .{
9967 .template = 9967 .template =
9968 \\ror x12, x12, #3 ; ror x12, x12, #139968 \\ror x12, x12, #3 ; ror x12, x12, #13
9969 \\ror x12, x12, #51 ; ror x12, x12, #619969 \\ror x12, x12, #51 ; ror x12, x12, #61
9970 \\orr x10, x10, x109970 \\orr x10, x10, x10
test/stack_traces.zig+67-67
...@@ -5,13 +5,13 @@ const tests = @import("tests.zig");...@@ -5,13 +5,13 @@ const tests = @import("tests.zig");
5pub fn addCases(cases: *tests.StackTracesContext) void {5pub fn addCases(cases: *tests.StackTracesContext) void {
6 cases.addCase(.{6 cases.addCase(.{
7 .name = "return",7 .name = "return",
8 .source = 8 .source =
9 \\pub fn main() !void {9 \\pub fn main() !void {
10 \\ return error.TheSkyIsFalling;10 \\ return error.TheSkyIsFalling;
11 \\}11 \\}
12 ,12 ,
13 .Debug = .{13 .Debug = .{
14 .expect = 14 .expect =
15 \\error: TheSkyIsFalling15 \\error: TheSkyIsFalling
16 \\source.zig:2:5: [address] in main (test)16 \\source.zig:2:5: [address] in main (test)
17 \\ return error.TheSkyIsFalling;17 \\ return error.TheSkyIsFalling;
...@@ -24,7 +24,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -24,7 +24,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
24 .windows, // TODO24 .windows, // TODO
25 .linux, // defeated by aggressive inlining25 .linux, // defeated by aggressive inlining
26 },26 },
27 .expect = 27 .expect =
28 \\error: TheSkyIsFalling28 \\error: TheSkyIsFalling
29 \\source.zig:2:5: [address] in [function]29 \\source.zig:2:5: [address] in [function]
30 \\ return error.TheSkyIsFalling;30 \\ return error.TheSkyIsFalling;
...@@ -33,13 +33,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -33,13 +33,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
33 ,33 ,
34 },34 },
35 .ReleaseFast = .{35 .ReleaseFast = .{
36 .expect = 36 .expect =
37 \\error: TheSkyIsFalling37 \\error: TheSkyIsFalling
38 \\38 \\
39 ,39 ,
40 },40 },
41 .ReleaseSmall = .{41 .ReleaseSmall = .{
42 .expect = 42 .expect =
43 \\error: TheSkyIsFalling43 \\error: TheSkyIsFalling
44 \\44 \\
45 ,45 ,
...@@ -48,7 +48,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -48,7 +48,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
4848
49 cases.addCase(.{49 cases.addCase(.{
50 .name = "try return",50 .name = "try return",
51 .source = 51 .source =
52 \\fn foo() !void {52 \\fn foo() !void {
53 \\ return error.TheSkyIsFalling;53 \\ return error.TheSkyIsFalling;
54 \\}54 \\}
...@@ -58,7 +58,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -58,7 +58,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
58 \\}58 \\}
59 ,59 ,
60 .Debug = .{60 .Debug = .{
61 .expect = 61 .expect =
62 \\error: TheSkyIsFalling62 \\error: TheSkyIsFalling
63 \\source.zig:2:5: [address] in foo (test)63 \\source.zig:2:5: [address] in foo (test)
64 \\ return error.TheSkyIsFalling;64 \\ return error.TheSkyIsFalling;
...@@ -73,7 +73,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -73,7 +73,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
73 .exclude_os = .{73 .exclude_os = .{
74 .windows, // TODO74 .windows, // TODO
75 },75 },
76 .expect = 76 .expect =
77 \\error: TheSkyIsFalling77 \\error: TheSkyIsFalling
78 \\source.zig:2:5: [address] in [function]78 \\source.zig:2:5: [address] in [function]
79 \\ return error.TheSkyIsFalling;79 \\ return error.TheSkyIsFalling;
...@@ -85,13 +85,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -85,13 +85,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
85 ,85 ,
86 },86 },
87 .ReleaseFast = .{87 .ReleaseFast = .{
88 .expect = 88 .expect =
89 \\error: TheSkyIsFalling89 \\error: TheSkyIsFalling
90 \\90 \\
91 ,91 ,
92 },92 },
93 .ReleaseSmall = .{93 .ReleaseSmall = .{
94 .expect = 94 .expect =
95 \\error: TheSkyIsFalling95 \\error: TheSkyIsFalling
96 \\96 \\
97 ,97 ,
...@@ -99,7 +99,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -99,7 +99,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
99 });99 });
100 cases.addCase(.{100 cases.addCase(.{
101 .name = "non-error return pops error trace",101 .name = "non-error return pops error trace",
102 .source = 102 .source =
103 \\fn bar() !void {103 \\fn bar() !void {
104 \\ return error.UhOh;104 \\ return error.UhOh;
105 \\}105 \\}
...@@ -116,7 +116,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -116,7 +116,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
116 \\}116 \\}
117 ,117 ,
118 .Debug = .{118 .Debug = .{
119 .expect = 119 .expect =
120 \\error: UnrelatedError120 \\error: UnrelatedError
121 \\source.zig:13:5: [address] in main (test)121 \\source.zig:13:5: [address] in main (test)
122 \\ return error.UnrelatedError;122 \\ return error.UnrelatedError;
...@@ -129,7 +129,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -129,7 +129,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
129 .windows, // TODO129 .windows, // TODO
130 .linux, // defeated by aggressive inlining130 .linux, // defeated by aggressive inlining
131 },131 },
132 .expect = 132 .expect =
133 \\error: UnrelatedError133 \\error: UnrelatedError
134 \\source.zig:13:5: [address] in [function]134 \\source.zig:13:5: [address] in [function]
135 \\ return error.UnrelatedError;135 \\ return error.UnrelatedError;
...@@ -138,13 +138,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -138,13 +138,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
138 ,138 ,
139 },139 },
140 .ReleaseFast = .{140 .ReleaseFast = .{
141 .expect = 141 .expect =
142 \\error: UnrelatedError142 \\error: UnrelatedError
143 \\143 \\
144 ,144 ,
145 },145 },
146 .ReleaseSmall = .{146 .ReleaseSmall = .{
147 .expect = 147 .expect =
148 \\error: UnrelatedError148 \\error: UnrelatedError
149 \\149 \\
150 ,150 ,
...@@ -153,7 +153,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -153,7 +153,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
153153
154 cases.addCase(.{154 cases.addCase(.{
155 .name = "continue in while loop",155 .name = "continue in while loop",
156 .source = 156 .source =
157 \\fn foo() !void {157 \\fn foo() !void {
158 \\ return error.UhOh;158 \\ return error.UhOh;
159 \\}159 \\}
...@@ -167,7 +167,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -167,7 +167,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
167 \\}167 \\}
168 ,168 ,
169 .Debug = .{169 .Debug = .{
170 .expect = 170 .expect =
171 \\error: UnrelatedError171 \\error: UnrelatedError
172 \\source.zig:10:5: [address] in main (test)172 \\source.zig:10:5: [address] in main (test)
173 \\ return error.UnrelatedError;173 \\ return error.UnrelatedError;
...@@ -180,7 +180,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -180,7 +180,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
180 .windows, // TODO180 .windows, // TODO
181 .linux, // defeated by aggressive inlining181 .linux, // defeated by aggressive inlining
182 },182 },
183 .expect = 183 .expect =
184 \\error: UnrelatedError184 \\error: UnrelatedError
185 \\source.zig:10:5: [address] in [function]185 \\source.zig:10:5: [address] in [function]
186 \\ return error.UnrelatedError;186 \\ return error.UnrelatedError;
...@@ -189,13 +189,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -189,13 +189,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
189 ,189 ,
190 },190 },
191 .ReleaseFast = .{191 .ReleaseFast = .{
192 .expect = 192 .expect =
193 \\error: UnrelatedError193 \\error: UnrelatedError
194 \\194 \\
195 ,195 ,
196 },196 },
197 .ReleaseSmall = .{197 .ReleaseSmall = .{
198 .expect = 198 .expect =
199 \\error: UnrelatedError199 \\error: UnrelatedError
200 \\200 \\
201 ,201 ,
...@@ -204,7 +204,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -204,7 +204,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
204204
205 cases.addCase(.{205 cases.addCase(.{
206 .name = "try return + handled catch/if-else",206 .name = "try return + handled catch/if-else",
207 .source = 207 .source =
208 \\fn foo() !void {208 \\fn foo() !void {
209 \\ return error.TheSkyIsFalling;209 \\ return error.TheSkyIsFalling;
210 \\}210 \\}
...@@ -218,7 +218,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -218,7 +218,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
218 \\}218 \\}
219 ,219 ,
220 .Debug = .{220 .Debug = .{
221 .expect = 221 .expect =
222 \\error: TheSkyIsFalling222 \\error: TheSkyIsFalling
223 \\source.zig:2:5: [address] in foo (test)223 \\source.zig:2:5: [address] in foo (test)
224 \\ return error.TheSkyIsFalling;224 \\ return error.TheSkyIsFalling;
...@@ -234,7 +234,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -234,7 +234,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
234 .windows, // TODO234 .windows, // TODO
235 .linux, // defeated by aggressive inlining235 .linux, // defeated by aggressive inlining
236 },236 },
237 .expect = 237 .expect =
238 \\error: TheSkyIsFalling238 \\error: TheSkyIsFalling
239 \\source.zig:2:5: [address] in [function]239 \\source.zig:2:5: [address] in [function]
240 \\ return error.TheSkyIsFalling;240 \\ return error.TheSkyIsFalling;
...@@ -246,13 +246,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -246,13 +246,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
246 ,246 ,
247 },247 },
248 .ReleaseFast = .{248 .ReleaseFast = .{
249 .expect = 249 .expect =
250 \\error: TheSkyIsFalling250 \\error: TheSkyIsFalling
251 \\251 \\
252 ,252 ,
253 },253 },
254 .ReleaseSmall = .{254 .ReleaseSmall = .{
255 .expect = 255 .expect =
256 \\error: TheSkyIsFalling256 \\error: TheSkyIsFalling
257 \\257 \\
258 ,258 ,
...@@ -261,7 +261,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -261,7 +261,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
261261
262 cases.addCase(.{262 cases.addCase(.{
263 .name = "break from inline loop pops error return trace",263 .name = "break from inline loop pops error return trace",
264 .source = 264 .source =
265 \\fn foo() !void { return error.FooBar; }265 \\fn foo() !void { return error.FooBar; }
266 \\266 \\
267 \\pub fn main() !void {267 \\pub fn main() !void {
...@@ -277,7 +277,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -277,7 +277,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
277 \\}277 \\}
278 ,278 ,
279 .Debug = .{279 .Debug = .{
280 .expect = 280 .expect =
281 \\error: BadTime281 \\error: BadTime
282 \\source.zig:12:5: [address] in main (test)282 \\source.zig:12:5: [address] in main (test)
283 \\ return error.BadTime;283 \\ return error.BadTime;
...@@ -290,7 +290,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -290,7 +290,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
290 .windows, // TODO290 .windows, // TODO
291 .linux, // defeated by aggressive inlining291 .linux, // defeated by aggressive inlining
292 },292 },
293 .expect = 293 .expect =
294 \\error: BadTime294 \\error: BadTime
295 \\source.zig:12:5: [address] in [function]295 \\source.zig:12:5: [address] in [function]
296 \\ return error.BadTime;296 \\ return error.BadTime;
...@@ -299,13 +299,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -299,13 +299,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
299 ,299 ,
300 },300 },
301 .ReleaseFast = .{301 .ReleaseFast = .{
302 .expect = 302 .expect =
303 \\error: BadTime303 \\error: BadTime
304 \\304 \\
305 ,305 ,
306 },306 },
307 .ReleaseSmall = .{307 .ReleaseSmall = .{
308 .expect = 308 .expect =
309 \\error: BadTime309 \\error: BadTime
310 \\310 \\
311 ,311 ,
...@@ -314,7 +314,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -314,7 +314,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
314314
315 cases.addCase(.{315 cases.addCase(.{
316 .name = "catch and re-throw error",316 .name = "catch and re-throw error",
317 .source = 317 .source =
318 \\fn foo() !void {318 \\fn foo() !void {
319 \\ return error.TheSkyIsFalling;319 \\ return error.TheSkyIsFalling;
320 \\}320 \\}
...@@ -324,7 +324,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -324,7 +324,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
324 \\}324 \\}
325 ,325 ,
326 .Debug = .{326 .Debug = .{
327 .expect = 327 .expect =
328 \\error: AndMyCarIsOutOfGas328 \\error: AndMyCarIsOutOfGas
329 \\source.zig:2:5: [address] in foo (test)329 \\source.zig:2:5: [address] in foo (test)
330 \\ return error.TheSkyIsFalling;330 \\ return error.TheSkyIsFalling;
...@@ -340,7 +340,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -340,7 +340,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
340 .windows, // TODO340 .windows, // TODO
341 .linux, // defeated by aggressive inlining341 .linux, // defeated by aggressive inlining
342 },342 },
343 .expect = 343 .expect =
344 \\error: AndMyCarIsOutOfGas344 \\error: AndMyCarIsOutOfGas
345 \\source.zig:2:5: [address] in [function]345 \\source.zig:2:5: [address] in [function]
346 \\ return error.TheSkyIsFalling;346 \\ return error.TheSkyIsFalling;
...@@ -352,13 +352,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -352,13 +352,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
352 ,352 ,
353 },353 },
354 .ReleaseFast = .{354 .ReleaseFast = .{
355 .expect = 355 .expect =
356 \\error: AndMyCarIsOutOfGas356 \\error: AndMyCarIsOutOfGas
357 \\357 \\
358 ,358 ,
359 },359 },
360 .ReleaseSmall = .{360 .ReleaseSmall = .{
361 .expect = 361 .expect =
362 \\error: AndMyCarIsOutOfGas362 \\error: AndMyCarIsOutOfGas
363 \\363 \\
364 ,364 ,
...@@ -367,7 +367,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -367,7 +367,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
367367
368 cases.addCase(.{368 cases.addCase(.{
369 .name = "errors stored in var do not contribute to error trace",369 .name = "errors stored in var do not contribute to error trace",
370 .source = 370 .source =
371 \\fn foo() !void {371 \\fn foo() !void {
372 \\ return error.TheSkyIsFalling;372 \\ return error.TheSkyIsFalling;
373 \\}373 \\}
...@@ -382,7 +382,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -382,7 +382,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
382 \\}382 \\}
383 ,383 ,
384 .Debug = .{384 .Debug = .{
385 .expect = 385 .expect =
386 \\error: SomethingUnrelatedWentWrong386 \\error: SomethingUnrelatedWentWrong
387 \\source.zig:11:5: [address] in main (test)387 \\source.zig:11:5: [address] in main (test)
388 \\ return error.SomethingUnrelatedWentWrong;388 \\ return error.SomethingUnrelatedWentWrong;
...@@ -395,7 +395,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -395,7 +395,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
395 .windows, // TODO395 .windows, // TODO
396 .linux, // defeated by aggressive inlining396 .linux, // defeated by aggressive inlining
397 },397 },
398 .expect = 398 .expect =
399 \\error: SomethingUnrelatedWentWrong399 \\error: SomethingUnrelatedWentWrong
400 \\source.zig:11:5: [address] in [function]400 \\source.zig:11:5: [address] in [function]
401 \\ return error.SomethingUnrelatedWentWrong;401 \\ return error.SomethingUnrelatedWentWrong;
...@@ -404,13 +404,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -404,13 +404,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
404 ,404 ,
405 },405 },
406 .ReleaseFast = .{406 .ReleaseFast = .{
407 .expect = 407 .expect =
408 \\error: SomethingUnrelatedWentWrong408 \\error: SomethingUnrelatedWentWrong
409 \\409 \\
410 ,410 ,
411 },411 },
412 .ReleaseSmall = .{412 .ReleaseSmall = .{
413 .expect = 413 .expect =
414 \\error: SomethingUnrelatedWentWrong414 \\error: SomethingUnrelatedWentWrong
415 \\415 \\
416 ,416 ,
...@@ -419,7 +419,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -419,7 +419,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
419419
420 cases.addCase(.{420 cases.addCase(.{
421 .name = "error stored in const has trace preserved for duration of block",421 .name = "error stored in const has trace preserved for duration of block",
422 .source = 422 .source =
423 \\fn foo() !void { return error.TheSkyIsFalling; }423 \\fn foo() !void { return error.TheSkyIsFalling; }
424 \\fn bar() !void { return error.InternalError; }424 \\fn bar() !void { return error.InternalError; }
425 \\fn baz() !void { return error.UnexpectedReality; }425 \\fn baz() !void { return error.UnexpectedReality; }
...@@ -446,7 +446,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -446,7 +446,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
446 \\}446 \\}
447 ,447 ,
448 .Debug = .{448 .Debug = .{
449 .expect = 449 .expect =
450 \\error: StillUnresolved450 \\error: StillUnresolved
451 \\source.zig:1:18: [address] in foo (test)451 \\source.zig:1:18: [address] in foo (test)
452 \\fn foo() !void { return error.TheSkyIsFalling; }452 \\fn foo() !void { return error.TheSkyIsFalling; }
...@@ -465,7 +465,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -465,7 +465,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
465 .windows, // TODO465 .windows, // TODO
466 .linux, // defeated by aggressive inlining466 .linux, // defeated by aggressive inlining
467 },467 },
468 .expect = 468 .expect =
469 \\error: StillUnresolved469 \\error: StillUnresolved
470 \\source.zig:1:18: [address] in [function]470 \\source.zig:1:18: [address] in [function]
471 \\fn foo() !void { return error.TheSkyIsFalling; }471 \\fn foo() !void { return error.TheSkyIsFalling; }
...@@ -480,13 +480,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -480,13 +480,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
480 ,480 ,
481 },481 },
482 .ReleaseFast = .{482 .ReleaseFast = .{
483 .expect = 483 .expect =
484 \\error: StillUnresolved484 \\error: StillUnresolved
485 \\485 \\
486 ,486 ,
487 },487 },
488 .ReleaseSmall = .{488 .ReleaseSmall = .{
489 .expect = 489 .expect =
490 \\error: StillUnresolved490 \\error: StillUnresolved
491 \\491 \\
492 ,492 ,
...@@ -495,7 +495,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -495,7 +495,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
495495
496 cases.addCase(.{496 cases.addCase(.{
497 .name = "error passed to function has its trace preserved for duration of the call",497 .name = "error passed to function has its trace preserved for duration of the call",
498 .source = 498 .source =
499 \\pub fn expectError(expected_error: anyerror, actual_error: anyerror!void) !void {499 \\pub fn expectError(expected_error: anyerror, actual_error: anyerror!void) !void {
500 \\ actual_error catch |err| {500 \\ actual_error catch |err| {
501 \\ if (err == expected_error) return {};501 \\ if (err == expected_error) return {};
...@@ -516,7 +516,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -516,7 +516,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
516 \\}516 \\}
517 ,517 ,
518 .Debug = .{518 .Debug = .{
519 .expect = 519 .expect =
520 \\error: TestExpectedError520 \\error: TestExpectedError
521 \\source.zig:9:18: [address] in foo (test)521 \\source.zig:9:18: [address] in foo (test)
522 \\fn foo() !void { return error.Foo; }522 \\fn foo() !void { return error.Foo; }
...@@ -534,7 +534,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -534,7 +534,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
534 .exclude_os = .{534 .exclude_os = .{
535 .windows, // TODO535 .windows, // TODO
536 },536 },
537 .expect = 537 .expect =
538 \\error: TestExpectedError538 \\error: TestExpectedError
539 \\source.zig:9:18: [address] in [function]539 \\source.zig:9:18: [address] in [function]
540 \\fn foo() !void { return error.Foo; }540 \\fn foo() !void { return error.Foo; }
...@@ -549,13 +549,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -549,13 +549,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
549 ,549 ,
550 },550 },
551 .ReleaseFast = .{551 .ReleaseFast = .{
552 .expect = 552 .expect =
553 \\error: TestExpectedError553 \\error: TestExpectedError
554 \\554 \\
555 ,555 ,
556 },556 },
557 .ReleaseSmall = .{557 .ReleaseSmall = .{
558 .expect = 558 .expect =
559 \\error: TestExpectedError559 \\error: TestExpectedError
560 \\560 \\
561 ,561 ,
...@@ -564,7 +564,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -564,7 +564,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
564564
565 cases.addCase(.{565 cases.addCase(.{
566 .name = "try return from within catch",566 .name = "try return from within catch",
567 .source = 567 .source =
568 \\fn foo() !void {568 \\fn foo() !void {
569 \\ return error.TheSkyIsFalling;569 \\ return error.TheSkyIsFalling;
570 \\}570 \\}
...@@ -580,7 +580,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -580,7 +580,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
580 \\}580 \\}
581 ,581 ,
582 .Debug = .{582 .Debug = .{
583 .expect = 583 .expect =
584 \\error: AndMyCarIsOutOfGas584 \\error: AndMyCarIsOutOfGas
585 \\source.zig:2:5: [address] in foo (test)585 \\source.zig:2:5: [address] in foo (test)
586 \\ return error.TheSkyIsFalling;586 \\ return error.TheSkyIsFalling;
...@@ -598,7 +598,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -598,7 +598,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
598 .exclude_os = .{598 .exclude_os = .{
599 .windows, // TODO599 .windows, // TODO
600 },600 },
601 .expect = 601 .expect =
602 \\error: AndMyCarIsOutOfGas602 \\error: AndMyCarIsOutOfGas
603 \\source.zig:2:5: [address] in [function]603 \\source.zig:2:5: [address] in [function]
604 \\ return error.TheSkyIsFalling;604 \\ return error.TheSkyIsFalling;
...@@ -613,13 +613,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -613,13 +613,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
613 ,613 ,
614 },614 },
615 .ReleaseFast = .{615 .ReleaseFast = .{
616 .expect = 616 .expect =
617 \\error: AndMyCarIsOutOfGas617 \\error: AndMyCarIsOutOfGas
618 \\618 \\
619 ,619 ,
620 },620 },
621 .ReleaseSmall = .{621 .ReleaseSmall = .{
622 .expect = 622 .expect =
623 \\error: AndMyCarIsOutOfGas623 \\error: AndMyCarIsOutOfGas
624 \\624 \\
625 ,625 ,
...@@ -628,7 +628,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -628,7 +628,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
628628
629 cases.addCase(.{629 cases.addCase(.{
630 .name = "try return from within if-else",630 .name = "try return from within if-else",
631 .source = 631 .source =
632 \\fn foo() !void {632 \\fn foo() !void {
633 \\ return error.TheSkyIsFalling;633 \\ return error.TheSkyIsFalling;
634 \\}634 \\}
...@@ -644,7 +644,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -644,7 +644,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
644 \\}644 \\}
645 ,645 ,
646 .Debug = .{646 .Debug = .{
647 .expect = 647 .expect =
648 \\error: AndMyCarIsOutOfGas648 \\error: AndMyCarIsOutOfGas
649 \\source.zig:2:5: [address] in foo (test)649 \\source.zig:2:5: [address] in foo (test)
650 \\ return error.TheSkyIsFalling;650 \\ return error.TheSkyIsFalling;
...@@ -662,7 +662,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -662,7 +662,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
662 .exclude_os = .{662 .exclude_os = .{
663 .windows, // TODO663 .windows, // TODO
664 },664 },
665 .expect = 665 .expect =
666 \\error: AndMyCarIsOutOfGas666 \\error: AndMyCarIsOutOfGas
667 \\source.zig:2:5: [address] in [function]667 \\source.zig:2:5: [address] in [function]
668 \\ return error.TheSkyIsFalling;668 \\ return error.TheSkyIsFalling;
...@@ -677,13 +677,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -677,13 +677,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
677 ,677 ,
678 },678 },
679 .ReleaseFast = .{679 .ReleaseFast = .{
680 .expect = 680 .expect =
681 \\error: AndMyCarIsOutOfGas681 \\error: AndMyCarIsOutOfGas
682 \\682 \\
683 ,683 ,
684 },684 },
685 .ReleaseSmall = .{685 .ReleaseSmall = .{
686 .expect = 686 .expect =
687 \\error: AndMyCarIsOutOfGas687 \\error: AndMyCarIsOutOfGas
688 \\688 \\
689 ,689 ,
...@@ -692,7 +692,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -692,7 +692,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
692692
693 cases.addCase(.{693 cases.addCase(.{
694 .name = "try try return return",694 .name = "try try return return",
695 .source = 695 .source =
696 \\fn foo() !void {696 \\fn foo() !void {
697 \\ try bar();697 \\ try bar();
698 \\}698 \\}
...@@ -710,7 +710,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -710,7 +710,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
710 \\}710 \\}
711 ,711 ,
712 .Debug = .{712 .Debug = .{
713 .expect = 713 .expect =
714 \\error: TheSkyIsFalling714 \\error: TheSkyIsFalling
715 \\source.zig:10:5: [address] in make_error (test)715 \\source.zig:10:5: [address] in make_error (test)
716 \\ return error.TheSkyIsFalling;716 \\ return error.TheSkyIsFalling;
...@@ -731,7 +731,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -731,7 +731,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
731 .exclude_os = .{731 .exclude_os = .{
732 .windows, // TODO732 .windows, // TODO
733 },733 },
734 .expect = 734 .expect =
735 \\error: TheSkyIsFalling735 \\error: TheSkyIsFalling
736 \\source.zig:10:5: [address] in [function]736 \\source.zig:10:5: [address] in [function]
737 \\ return error.TheSkyIsFalling;737 \\ return error.TheSkyIsFalling;
...@@ -749,13 +749,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -749,13 +749,13 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
749 ,749 ,
750 },750 },
751 .ReleaseFast = .{751 .ReleaseFast = .{
752 .expect = 752 .expect =
753 \\error: TheSkyIsFalling753 \\error: TheSkyIsFalling
754 \\754 \\
755 ,755 ,
756 },756 },
757 .ReleaseSmall = .{757 .ReleaseSmall = .{
758 .expect = 758 .expect =
759 \\error: TheSkyIsFalling759 \\error: TheSkyIsFalling
760 \\760 \\
761 ,761 ,
...@@ -768,7 +768,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -768,7 +768,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
768 .windows, // TODO intermittent failures768 .windows, // TODO intermittent failures
769 },769 },
770 .name = "dumpCurrentStackTrace",770 .name = "dumpCurrentStackTrace",
771 .source = 771 .source =
772 \\const std = @import("std");772 \\const std = @import("std");
773 \\773 \\
774 \\fn bar() void {774 \\fn bar() void {
...@@ -783,7 +783,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {...@@ -783,7 +783,7 @@ pub fn addCases(cases: *tests.StackTracesContext) void {
783 \\}783 \\}
784 ,784 ,
785 .Debug = .{785 .Debug = .{
786 .expect = 786 .expect =
787 \\source.zig:7:8: [address] in foo (test)787 \\source.zig:7:8: [address] in foo (test)
788 \\ bar();788 \\ bar();
789 \\ ^789 \\ ^