authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-06-22 16:50:55-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-06-23 10:44:46-07:00
log84fe5d46817712f9d17f5a2197de577a453b3e62
tree660b85c268ec6fb02423bd2bfc1409affc054ad5
parent3a4a710894698f589a9f1a0f6fcc7517aec532cb

fix unused variable errors in runtime safety test cases


1 files changed, 160 insertions(+), 5 deletions(-)

test/runtime_safety.zig+160-5
......@@ -4,6 +4,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
44 {
55 const check_panic_msg =
66 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
7 \\ _ = stack_trace;
78 \\ if (std.mem.eql(u8, message, "reached unreachable code")) {
89 \\ std.process.exit(126); // good
910 \\ }
......@@ -45,6 +46,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
4546 {
4647 const check_panic_msg =
4748 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
49 \\ _ = stack_trace;
4850 \\ if (std.mem.eql(u8, message, "invalid enum value")) {
4951 \\ std.process.exit(126); // good
5052 \\ }
......@@ -62,6 +64,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
6264 \\ var e: E = undefined;
6365 \\ @memset(@ptrCast([*]u8, &e), 0x55, @sizeOf(E));
6466 \\ var n = @tagName(e);
67 \\ _ = n;
6568 \\}
6669 );
6770
......@@ -76,6 +79,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
7679 \\ @memset(@ptrCast([*]u8, &u), 0x55, @sizeOf(U));
7780 \\ var t: @typeInfo(U).Union.tag_type.? = u;
7881 \\ var n = @tagName(t);
82 \\ _ = n;
7983 \\}
8084 );
8185 }
......@@ -83,6 +87,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
8387 {
8488 const check_panic_msg =
8589 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
90 \\ _ = stack_trace;
8691 \\ if (std.mem.eql(u8, message, "index out of bounds")) {
8792 \\ std.process.exit(126); // good
8893 \\ }
......@@ -96,6 +101,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
96101 \\pub fn main() void {
97102 \\ var buf = [4]u8{'a','b','c',0};
98103 \\ const slice = buf[0..4 :0];
104 \\ _ = slice;
99105 \\}
100106 );
101107 cases.addRuntimeSafety("slicing operator with sentinel",
......@@ -104,6 +110,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
104110 \\pub fn main() void {
105111 \\ var buf = [4]u8{'a','b','c',0};
106112 \\ const slice = buf[0..:0];
113 \\ _ = slice;
107114 \\}
108115 );
109116 cases.addRuntimeSafety("slicing operator with sentinel",
......@@ -112,6 +119,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
112119 \\pub fn main() void {
113120 \\ var buf_zero = [0]u8{};
114121 \\ const slice = buf_zero[0..0 :0];
122 \\ _ = slice;
115123 \\}
116124 );
117125 cases.addRuntimeSafety("slicing operator with sentinel",
......@@ -120,6 +128,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
120128 \\pub fn main() void {
121129 \\ var buf_zero = [0]u8{};
122130 \\ const slice = buf_zero[0..:0];
131 \\ _ = slice;
123132 \\}
124133 );
125134 cases.addRuntimeSafety("slicing operator with sentinel",
......@@ -129,6 +138,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
129138 \\ var buf_sentinel = [2:0]u8{'a','b'};
130139 \\ @ptrCast(*[3]u8, &buf_sentinel)[2] = 0;
131140 \\ const slice = buf_sentinel[0..3 :0];
141 \\ _ = slice;
132142 \\}
133143 );
134144 cases.addRuntimeSafety("slicing operator with sentinel",
......@@ -137,6 +147,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
137147 \\pub fn main() void {
138148 \\ var buf_slice: []const u8 = &[3]u8{ 'a', 'b', 0 };
139149 \\ const slice = buf_slice[0..3 :0];
150 \\ _ = slice;
140151 \\}
141152 );
142153 cases.addRuntimeSafety("slicing operator with sentinel",
......@@ -145,6 +156,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
145156 \\pub fn main() void {
146157 \\ var buf_slice: []const u8 = &[3]u8{ 'a', 'b', 0 };
147158 \\ const slice = buf_slice[0.. :0];
159 \\ _ = slice;
148160 \\}
149161 );
150162 }
......@@ -153,6 +165,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
153165 \\const std = @import("std");
154166 \\const V = @import("std").meta.Vector;
155167 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
168 \\ _ = stack_trace;
156169 \\ if (std.mem.eql(u8, message, "integer cast truncated bits")) {
157170 \\ std.process.exit(126); // good
158171 \\ }
......@@ -161,6 +174,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
161174 \\pub fn main() void {
162175 \\ var x = @splat(4, @as(u32, 0xdeadbeef));
163176 \\ var y = @intCast(V(4, u16), x);
177 \\ _ = y;
164178 \\}
165179 );
166180
......@@ -168,6 +182,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
168182 \\const std = @import("std");
169183 \\const V = @import("std").meta.Vector;
170184 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
185 \\ _ = stack_trace;
171186 \\ if (std.mem.eql(u8, message, "integer cast truncated bits")) {
172187 \\ std.process.exit(126); // good
173188 \\ }
......@@ -176,6 +191,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
176191 \\pub fn main() void {
177192 \\ var x = @splat(4, @as(u32, 0x80000000));
178193 \\ var y = @intCast(V(4, i32), x);
194 \\ _ = y;
179195 \\}
180196 );
181197
......@@ -183,6 +199,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
183199 \\const std = @import("std");
184200 \\const V = @import("std").meta.Vector;
185201 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
202 \\ _ = stack_trace;
186203 \\ if (std.mem.eql(u8, message, "attempt to cast negative value to unsigned integer")) {
187204 \\ std.process.exit(126); // good
188205 \\ }
......@@ -191,12 +208,14 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
191208 \\pub fn main() void {
192209 \\ var x = @splat(4, @as(i32, -2147483647));
193210 \\ var y = @intCast(V(4, u32), x);
211 \\ _ = y;
194212 \\}
195213 );
196214
197215 cases.addRuntimeSafety("shift left by huge amount",
198216 \\const std = @import("std");
199217 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
218 \\ _ = stack_trace;
200219 \\ if (std.mem.eql(u8, message, "shift amount is greater than the type size")) {
201220 \\ std.process.exit(126); // good
202221 \\ }
......@@ -206,12 +225,14 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
206225 \\ var x: u24 = 42;
207226 \\ var y: u5 = 24;
208227 \\ var z = x >> y;
228 \\ _ = z;
209229 \\}
210230 );
211231
212232 cases.addRuntimeSafety("shift right by huge amount",
213233 \\const std = @import("std");
214234 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
235 \\ _ = stack_trace;
215236 \\ if (std.mem.eql(u8, message, "shift amount is greater than the type size")) {
216237 \\ std.process.exit(126); // good
217238 \\ }
......@@ -221,12 +242,14 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
221242 \\ var x: u24 = 42;
222243 \\ var y: u5 = 24;
223244 \\ var z = x << y;
245 \\ _ = z;
224246 \\}
225247 );
226248
227249 cases.addRuntimeSafety("slice sentinel mismatch - optional pointers",
228250 \\const std = @import("std");
229251 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
252 \\ _ = stack_trace;
230253 \\ if (std.mem.eql(u8, message, "sentinel mismatch")) {
231254 \\ std.process.exit(126); // good
232255 \\ }
......@@ -235,12 +258,14 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
235258 \\pub fn main() void {
236259 \\ var buf: [4]?*i32 = undefined;
237260 \\ const slice = buf[0..3 :null];
261 \\ _ = slice;
238262 \\}
239263 );
240264
241265 cases.addRuntimeSafety("slice sentinel mismatch - floats",
242266 \\const std = @import("std");
243267 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
268 \\ _ = stack_trace;
244269 \\ if (std.mem.eql(u8, message, "sentinel mismatch")) {
245270 \\ std.process.exit(126); // good
246271 \\ }
......@@ -249,12 +274,14 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
249274 \\pub fn main() void {
250275 \\ var buf: [4]f32 = undefined;
251276 \\ const slice = buf[0..3 :1.2];
277 \\ _ = slice;
252278 \\}
253279 );
254280
255281 cases.addRuntimeSafety("pointer slice sentinel mismatch",
256282 \\const std = @import("std");
257283 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
284 \\ _ = stack_trace;
258285 \\ if (std.mem.eql(u8, message, "sentinel mismatch")) {
259286 \\ std.process.exit(126); // good
260287 \\ }
......@@ -264,12 +291,14 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
264291 \\ var buf: [4]u8 = undefined;
265292 \\ const ptr: [*]u8 = &buf;
266293 \\ const slice = ptr[0..3 :0];
294 \\ _ = slice;
267295 \\}
268296 );
269297
270298 cases.addRuntimeSafety("slice slice sentinel mismatch",
271299 \\const std = @import("std");
272300 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
301 \\ _ = stack_trace;
273302 \\ if (std.mem.eql(u8, message, "sentinel mismatch")) {
274303 \\ std.process.exit(126); // good
275304 \\ }
......@@ -279,12 +308,14 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
279308 \\ var buf: [4]u8 = undefined;
280309 \\ const slice = buf[0..];
281310 \\ const slice2 = slice[0..3 :0];
311 \\ _ = slice2;
282312 \\}
283313 );
284314
285315 cases.addRuntimeSafety("array slice sentinel mismatch",
286316 \\const std = @import("std");
287317 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
318 \\ _ = stack_trace;
288319 \\ if (std.mem.eql(u8, message, "sentinel mismatch")) {
289320 \\ std.process.exit(126); // good
290321 \\ }
......@@ -293,12 +324,14 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
293324 \\pub fn main() void {
294325 \\ var buf: [4]u8 = undefined;
295326 \\ const slice = buf[0..3 :0];
327 \\ _ = slice;
296328 \\}
297329 );
298330
299331 cases.addRuntimeSafety("intToPtr with misaligned address",
300332 \\const std = @import("std");
301333 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
334 \\ _ = stack_trace;
302335 \\ if (std.mem.eql(u8, message, "incorrect alignment")) {
303336 \\ std.os.exit(126); // good
304337 \\ }
......@@ -307,16 +340,20 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
307340 \\pub fn main() void {
308341 \\ var x: usize = 5;
309342 \\ var y = @intToPtr([*]align(4) u8, x);
343 \\ _ = y;
310344 \\}
311345 );
312346
313347 cases.addRuntimeSafety("resuming a non-suspended function which never been suspended",
314348 \\const std = @import("std");
315349 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
350 \\ _ = message;
351 \\ _ = stack_trace;
316352 \\ std.os.exit(126);
317353 \\}
318354 \\fn foo() void {
319355 \\ var f = async bar(@frame());
356 \\ _ = f;
320357 \\ std.os.exit(0);
321358 \\}
322359 \\
......@@ -335,6 +372,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
335372 cases.addRuntimeSafety("resuming a non-suspended function which has been suspended and resumed",
336373 \\const std = @import("std");
337374 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
375 \\ _ = message;
376 \\ _ = stack_trace;
338377 \\ std.os.exit(126);
339378 \\}
340379 \\fn foo() void {
......@@ -342,6 +381,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
342381 \\ global_frame = @frame();
343382 \\ }
344383 \\ var f = async bar(@frame());
384 \\ _ = f;
345385 \\ std.os.exit(0);
346386 \\}
347387 \\
......@@ -363,6 +403,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
363403 cases.addRuntimeSafety("nosuspend function call, callee suspends",
364404 \\const std = @import("std");
365405 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
406 \\ _ = message;
407 \\ _ = stack_trace;
366408 \\ std.os.exit(126);
367409 \\}
368410 \\pub fn main() void {
......@@ -379,6 +421,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
379421 cases.addRuntimeSafety("awaiting twice",
380422 \\const std = @import("std");
381423 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
424 \\ _ = message;
425 \\ _ = stack_trace;
382426 \\ std.os.exit(126);
383427 \\}
384428 \\var frame: anyframe = undefined;
......@@ -404,12 +448,15 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
404448 cases.addRuntimeSafety("@asyncCall with too small a frame",
405449 \\const std = @import("std");
406450 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
451 \\ _ = message;
452 \\ _ = stack_trace;
407453 \\ std.os.exit(126);
408454 \\}
409455 \\pub fn main() void {
410456 \\ var bytes: [1]u8 align(16) = undefined;
411457 \\ var ptr = other;
412458 \\ var frame = @asyncCall(&bytes, {}, ptr, .{});
459 \\ _ = frame;
413460 \\}
414461 \\fn other() callconv(.Async) void {
415462 \\ suspend {}
......@@ -419,6 +466,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
419466 cases.addRuntimeSafety("resuming a function which is awaiting a frame",
420467 \\const std = @import("std");
421468 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
469 \\ _ = message;
470 \\ _ = stack_trace;
422471 \\ std.os.exit(126);
423472 \\}
424473 \\pub fn main() void {
......@@ -437,6 +486,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
437486 cases.addRuntimeSafety("resuming a function which is awaiting a call",
438487 \\const std = @import("std");
439488 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
489 \\ _ = message;
490 \\ _ = stack_trace;
440491 \\ std.os.exit(126);
441492 \\}
442493 \\pub fn main() void {
......@@ -454,6 +505,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
454505 cases.addRuntimeSafety("invalid resume of async function",
455506 \\const std = @import("std");
456507 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
508 \\ _ = message;
509 \\ _ = stack_trace;
457510 \\ std.os.exit(126);
458511 \\}
459512 \\pub fn main() void {
......@@ -469,61 +522,78 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
469522 cases.addRuntimeSafety(".? operator on null pointer",
470523 \\const std = @import("std");
471524 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
525 \\ _ = message;
526 \\ _ = stack_trace;
472527 \\ std.os.exit(126);
473528 \\}
474529 \\pub fn main() void {
475530 \\ var ptr: ?*i32 = null;
476531 \\ var b = ptr.?;
532 \\ _ = b;
477533 \\}
478534 );
479535
480536 cases.addRuntimeSafety(".? operator on C pointer",
481537 \\const std = @import("std");
482538 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
539 \\ _ = message;
540 \\ _ = stack_trace;
483541 \\ std.os.exit(126);
484542 \\}
485543 \\pub fn main() void {
486544 \\ var ptr: [*c]i32 = null;
487545 \\ var b = ptr.?;
546 \\ _ = b;
488547 \\}
489548 );
490549
491550 cases.addRuntimeSafety("@intToPtr address zero to non-optional pointer",
492551 \\const std = @import("std");
493552 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
553 \\ _ = message;
554 \\ _ = stack_trace;
494555 \\ std.os.exit(126);
495556 \\}
496557 \\pub fn main() void {
497558 \\ var zero: usize = 0;
498559 \\ var b = @intToPtr(*i32, zero);
560 \\ _ = b;
499561 \\}
500562 );
501563
502564 cases.addRuntimeSafety("@intToPtr address zero to non-optional byte-aligned pointer",
503565 \\const std = @import("std");
504566 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
567 \\ _ = message;
568 \\ _ = stack_trace;
505569 \\ std.os.exit(126);
506570 \\}
507571 \\pub fn main() void {
508572 \\ var zero: usize = 0;
509573 \\ var b = @intToPtr(*u8, zero);
574 \\ _ = b;
510575 \\}
511576 );
512577
513578 cases.addRuntimeSafety("pointer casting null to non-optional pointer",
514579 \\const std = @import("std");
515580 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
581 \\ _ = message;
582 \\ _ = stack_trace;
516583 \\ std.os.exit(126);
517584 \\}
518585 \\pub fn main() void {
519586 \\ var c_ptr: [*c]u8 = 0;
520587 \\ var zig_ptr: *u8 = c_ptr;
588 \\ _ = zig_ptr;
521589 \\}
522590 );
523591
524592 cases.addRuntimeSafety("@intToEnum - no matching tag value",
525593 \\const std = @import("std");
526594 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
595 \\ _ = message;
596 \\ _ = stack_trace;
527597 \\ std.os.exit(126);
528598 \\}
529599 \\const Foo = enum {
......@@ -537,12 +607,14 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
537607 \\fn bar(a: u2) Foo {
538608 \\ return @intToEnum(Foo, a);
539609 \\}
540 \\fn baz(a: Foo) void {}
610 \\fn baz(_: Foo) void {}
541611 );
542612
543613 cases.addRuntimeSafety("@floatToInt cannot fit - negative to unsigned",
544614 \\const std = @import("std");
545615 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
616 \\ _ = message;
617 \\ _ = stack_trace;
546618 \\ std.os.exit(126);
547619 \\}
548620 \\pub fn main() void {
......@@ -551,12 +623,14 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
551623 \\fn bar(a: f32) u8 {
552624 \\ return @floatToInt(u8, a);
553625 \\}
554 \\fn baz(a: u8) void { }
626 \\fn baz(_: u8) void { }
555627 );
556628
557629 cases.addRuntimeSafety("@floatToInt cannot fit - negative out of range",
558630 \\const std = @import("std");
559631 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
632 \\ _ = message;
633 \\ _ = stack_trace;
560634 \\ std.os.exit(126);
561635 \\}
562636 \\pub fn main() void {
......@@ -565,12 +639,14 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
565639 \\fn bar(a: f32) i8 {
566640 \\ return @floatToInt(i8, a);
567641 \\}
568 \\fn baz(a: i8) void { }
642 \\fn baz(_: i8) void { }
569643 );
570644
571645 cases.addRuntimeSafety("@floatToInt cannot fit - positive out of range",
572646 \\const std = @import("std");
573647 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
648 \\ _ = message;
649 \\ _ = stack_trace;
574650 \\ std.os.exit(126);
575651 \\}
576652 \\pub fn main() void {
......@@ -579,12 +655,14 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
579655 \\fn bar(a: f32) u8 {
580656 \\ return @floatToInt(u8, a);
581657 \\}
582 \\fn baz(a: u8) void { }
658 \\fn baz(_: u8) void { }
583659 );
584660
585661 cases.addRuntimeSafety("calling panic",
586662 \\const std = @import("std");
587663 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
664 \\ _ = message;
665 \\ _ = stack_trace;
588666 \\ std.os.exit(126);
589667 \\}
590668 \\pub fn main() void {
......@@ -595,6 +673,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
595673 cases.addRuntimeSafety("out of bounds slice access",
596674 \\const std = @import("std");
597675 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
676 \\ _ = message;
677 \\ _ = stack_trace;
598678 \\ std.os.exit(126);
599679 \\}
600680 \\pub fn main() void {
......@@ -604,12 +684,14 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
604684 \\fn bar(a: []const i32) i32 {
605685 \\ return a[4];
606686 \\}
607 \\fn baz(a: i32) void { }
687 \\fn baz(_: i32) void { }
608688 );
609689
610690 cases.addRuntimeSafety("integer addition overflow",
611691 \\const std = @import("std");
612692 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
693 \\ _ = message;
694 \\ _ = stack_trace;
613695 \\ std.os.exit(126);
614696 \\}
615697 \\pub fn main() !void {
......@@ -624,12 +706,15 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
624706 cases.addRuntimeSafety("vector integer addition overflow",
625707 \\const std = @import("std");
626708 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
709 \\ _ = message;
710 \\ _ = stack_trace;
627711 \\ std.os.exit(126);
628712 \\}
629713 \\pub fn main() void {
630714 \\ var a: std.meta.Vector(4, i32) = [_]i32{ 1, 2, 2147483643, 4 };
631715 \\ var b: std.meta.Vector(4, i32) = [_]i32{ 5, 6, 7, 8 };
632716 \\ const x = add(a, b);
717 \\ _ = x;
633718 \\}
634719 \\fn add(a: std.meta.Vector(4, i32), b: std.meta.Vector(4, i32)) std.meta.Vector(4, i32) {
635720 \\ return a + b;
......@@ -639,12 +724,15 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
639724 cases.addRuntimeSafety("vector integer subtraction overflow",
640725 \\const std = @import("std");
641726 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
727 \\ _ = message;
728 \\ _ = stack_trace;
642729 \\ std.os.exit(126);
643730 \\}
644731 \\pub fn main() void {
645732 \\ var a: std.meta.Vector(4, u32) = [_]u32{ 1, 2, 8, 4 };
646733 \\ var b: std.meta.Vector(4, u32) = [_]u32{ 5, 6, 7, 8 };
647734 \\ const x = sub(b, a);
735 \\ _ = x;
648736 \\}
649737 \\fn sub(a: std.meta.Vector(4, u32), b: std.meta.Vector(4, u32)) std.meta.Vector(4, u32) {
650738 \\ return a - b;
......@@ -654,12 +742,15 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
654742 cases.addRuntimeSafety("vector integer multiplication overflow",
655743 \\const std = @import("std");
656744 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
745 \\ _ = message;
746 \\ _ = stack_trace;
657747 \\ std.os.exit(126);
658748 \\}
659749 \\pub fn main() void {
660750 \\ var a: std.meta.Vector(4, u8) = [_]u8{ 1, 2, 200, 4 };
661751 \\ var b: std.meta.Vector(4, u8) = [_]u8{ 5, 6, 2, 8 };
662752 \\ const x = mul(b, a);
753 \\ _ = x;
663754 \\}
664755 \\fn mul(a: std.meta.Vector(4, u8), b: std.meta.Vector(4, u8)) std.meta.Vector(4, u8) {
665756 \\ return a * b;
......@@ -669,11 +760,14 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
669760 cases.addRuntimeSafety("vector integer negation overflow",
670761 \\const std = @import("std");
671762 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
763 \\ _ = message;
764 \\ _ = stack_trace;
672765 \\ std.os.exit(126);
673766 \\}
674767 \\pub fn main() void {
675768 \\ var a: std.meta.Vector(4, i16) = [_]i16{ 1, -32768, 200, 4 };
676769 \\ const x = neg(a);
770 \\ _ = x;
677771 \\}
678772 \\fn neg(a: std.meta.Vector(4, i16)) std.meta.Vector(4, i16) {
679773 \\ return -a;
......@@ -683,6 +777,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
683777 cases.addRuntimeSafety("integer subtraction overflow",
684778 \\const std = @import("std");
685779 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
780 \\ _ = message;
781 \\ _ = stack_trace;
686782 \\ std.os.exit(126);
687783 \\}
688784 \\pub fn main() !void {
......@@ -697,6 +793,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
697793 cases.addRuntimeSafety("integer multiplication overflow",
698794 \\const std = @import("std");
699795 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
796 \\ _ = message;
797 \\ _ = stack_trace;
700798 \\ std.os.exit(126);
701799 \\}
702800 \\pub fn main() !void {
......@@ -711,6 +809,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
711809 cases.addRuntimeSafety("integer negation overflow",
712810 \\const std = @import("std");
713811 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
812 \\ _ = message;
813 \\ _ = stack_trace;
714814 \\ std.os.exit(126);
715815 \\}
716816 \\pub fn main() !void {
......@@ -725,6 +825,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
725825 cases.addRuntimeSafety("signed integer division overflow",
726826 \\const std = @import("std");
727827 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
828 \\ _ = message;
829 \\ _ = stack_trace;
728830 \\ std.os.exit(126);
729831 \\}
730832 \\pub fn main() !void {
......@@ -739,6 +841,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
739841 cases.addRuntimeSafety("signed integer division overflow - vectors",
740842 \\const std = @import("std");
741843 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
844 \\ _ = message;
845 \\ _ = stack_trace;
742846 \\ std.os.exit(126);
743847 \\}
744848 \\pub fn main() !void {
......@@ -755,6 +859,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
755859 cases.addRuntimeSafety("signed shift left overflow",
756860 \\const std = @import("std");
757861 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
862 \\ _ = message;
863 \\ _ = stack_trace;
758864 \\ std.os.exit(126);
759865 \\}
760866 \\pub fn main() !void {
......@@ -769,6 +875,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
769875 cases.addRuntimeSafety("unsigned shift left overflow",
770876 \\const std = @import("std");
771877 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
878 \\ _ = message;
879 \\ _ = stack_trace;
772880 \\ std.os.exit(126);
773881 \\}
774882 \\pub fn main() !void {
......@@ -783,6 +891,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
783891 cases.addRuntimeSafety("signed shift right overflow",
784892 \\const std = @import("std");
785893 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
894 \\ _ = message;
895 \\ _ = stack_trace;
786896 \\ std.os.exit(126);
787897 \\}
788898 \\pub fn main() !void {
......@@ -797,6 +907,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
797907 cases.addRuntimeSafety("unsigned shift right overflow",
798908 \\const std = @import("std");
799909 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
910 \\ _ = message;
911 \\ _ = stack_trace;
800912 \\ std.os.exit(126);
801913 \\}
802914 \\pub fn main() !void {
......@@ -811,10 +923,13 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
811923 cases.addRuntimeSafety("integer division by zero",
812924 \\const std = @import("std");
813925 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
926 \\ _ = message;
927 \\ _ = stack_trace;
814928 \\ std.os.exit(126);
815929 \\}
816930 \\pub fn main() void {
817931 \\ const x = div0(999, 0);
932 \\ _ = x;
818933 \\}
819934 \\fn div0(a: i32, b: i32) i32 {
820935 \\ return @divTrunc(a, b);
......@@ -824,12 +939,15 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
824939 cases.addRuntimeSafety("integer division by zero - vectors",
825940 \\const std = @import("std");
826941 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
942 \\ _ = message;
943 \\ _ = stack_trace;
827944 \\ std.os.exit(126);
828945 \\}
829946 \\pub fn main() void {
830947 \\ var a: std.meta.Vector(4, i32) = [4]i32{111, 222, 333, 444};
831948 \\ var b: std.meta.Vector(4, i32) = [4]i32{111, 0, 333, 444};
832949 \\ const x = div0(a, b);
950 \\ _ = x;
833951 \\}
834952 \\fn div0(a: std.meta.Vector(4, i32), b: std.meta.Vector(4, i32)) std.meta.Vector(4, i32) {
835953 \\ return @divTrunc(a, b);
......@@ -839,6 +957,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
839957 cases.addRuntimeSafety("exact division failure",
840958 \\const std = @import("std");
841959 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
960 \\ _ = message;
961 \\ _ = stack_trace;
842962 \\ std.os.exit(126);
843963 \\}
844964 \\pub fn main() !void {
......@@ -853,12 +973,15 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
853973 cases.addRuntimeSafety("exact division failure - vectors",
854974 \\const std = @import("std");
855975 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
976 \\ _ = message;
977 \\ _ = stack_trace;
856978 \\ std.os.exit(126);
857979 \\}
858980 \\pub fn main() !void {
859981 \\ var a: std.meta.Vector(4, i32) = [4]i32{111, 222, 333, 444};
860982 \\ var b: std.meta.Vector(4, i32) = [4]i32{111, 222, 333, 441};
861983 \\ const x = divExact(a, b);
984 \\ _ = x;
862985 \\}
863986 \\fn divExact(a: std.meta.Vector(4, i32), b: std.meta.Vector(4, i32)) std.meta.Vector(4, i32) {
864987 \\ return @divExact(a, b);
......@@ -868,6 +991,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
868991 cases.addRuntimeSafety("cast []u8 to bigger slice of wrong size",
869992 \\const std = @import("std");
870993 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
994 \\ _ = message;
995 \\ _ = stack_trace;
871996 \\ std.os.exit(126);
872997 \\}
873998 \\pub fn main() !void {
......@@ -882,6 +1007,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
8821007 cases.addRuntimeSafety("value does not fit in shortening cast",
8831008 \\const std = @import("std");
8841009 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
1010 \\ _ = message;
1011 \\ _ = stack_trace;
8851012 \\ std.os.exit(126);
8861013 \\}
8871014 \\pub fn main() !void {
......@@ -896,6 +1023,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
8961023 cases.addRuntimeSafety("value does not fit in shortening cast - u0",
8971024 \\const std = @import("std");
8981025 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
1026 \\ _ = message;
1027 \\ _ = stack_trace;
8991028 \\ std.os.exit(126);
9001029 \\}
9011030 \\pub fn main() !void {
......@@ -910,6 +1039,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
9101039 cases.addRuntimeSafety("signed integer not fitting in cast to unsigned integer",
9111040 \\const std = @import("std");
9121041 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
1042 \\ _ = message;
1043 \\ _ = stack_trace;
9131044 \\ std.os.exit(126);
9141045 \\}
9151046 \\pub fn main() !void {
......@@ -924,28 +1055,35 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
9241055 cases.addRuntimeSafety("signed integer not fitting in cast to unsigned integer - widening",
9251056 \\const std = @import("std");
9261057 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
1058 \\ _ = message;
1059 \\ _ = stack_trace;
9271060 \\ std.os.exit(126);
9281061 \\}
9291062 \\pub fn main() void {
9301063 \\ var value: c_short = -1;
9311064 \\ var casted = @intCast(u32, value);
1065 \\ _ = casted;
9321066 \\}
9331067 );
9341068
9351069 cases.addRuntimeSafety("unsigned integer not fitting in cast to signed integer - same bit count",
9361070 \\const std = @import("std");
9371071 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
1072 \\ _ = message;
1073 \\ _ = stack_trace;
9381074 \\ std.os.exit(126);
9391075 \\}
9401076 \\pub fn main() void {
9411077 \\ var value: u8 = 245;
9421078 \\ var casted = @intCast(i8, value);
1079 \\ _ = casted;
9431080 \\}
9441081 );
9451082
9461083 cases.addRuntimeSafety("unwrap error",
9471084 \\const std = @import("std");
9481085 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
1086 \\ _ = stack_trace;
9491087 \\ if (std.mem.eql(u8, message, "attempt to unwrap error: Whatever")) {
9501088 \\ std.os.exit(126); // good
9511089 \\ }
......@@ -962,6 +1100,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
9621100 cases.addRuntimeSafety("cast integer to global error and no code matches",
9631101 \\const std = @import("std");
9641102 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
1103 \\ _ = message;
1104 \\ _ = stack_trace;
9651105 \\ std.os.exit(126);
9661106 \\}
9671107 \\pub fn main() void {
......@@ -975,6 +1115,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
9751115 cases.addRuntimeSafety("@errSetCast error not present in destination",
9761116 \\const std = @import("std");
9771117 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
1118 \\ _ = message;
1119 \\ _ = stack_trace;
9781120 \\ std.os.exit(126);
9791121 \\}
9801122 \\const Set1 = error{A, B};
......@@ -990,6 +1132,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
9901132 cases.addRuntimeSafety("@alignCast misaligned",
9911133 \\const std = @import("std");
9921134 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
1135 \\ _ = message;
1136 \\ _ = stack_trace;
9931137 \\ std.os.exit(126);
9941138 \\}
9951139 \\pub fn main() !void {
......@@ -1007,6 +1151,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
10071151 cases.addRuntimeSafety("bad union field access",
10081152 \\const std = @import("std");
10091153 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
1154 \\ _ = message;
1155 \\ _ = stack_trace;
10101156 \\ std.os.exit(126);
10111157 \\}
10121158 \\
......@@ -1031,6 +1177,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
10311177 cases.addRuntimeSafety("@intCast to u0",
10321178 \\const std = @import("std");
10331179 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
1180 \\ _ = message;
1181 \\ _ = stack_trace;
10341182 \\ std.os.exit(126);
10351183 \\}
10361184 \\
......@@ -1040,6 +1188,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
10401188 \\
10411189 \\fn bar(one: u1, not_zero: i32) void {
10421190 \\ var x = one << @intCast(u0, not_zero);
1191 \\ _ = x;
10431192 \\}
10441193 );
10451194
......@@ -1049,6 +1198,8 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
10491198 \\const std = @import("std");
10501199 \\
10511200 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
1201 \\ _ = message;
1202 \\ _ = stack_trace;
10521203 \\ std.os.exit(126);
10531204 \\}
10541205 \\
......@@ -1058,6 +1209,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
10581209 \\ const p = nonFailing();
10591210 \\ resume p;
10601211 \\ const p2 = async printTrace(p);
1212 \\ _ = p2;
10611213 \\}
10621214 \\
10631215 \\fn nonFailing() anyframe->anyerror!void {
......@@ -1084,12 +1236,15 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
10841236 cases.addRuntimeSafety("slicing null C pointer",
10851237 \\const std = @import("std");
10861238 \\pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace) noreturn {
1239 \\ _ = message;
1240 \\ _ = stack_trace;
10871241 \\ std.os.exit(126);
10881242 \\}
10891243 \\
10901244 \\pub fn main() void {
10911245 \\ var ptr: [*c]const u32 = null;
10921246 \\ var slice = ptr[0..3];
1247 \\ _ = slice;
10931248 \\}
10941249 );
10951250}