2019-08-07 17:21:32 +00:00
|
|
|
pragma experimental ABIEncoderV2;
|
|
|
|
|
|
|
|
contract C {
|
|
|
|
struct T {
|
|
|
|
uint a;
|
|
|
|
uint b;
|
|
|
|
string s;
|
|
|
|
}
|
|
|
|
bool[2][] flags;
|
|
|
|
function r() public returns (bool[3] memory) {
|
|
|
|
return [true, false, true];
|
|
|
|
}
|
|
|
|
function s() public returns (uint[2] memory, uint) {
|
|
|
|
return ([uint(123), 456], 789);
|
|
|
|
}
|
|
|
|
function u() public returns (T[2] memory) {
|
|
|
|
return [T(23, 42, "any"), T(555, 666, "any")];
|
|
|
|
}
|
|
|
|
function v() public returns (bool[2][] memory) {
|
|
|
|
return flags;
|
|
|
|
}
|
|
|
|
function w1() public returns (string[1] memory) {
|
|
|
|
return ["any"];
|
|
|
|
}
|
|
|
|
function w2() public returns (string[2] memory) {
|
|
|
|
return ["any", "any"];
|
|
|
|
}
|
|
|
|
function w3() public returns (string[3] memory) {
|
|
|
|
return ["any", "any", "any"];
|
|
|
|
}
|
|
|
|
function x() public returns (string[2] memory, string[3] memory) {
|
|
|
|
return (["any", "any"], ["any", "any", "any"]);
|
|
|
|
}
|
|
|
|
}
|
2020-11-02 12:05:07 +00:00
|
|
|
// ====
|
|
|
|
// compileViaYul: also
|
2019-08-07 17:21:32 +00:00
|
|
|
// ----
|
|
|
|
// r() -> true, false, true
|
|
|
|
// s() -> 123, 456, 789
|
|
|
|
// u() -> 0x20, 0x40, 0xE0, 23, 42, 0x60, 3, "any", 555, 666, 0x60, 3, "any"
|
|
|
|
// v() -> 0x20, 0
|
|
|
|
// w1() -> 0x20, 0x20, 3, "any"
|
|
|
|
// w2() -> 0x20, 0x40, 0x80, 3, "any", 3, "any"
|
|
|
|
// w3() -> 0x20, 0x60, 0xa0, 0xe0, 3, "any", 3, "any", 3, "any"
|
|
|
|
// x() -> 0x40, 0x0100, 0x40, 0x80, 3, "any", 3, "any", 0x60, 0xa0, 0xe0, 3, "any", 3, "any", 3, "any"
|