contract C { mapping(uint => uint) simple; mapping(uint16 => uint) cleanup; mapping(string => uint) str; mapping(uint => mapping(uint => uint)) twodim; function test_simple(uint _off) public returns (uint _a, uint _b, uint _c) { simple[_off + 2] = 3; simple[_off + 3] = 4; simple[type(uint256).max] = 5; _c = simple[type(uint256).max]; _b = simple[3 + _off]; _a = simple[2 + _off]; } function test_cleanup() public returns (bool) { uint16 x; assembly { x := 0xffff0001 } cleanup[x] = 3; return cleanup[1] == 3; } function test_str() public returns (bool) { str["abc"] = 3; string memory s = "abc"; return str[s] == 3; } function test_twodim() public returns (uint a, uint b) { twodim[2][3] = 3; a = twodim[3][2]; b = twodim[2][3]; } } // ==== // compileViaYul: also // ---- // test_simple(uint256): 0 -> 3, 4, 5 // test_simple(uint256): 1 -> 3, 4, 5 // test_simple(uint256): 2 -> 3, 4, 5 // test_cleanup() -> true // test_str() -> true // test_twodim() -> 0, 3