mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
38 lines
848 B
Solidity
38 lines
848 B
Solidity
|
// Example from https://github.com/ethereum/solidity/issues/12558
|
||
|
pragma abicoder v2;
|
||
|
contract C {
|
||
|
function f(uint[] calldata a) external returns (uint[][] memory) {
|
||
|
uint[][] memory m = new uint[][](2);
|
||
|
m[0] = a;
|
||
|
|
||
|
return m;
|
||
|
}
|
||
|
}
|
||
|
contract Test {
|
||
|
C immutable c = new C();
|
||
|
|
||
|
function test() external returns (bool) {
|
||
|
uint[] memory arr = new uint[](4);
|
||
|
|
||
|
arr[0] = 13;
|
||
|
arr[1] = 14;
|
||
|
arr[2] = 15;
|
||
|
arr[3] = 16;
|
||
|
|
||
|
uint[][] memory ret = c.f(arr);
|
||
|
assert(ret.length == 2);
|
||
|
assert(ret[0].length == 4);
|
||
|
assert(ret[0][0] == 13);
|
||
|
assert(ret[0][1] == 14);
|
||
|
assert(ret[0][2] == 15);
|
||
|
assert(ret[0][3] == 16);
|
||
|
assert(ret[1].length == 0);
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
// ====
|
||
|
// EVMVersion: >homestead
|
||
|
// ----
|
||
|
// test() -> true
|