master
1const expect = @import("std").testing.expect;
2const builtin = @import("builtin");
3
4const Foo = struct {
5 a: void,
6 b: i32,
7 c: void,
8};
9
10test "compare void with void compile time known" {
11 comptime {
12 const foo = Foo{
13 .a = {},
14 .b = 1,
15 .c = {},
16 };
17 try expect(foo.a == {});
18 }
19}
20
21test "iterate over a void slice" {
22 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
24 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
25
26 var j: usize = 0;
27 for (times(10), 0..) |_, i| {
28 try expect(i == j);
29 j += 1;
30 }
31}
32
33fn times(n: usize) []const void {
34 return @as([*]void, undefined)[0..n];
35}
36
37test "void optional" {
38 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
39 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
40
41 var x: ?void = {};
42 _ = &x;
43 try expect(x != null);
44}
45
46test "void array as a local variable initializer" {
47 var x = [_]void{{}} ** 1004;
48 _ = &x[0];
49 _ = x[0];
50}
51
52const void_constant = {};
53test "reference to void constants" {
54 var a = void_constant;
55 _ = &a;
56}