cairo-lang-lowering 2.4.1

Cairo lowering phase.
Documentation
//! > Test error propagation.

//! > test_runner_name
test_function_lowering

//! > function
fn foo(a: Result::<Result::<u128, felt252>, felt252>) -> Result::<felt252, felt252> {
    a??;
    Result::<felt252, felt252>::Ok(1)
}

//! > function_name
foo

//! > module_code

//! > semantic_diagnostics

//! > lowering_diagnostics

//! > lowering_flat
Parameters: v0: core::result::Result::<core::result::Result::<core::integer::u128, core::felt252>, core::felt252>
blk0 (root):
Statements:
End:
  Match(match_enum(v0) {
    Result::Ok(v1) => blk1,
    Result::Err(v2) => blk4,
  })

blk1:
Statements:
End:
  Match(match_enum(v1) {
    Result::Ok(v5) => blk2,
    Result::Err(v6) => blk3,
  })

blk2:
Statements:
  (v9: core::felt252) <- 1u
  (v10: core::result::Result::<core::felt252, core::felt252>) <- Result::Ok(v9)
End:
  Return(v10)

blk3:
Statements:
  (v7: core::result::Result::<core::felt252, core::felt252>) <- Result::Err(v6)
End:
  Return(v7)

blk4:
Statements:
  (v3: core::result::Result::<core::felt252, core::felt252>) <- Result::Err(v2)
End:
  Return(v3)