//! > Test closure with Destruct.
//! > test_runner_name
test_generated_function
//! > function
fn foo(mut a: Felt252Dict<felt252>,) {
|b: felt252| {
let _ = a.insert(b, b);
};
}
//! > function_name
foo
//! > module_code
//! > semantic_diagnostics
//! > lowering_diagnostics
error: Unsupported feature.
--> lib.cairo:2:5
|b: felt252| {
^************^
//! > lowering
Main:
Parameters: v0: core::dict::Felt252Dict::<core::felt252>
blk0 (root):
Statements:
(v1: {closure@lib.cairo:2:5: 2:17}) <- struct_construct(v0)
(v2: ()) <- struct_construct()
End:
Return(v2)
Final lowering:
Parameters: v0: core::dict::Felt252Dict::<core::felt252>
blk0 (root):
Statements:
(v1: {closure@lib.cairo:2:5: 2:17}) <- struct_construct(v0)
(v2: ()) <- Generated core::traits::Destruct::<{closure@lib.cairo:2:5: 2:17}>::destruct(v1)
End:
Return()
Generated Destruct::destruct lowering for source location:
|b: felt252| {
^************^
Parameters: v0: {closure@lib.cairo:2:5: 2:17}
blk0 (root):
Statements:
(v1: core::dict::Felt252Dict::<core::felt252>) <- struct_destructure(v0)
(v2: ()) <- struct_construct()
End:
Return(v2)
Final lowering:
Parameters: v0: core::RangeCheck, v1: core::SegmentArena, v2: core::gas::GasBuiltin, v3: {closure@lib.cairo:2:5: 2:17}
blk0 (root):
Statements:
(v4: core::dict::Felt252Dict::<core::felt252>) <- struct_destructure(v3)
(v5: core::RangeCheck, v6: core::SegmentArena, v7: core::gas::GasBuiltin, v8: core::dict::SquashedFelt252Dict::<core::felt252>) <- core::dict::Felt252DictImpl::<core::felt252, core::Felt252Felt252DictValue>::squash(v0, v1, v2, v4)
End:
Return(v5, v6, v7)
//! > ==========================================================================
//! > Test closure with PanicDestruct.
//! > test_runner_name
test_generated_function
//! > function
fn foo(mut a: PanicDestructable) {
|| {
let PanicDestructable { } = a;
};
panic!("Panic");
}
//! > function_name
foo
//! > module_code
struct PanicDestructable {}
impl MyPanicDesruct of PanicDestruct<PanicDestructable> {
// Disable inlining to see the panic_destruct call in the lowering output.
#[inline(never)]
fn panic_destruct(self: PanicDestructable, ref panic: Panic) nopanic {
let PanicDestructable { } = self;
}
}
//! > semantic_diagnostics
//! > lowering_diagnostics
error: Unsupported feature.
--> lib.cairo:11:5
|| {
^**^
//! > lowering
Main:
Parameters: v0: test::PanicDestructable
blk0 (root):
Statements:
(v1: {closure@lib.cairo:11:5: 11:7}) <- struct_construct(v0)
(v2: core::array::Array::<core::felt252>) <- core::array::ArrayImpl::<core::felt252>::new()
(v3: core::felt252) <- 1997209042069643135709344952807065910992472029923670688473712229447419591075
(v5: core::array::Array::<core::felt252>, v4: ()) <- core::array::ArrayImpl::<core::felt252>::append(v2, v3)
(v6: core::felt252) <- 0
(v8: core::array::Array::<core::felt252>, v7: ()) <- core::array::ArrayImpl::<core::felt252>::append(v5, v6)
(v9: core::felt252) <- 345232009571
(v11: core::array::Array::<core::felt252>, v10: ()) <- core::array::ArrayImpl::<core::felt252>::append(v8, v9)
(v12: core::felt252) <- 5
(v14: core::array::Array::<core::felt252>, v13: ()) <- core::array::ArrayImpl::<core::felt252>::append(v11, v12)
(v15: core::panics::Panic) <- struct_construct()
(v16: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v15, v14)
End:
Panic(v16)
Final lowering:
Parameters: v0: test::PanicDestructable
blk0 (root):
Statements:
(v1: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
(v2: core::felt252) <- 1997209042069643135709344952807065910992472029923670688473712229447419591075
(v3: core::array::Array::<core::felt252>) <- core::array::array_append::<core::felt252>(v1, v2)
(v4: core::felt252) <- 0
(v5: core::array::Array::<core::felt252>) <- core::array::array_append::<core::felt252>(v3, v4)
(v6: core::felt252) <- 345232009571
(v7: core::array::Array::<core::felt252>) <- core::array::array_append::<core::felt252>(v5, v6)
(v8: core::felt252) <- 5
(v9: core::array::Array::<core::felt252>) <- core::array::array_append::<core::felt252>(v7, v8)
(v10: {closure@lib.cairo:11:5: 11:7}) <- struct_construct(v0)
(v11: core::panics::Panic) <- struct_construct()
(v12: core::panics::Panic, v13: ()) <- Generated core::traits::PanicDestruct::<{closure@lib.cairo:11:5: 11:7}>::panic_destruct(v10, v11)
(v14: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v12, v9)
(v15: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v14)
End:
Return(v15)
Generated PanicDestruct::panic_destruct lowering for source location:
|| {
^**^
Parameters: v0: {closure@lib.cairo:11:5: 11:7}, v1: core::panics::Panic
blk0 (root):
Statements:
(v2: test::PanicDestructable) <- struct_destructure(v0)
(v3: ()) <- struct_construct()
End:
Return(v1, v3)
Final lowering:
Parameters: v0: {closure@lib.cairo:11:5: 11:7}, v1: core::panics::Panic
blk0 (root):
Statements:
(v2: test::PanicDestructable) <- struct_destructure(v0)
(v3: core::panics::Panic) <- test::MyPanicDesruct::panic_destruct(v2, v1)
End:
Return(v3)