2020-11-23 18:06:44 +00:00
|
|
|
pragma abicoder v2;
|
2020-03-09 21:14:07 +00:00
|
|
|
|
|
|
|
|
|
|
|
contract C {
|
|
|
|
function f(uint256[][] calldata a) external returns (uint256) {
|
|
|
|
return 42;
|
|
|
|
}
|
|
|
|
|
|
|
|
function g(uint256[][] calldata a) external returns (uint256) {
|
|
|
|
a[0];
|
|
|
|
return 42;
|
|
|
|
}
|
|
|
|
}
|
2020-04-17 20:24:33 +00:00
|
|
|
// ====
|
2020-11-21 13:54:16 +00:00
|
|
|
// compileToEwasm: also
|
2021-03-12 23:02:36 +00:00
|
|
|
// compileViaYul: also
|
2020-03-09 21:14:07 +00:00
|
|
|
// ----
|
|
|
|
// f(uint256[][]): 0x20, 0x0 -> 42 # valid access stub #
|
|
|
|
// f(uint256[][]): 0x20, 0x1 -> FAILURE # invalid on argument decoding #
|
|
|
|
// f(uint256[][]): 0x20, 0x1, 0x20 -> 42 # invalid on outer access #
|
|
|
|
// g(uint256[][]): 0x20, 0x1, 0x20 -> FAILURE
|
|
|
|
// f(uint256[][]): 0x20, 0x1, 0x20, 0x2, 0x42 -> 42 # invalid on inner access #
|
|
|
|
// g(uint256[][]): 0x20, 0x1, 0x20, 0x2, 0x42 -> FAILURE
|