program main fn add_local(a: i32) -> i32 local let one : unit int 1 : i32 local var total : unit binary + : i32 var a : i32 var one : i32 set total : unit binary + : i32 var total : i32 int 1 : i32 var total : i32 fn keep_flag(flag: bool) -> bool local let local_flag : unit var flag : bool var local_flag : bool fn flip_flag(flag: bool) -> bool local var current : unit var flag : bool set current : unit if : bool var current : bool bool false : bool bool true : bool var current : bool fn add_wide_local(base: i64) -> i64 local var count : unit var base : i64 set count : unit binary + : i64 var count : i64 i64 2 : i64 var count : i64 fn add_ratio_local(base: f64) -> f64 local var amount : unit var base : f64 set amount : unit binary + : f64 var amount : f64 float 0.5 : f64 var amount : f64 fn main() -> i32 local var flag : unit bool false : bool set flag : unit call flip_flag : bool var flag : bool if : i32 var flag : bool call add_local : i32 int 2 : i32 int 1 : i32 test "locals work" local let base : unit int 2 : i32 local var value : unit call add_local : i32 var base : i32 set value : unit binary + : i32 var value : i32 int 1 : i32 binary = : bool var value : i32 int 5 : i32 test "bool let locals work" local let expected : unit bool true : bool local let actual : unit call keep_flag : bool var expected : bool var actual : bool test "bool let locals preserve false" if : bool call keep_flag : bool bool false : bool bool false : bool bool true : bool test "bool var set flips true" if : bool call flip_flag : bool bool true : bool bool false : bool bool true : bool test "bool var set flips false" call flip_flag : bool bool false : bool test "i64 var set works" binary = : bool call add_wide_local : i64 i64 40 : i64 i64 42 : i64 test "f64 var set works" binary = : bool call add_ratio_local : f64 float 41.5 : f64 float 42 : f64