//! > Test struct constructor.
//! > test_runner_name
test_function_lowering
//! > function
fn foo(a: felt252) -> MyStruct {
MyStruct{a: (), c: (3, 7), b: a}
}
//! > function_name
foo
//! > module_code
struct MyStruct {
a: (),
b: felt252,
c: (felt252, felt252),
}
//! > semantic_diagnostics
//! > lowering_diagnostics
//! > lowering_flat
Parameters: v0: core::felt252
blk0 (root):
Statements:
(v1: ()) <- struct_construct()
(v2: core::felt252) <- 3u
(v3: core::felt252) <- 7u
(v4: (core::felt252, core::felt252)) <- struct_construct(v2, v3)
(v5: test::MyStruct) <- struct_construct(v1, v0, v4)
End:
Return(v5)
//! > ==========================================================================
//! > Test struct member access.
//! > test_runner_name
test_function_lowering
//! > function
fn foo(s: MyStruct) -> felt252 {
s.b
}
//! > function_name
foo
//! > module_code
struct MyStruct {
a: (),
b: felt252,
c: (felt252, felt252),
}
//! > semantic_diagnostics
//! > lowering_diagnostics
//! > lowering_flat
Parameters: v0: test::MyStruct
blk0 (root):
Statements:
(v1: (), v2: core::felt252, v3: (core::felt252, core::felt252)) <- struct_destructure(v0)
End:
Return(v2)
//! > ==========================================================================
//! > Test struct destructure.
//! > test_runner_name
test_function_lowering
//! > function
fn foo(s: MyStruct) -> (felt252, felt252) {
let MyStruct { a: _, c: (v, _), b} = s;
(v, b)
}
//! > function_name
foo
//! > module_code
struct MyStruct {
a: (),
b: felt252,
c: (felt252, felt252),
}
//! > semantic_diagnostics
//! > lowering_diagnostics
//! > lowering_flat
Parameters: v0: test::MyStruct
blk0 (root):
Statements:
(v1: (), v2: core::felt252, v3: (core::felt252, core::felt252)) <- struct_destructure(v0)
(v4: core::felt252, v5: core::felt252) <- struct_destructure(v3)
(v6: (core::felt252, core::felt252)) <- struct_construct(v4, v2)
End:
Return(v6)