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//