╭ optionals.zig ────────────────────────────────────────────────╮ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ╰───────────────────────────────────────────────────────────────╯
╭ find file ─ ─ ─ ─ ─ ─ ─ ─ ─ ─╮ ╭────╮ ╭ clone ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ╮ │ │ │http│ ssh │ │ ╰ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─╯ ╰────╯ ╰ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ╯
.. compile_errors/ safety/ README.md address_of_extern_var_as_const.zi address_space_pointer_access_chai address_spaces_pointer_access_cha address_spaces_pointer_access_cha address_spaces_pointer_access_cha ambiguous_reference.zig array_in_anon_struct.zig blocks.zig callconv_spirv.zig compile_error.zig comptime_aggregate_print.zig decl_value_arena.zig default_value_references_comptime dereferencing_though_multiple_poi disable_stack_tracing.zig error_union_variant_is_runtime_kn exit.zig export_from_body_of_coerced_fn.zi f32_passed_to_variadic_fn.zig f_segment_address_space_reading_a float_mode_optimized_reduce.zig fn_typeinfo_passed_to_comptime_fn for_loop.zig function_redeclaration.zig global_variable_redeclaration.zig hello_world.zig image_sampling_spirv.zig inherit_want_safety.zig inner_func_accessing_outer_var.zi large_add_function.zig large_slices.zig maximum_sized_integer_literal.zig nested_blocks.zig no_compile_panic_for_unchecked_ar non_leaf_functions.zig ╭─────────────────────────────────╮ │optionals.zig │ ╰─────────────────────────────────╯ passing_u0_to_function.zig pointer_keeps_address_space.zig pointer_keeps_address_space_when_ pointer_to_explicit_generic_addre recursive_fibonacci.zig rem.zig returning_undefined_sentinel_term returns_in_try.zig runtime_bitwise_and.zig runtime_bitwise_or.zig save_function_return_values_in_ca sentinel_references_comptime_var. setting_an_address_space_on_a_loc simple_addition_and_subtraction.z simple_if_statement.zig spirv_mergable_pointers.zig storage_buffer_opengl.zig tail_call_noreturn.zig taking_pointer_of_global_tagged_u try_in_comptime_in_struct_in_test type_names.zig union_unresolved_layout.zig unused_vars.zig while_loops.zig
1 fn assert(ok: bool) void { 2 if (!ok) unreachable; 3 } 4 5 pub 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 // 50