//! > Test error propagation.

//! > test_function_name
test_function_lowering

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

//! > function_name
foo

//! > module_code

//! > semantic_diagnostics

//! > lowering_diagnostics

//! > lowering_format
blk0:
Inputs: v1: core::result::Result::<core::integer::u128, core::felt>
Statements:
Drops:
End:
  Callsite(v1)

blk1:
Inputs: v2: core::felt
Statements:
  (v3: core::result::Result::<core::felt, core::felt>) <- Result::Err(v2)
Drops: v2, v0
End:
  Return(v3)

blk2:
Inputs: v5: core::integer::u128
Statements:
Drops:
End:
  Callsite(v5)

blk3:
Inputs: v6: core::felt
Statements:
  (v7: core::result::Result::<core::felt, core::felt>) <- Result::Err(v6)
Drops: v6, v4
End:
  Return(v7)

blk4 (root):
Inputs: v0: core::result::Result::<core::result::Result::<core::integer::u128, core::felt>, core::felt>
Statements:
  (v4: core::result::Result::<core::integer::u128, core::felt>) <- match_enum(v0) {
    Result::Ok => blk0,
    Result::Err => blk1,
  }
  (v8: core::integer::u128) <- match_enum(v4) {
    Result::Ok => blk2,
    Result::Err => blk3,
  }
  (v9: core::felt) <- 1u
  (v10: core::result::Result::<core::felt, core::felt>) <- Result::Ok(v9)
Drops: v8, v9
End:
  Callsite(v10)
