Merge pull request #9058 from ethereum/memberAccessSolYul

[Sol->Yul] Member access for structs.
This commit is contained in:
chriseth
2020-06-03 21:19:49 +02:00
committed by GitHub
4 changed files with 60 additions and 2 deletions
@@ -0,0 +1,20 @@
contract C {
struct S {
uint8 a;
uint16 b;
uint128 c;
uint d;
}
mapping(uint => mapping(uint => S)) public x;
constructor() public {
x[1][2].a = 3;
x[1][2].b = 4;
x[1][2].c = 5;
x[1][2].d = 6;
}
}
// ====
// compileViaYul: also
// ----
// x(uint256,uint256): 1, 2 -> 3, 4, 5, 6
// x(uint256,uint256): 0, 0 -> 0x00, 0x00, 0x00, 0x00
@@ -12,6 +12,6 @@ contract test {
// compileViaYul: also
// ----
// data(uint256,uint256): 2, 2 -> 8
// data(uint256,uint256): 2, 8 -> FAILURE # NB: the original code contained a bug here #
// data(uint256,uint256): 2, 8 -> FAILURE # NB: the original code contained a bug here #
// dynamicData(uint256,uint256): 2, 2 -> 8
// dynamicData(uint256,uint256): 2, 8 -> FAILURE
@@ -8,5 +8,7 @@ contract test {
data[7].d = true;
}
}
// ====
// compileViaYul: also
// ----
// data(uint256): 7 -> 1, 2, true