contract Test {
struct S {
u32 x;
u32 y;
u256 z;
}
fn test() -> (u256 x, u256 y, u256 z) {
S data = combine(1, 2, 3);
x = extract(data, 0);
y = extract(data, 1);
z = extract(data, 2);
}
fn extract(S s, u256 which) -> (u256 x) {
if (which == 0) return s.x;
else if (which == 1) return s.y;
else return s.z;
}
fn combine(u32 x, u32 y, u256 z)
-> (S s)
{
s.x = x;
s.y = y;
s.z = z;
}
}
// ====
// compileToEwasm: also
// compileViaYul: also
// ----
// test() -> 1, 2, 3