io :: import "@std/io" process :: import "@std/process" debug :: import "@std/debug" State :: enum { idle running } Payload :: union(enum) { count i32 empty void } Pair :: struct { i32, bool } Config :: struct { enabled bool ratio f64 label []u8 state State values [2]i32 pair Pair maybe ?i32 payload Payload } Count :: distinct i32 Byte :: distinct u8 Ratio :: distinct f32 Inner :: distinct u32 Outer :: distinct Inner first Config :: Config { enabled = true, ratio = 1.5, label = "bro", state = .running, values = [20, 22], pair = Pair {7, true}, maybe = 9, payload = Payload {count = 4}, } same Config :: Config { enabled = true, ratio = 1.5, label = "bro", state = .running, values = [20, 22], pair = Pair {7, true}, maybe = 9, payload = Payload {count = 4}, } different Config :: Config { enabled = false, ratio = 2.5, label = "bro", state = .idle, values = [21, 21], pair = Pair {7, false}, maybe = null, payload = .empty, } score func($config Config) i32 { return config.values[0] } Carrier func($config Config) type { return struct { value i32 } } read_carrier func($config Config, carrier Carrier(config)) i32 { return carrier.value + config.values[0] } main func(init process.Init) i32 { if score(first) != 20 or score(same) != 20 or score(different) != 21 { return 1 } carrier Carrier(first) :: Carrier(first) {value = 22} if read_carrier(carrier) != 42 { return 2 } writer io.Writer :: io.stdout(init.io) positive f64 = 1.0 zero f64 = 0.0 infinity f64 :: positive / zero nan f64 :: zero / zero io.print(writer, "{} {} {} {} {s} {d} {b} {o} {x} {X} {c} {e} {{}} {d} {b} {} {} {e}\n", { true, -42, 1.5, State.running, "bro", 2.5, 10, 10, 255, 255, u8('A'), 1.5, minval!(i64), u64(0), infinity, nan, f32(1.5), }) catch |_| { return 3 } io.print(writer, "{} {d} {b} {o} {x} {X} {c} {e} {}\n", { Count(i32(-42)), Count(i32(-42)), Byte(u8(10)), Byte(u8(10)), Byte(u8(255)), Byte(u8(255)), Byte(u8('A')), Ratio(f32(1.5)), Outer(Inner(u32(7))), }) catch |_| { return 4 } debug.print("debug={} {x}\n", {State.idle, 42}) return 0 }