master
1fn assert(ok: bool) void {
2 if (!ok) unreachable;
3}
4
5pub fn main() void {
6 var opt_val: ?i32 = 10;
7 var null_val: ?i32 = null;
8
9 var val1: i32 = opt_val.?;
10 _ = &val1;
11 const val1_1: i32 = opt_val.?;
12 var ptr_val1 = &(opt_val.?);
13 _ = &ptr_val1;
14 const ptr_val1_1 = &(opt_val.?);
15
16 var val2: i32 = null_val orelse 20;
17 const val2_2: i32 = null_val orelse 20;
18
19 var value: i32 = 20;
20 var ptr_val2 = &(null_val orelse value);
21 _ = &ptr_val2;
22
23 const val3 = opt_val orelse 30;
24 var val3_var = opt_val orelse 30;
25 _ = &val3_var;
26
27 assert(val1 == 10);
28 assert(val1_1 == 10);
29 assert(ptr_val1.* == 10);
30 assert(ptr_val1_1.* == 10);
31
32 assert(val2 == 20);
33 assert(val2_2 == 20);
34 assert(ptr_val2.* == 20);
35
36 assert(val3 == 10);
37 assert(val3_var == 10);
38
39 (null_val orelse val2) = 1234;
40 assert(val2 == 1234);
41
42 (opt_val orelse val2) = 5678;
43 assert(opt_val.? == 5678);
44}
45
46// run
47// backend=selfhosted,llvm
48// target=x86_64-linux,x86_64-macos
49//