//! > Call with coupon
//! > test_runner_name
test_function_lowering
//! > function
fn foo(x: bar::Coupon) {
bar(__coupon__: x);
}
fn bar() nopanic {
}
//! > function_name
foo
//! > module_code
//! > semantic_diagnostics
//! > lowering_diagnostics
//! > lowering_flat
Parameters: v0: test::bar::Coupon
blk0 (root):
Statements:
End:
Return()
//! > ==========================================================================
//! > Coupon moved
//! > test_runner_name
test_function_lowering
//! > function
fn foo(x: bar::Coupon) -> bar::Coupon {
bar(__coupon__: x);
x // Variable was previously moved.
}
fn bar() nopanic {
}
//! > function_name
foo
//! > module_code
//! > semantic_diagnostics
//! > lowering_diagnostics
error: Variable was previously moved.
--> lib.cairo:3:5
x // Variable was previously moved.
^
note: variable was previously used here:
--> lib.cairo:2:21
bar(__coupon__: x);
^
note: Trait has no implementation in context: core::traits::Copy::<test::bar::Coupon>
//! > lowering_flat
Parameters: v0: test::bar::Coupon
//! > ==========================================================================
//! > Calling panicable function with coupon
//! > test_runner_name
test_function_lowering
//! > function
fn foo(x: bar::Coupon) {
bar(__coupon__: x);
}
fn bar() {
panic(array![])
}
//! > function_name
foo
//! > module_code
//! > semantic_diagnostics
//! > lowering_diagnostics
//! > lowering_flat
Parameters: v0: test::bar::Coupon
blk0 (root):
Statements:
(v10: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
(v11: core::panics::Panic) <- struct_construct()
(v12: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v11, v10)
(v13: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v12)
End:
Return(v13)
//! > ==========================================================================
//! > Inlining disabled when coupon is used.
//! > test_runner_name
test_function_lowering
//! > function
fn foo(x: bar::Coupon) {
bar(__coupon__: x);
}
#[inline(always)]
fn bar() {}
//! > function_name
foo
//! > module_code
//! > semantic_diagnostics
//! > lowering_diagnostics
//! > lowering_flat
Parameters: v0: test::bar::Coupon
blk0 (root):
Statements:
End:
Return()