cairo-lang-lowering 2.17.0

Cairo lowering phase.
Documentation
//! > Test boolean if.

//! > test_runner_name
test_function_lowering(expect_diagnostics: false)

//! > function_code
fn foo(a: bool, b: bool) -> bool {
    (a && extern_get_bool()) || get_bool()
}

//! > function_name
foo

//! > module_code
extern fn extern_get_bool() -> bool nopanic;
#[inline(never)]
fn get_bool() -> bool {
    extern_get_bool()
}

//! > semantic_diagnostics

//! > lowering_diagnostics

//! > lowering_flat
Parameters: v0: core::bool, v1: core::bool
blk0 (root):
Statements:
End:
  Match(match_enum(v0) {
    bool::False(v2) => blk1,
    bool::True(v3) => blk2,
  })

blk1:
Statements:
End:
  Goto(blk4, {})

blk2:
Statements:
End:
  Match(match test::extern_get_bool() {
    bool::False => blk3,
    bool::True => blk5,
  })

blk3:
Statements:
End:
  Goto(blk4, {})

blk4:
Statements:
  (v4: core::bool) <- test::get_bool()
End:
  Return(v4)

blk5:
Statements:
  (v5: ()) <- struct_construct()
  (v6: core::bool) <- bool::True(v5)
End:
  Return(v6)