solidity/test/libsolidity/semanticTests/abiEncoderV1/struct/struct_storage_ptr.sol
2021-03-18 08:42:49 +01:00

32 lines
631 B
Solidity

library L {
struct S { uint x; uint y; }
function f(uint[] storage r, S storage s) public returns (uint, uint, uint, uint) {
r[2] = 8;
s.x = 7;
return (r[0], r[1], s.x, s.y);
}
}
contract C {
uint8 x = 3;
L.S s;
uint[] r;
function f() public returns (uint, uint, uint, uint, uint, uint) {
r = new uint[](6);
r[0] = 1;
r[1] = 2;
r[2] = 3;
s.x = 11;
s.y = 12;
(uint a, uint b, uint c, uint d) = L.f(r, s);
return (r[2], s.x, a, b, c, d);
}
}
// ====
// compileViaYul: also
// ----
// library: L
// f() -> 8, 7, 1, 2, 7, 12
// gas irOptimized: 172123
// gas legacy: 164775
// gas legacyOptimized: 162697