Mapping getters for Yul IR.

This commit is contained in:
Daniel Kirchner
2020-02-04 17:22:03 +01:00
parent d3cbfb0c5c
commit af9fc8b634
3 changed files with 129 additions and 14 deletions
@@ -0,0 +1,26 @@
pragma experimental ABIEncoderV2;
contract test {
enum E { A, B, C }
mapping(E => uint8) public table;
function set(E k, uint8 v) public {
table[k] = v;
}
}
// ====
// compileViaYul: also
// ----
// table(uint8): 0 -> 0
// table(uint8): 0x01 -> 0
// table(uint8): 0xa7 -> FAILURE
// set(uint8,uint8): 0x01, 0xa1 ->
// table(uint8): 0 -> 0
// table(uint8): 0x01 -> 0xa1
// table(uint8): 0xa7 -> FAILURE
// set(uint8,uint8): 0x00, 0xef ->
// table(uint8): 0 -> 0xef
// table(uint8): 0x01 -> 0xa1
// table(uint8): 0xa7 -> FAILURE
// set(uint8,uint8): 0x01, 0x05 ->
// table(uint8): 0 -> 0xef
// table(uint8): 0x01 -> 0x05
// table(uint8): 0xa7 -> FAILURE
@@ -0,0 +1,40 @@
contract test {
mapping(uint256 => uint256) public m1;
mapping(uint256 => mapping(uint256 => uint256)) public m2;
function set(uint256 k, uint256 v) public {
m1[k] = v;
}
function set(uint256 k1, uint256 k2, uint256 v) public {
m2[k1][k2] = v;
}
}
// ====
// compileViaYul: also
// ----
// m1(uint256): 0 -> 0
// m1(uint256): 0x01 -> 0
// m1(uint256): 0xa7 -> 0
// set(uint256,uint256): 0x01, 0xa1 ->
// m1(uint256): 0 -> 0
// m1(uint256): 0x01 -> 0xa1
// m1(uint256): 0xa7 -> 0
// set(uint256,uint256): 0x00, 0xef ->
// m1(uint256): 0 -> 0xef
// m1(uint256): 0x01 -> 0xa1
// m1(uint256): 0xa7 -> 0
// set(uint256,uint256): 0x01, 0x05 ->
// m1(uint256): 0 -> 0xef
// m1(uint256): 0x01 -> 0x05
// m1(uint256): 0xa7 -> 0
// m2(uint256,uint256): 0, 0 -> 0
// m2(uint256,uint256): 0, 0x01 -> 0
// m2(uint256,uint256): 0xa7, 0 -> 0
// m2(uint256,uint256): 0xa7, 0x01 -> 0
// set(uint256,uint256,uint256): 0xa7, 0x01, 0x23
// m2(uint256,uint256): 0, 0x01 -> 0
// m2(uint256,uint256): 0xa7, 0 -> 0
// m2(uint256,uint256): 0xa7, 0x01 -> 0x23
// set(uint256,uint256,uint256): 0, 0x01, 0xef
// m2(uint256,uint256): 0, 0x01 -> 0xef
// m2(uint256,uint256): 0xa7, 0 -> 0
// m2(uint256,uint256): 0xa7, 0x01 -> 0x23