solidity/test/libsolidity/semanticTests/various/swap_in_storage_overwrite.sol
2020-03-19 14:42:25 +01:00

35 lines
565 B
Solidity

// This tests a swap in storage which does not work as one
// might expect because we do not have temporary storage.
// (x, y) = (y, x) is the same as
// y = x;
// x = y;
contract c {
struct S {
uint256 a;
uint256 b;
}
S public x;
S public y;
function set() public {
x.a = 1;
x.b = 2;
y.a = 3;
y.b = 4;
}
function swap() public {
(x, y) = (y, x);
}
}
// ----
// x() -> 0, 0
// y() -> 0, 0
// set() ->
// x() -> 1, 2
// y() -> 3, 4
// swap() ->
// x() -> 1, 2
// y() -> 1, 2