import wasm

fn main() {
	mut m := wasm.Module{}
	mut bif := m.new_function('block_if', [.i32_t], [.i32_t])
	{
		loc := bif.new_local(.i32_t)

		// loc = i32.const 10
		bif.i32_const(10)
		bif.local_set(loc)

		blk := bif.c_block([], [])
		{
			// if argument[0], break
			bif.local_get(0)
			bif.c_br_if(blk)
			// loc = i32.const 11
			bif.i32_const(11)
			bif.local_set(loc)
		}
		bif.c_end(blk)

		// return loc
		bif.local_get(loc)
	}
	m.commit(bif, true)
	mut ifexpr := m.new_function('if_expr', [.i32_t], [.i64_t])
	{
		ifexpr.local_get(0)
		if_blk := ifexpr.c_if([], [.i64_t])
		{
			ifexpr.i64_const(5000)
		}
		ifexpr.c_else(if_blk)
		{
			ifexpr.i64_const(-5000)
		}
		ifexpr.c_end(if_blk)
	}
	m.commit(ifexpr, true)
	print(m.compile().bytestr())
}