pragma experimental ABIEncoderV2; contract C { struct S { C[] x; C y; } function f() public returns (S memory s, C c) { } } // ---- // :C // [ // { // "inputs": [], // "name": "f", // "outputs": // [ // { // "components": // [ // { // "internalType": "contract C[]", // "name": "x", // "type": "address[]" // }, // { // "internalType": "contract C", // "name": "y", // "type": "address" // } // ], // "internalType": "struct C.S", // "name": "s", // "type": "tuple" // }, // { // "internalType": "contract C", // "name": "c", // "type": "address" // } // ], // "stateMutability": "nonpayable", // "type": "function" // } // ]