Add return data to bare calls.

This commit is contained in:
Daniel Kirchner
2018-09-04 13:31:10 +02:00
parent f27d7edfd6
commit 82f512a7d4
12 changed files with 269 additions and 119 deletions
@@ -1,13 +1,17 @@
contract C {
function f() public {
require(address(this).call());
require(address(this).call(bytes4(0x12345678)));
require(address(this).call(uint(1)));
require(address(this).call(uint(1), uint(2)));
(bool success,) = address(this).call();
require(success);
(success,) = address(this).call(bytes4(0x12345678));
require(success);
(success,) = address(this).call(uint(1));
require(success);
(success,) = address(this).call(uint(1), uint(2));
require(success);
}
}
// ----
// TypeError: (55-75): Wrong argument count for function call: 0 arguments given but expected 1. This function requires a single bytes argument. Use "" as argument to provide empty calldata.
// TypeError: (113-131): Invalid type for argument in function call. Invalid implicit conversion from bytes4 to bytes memory requested. This function requires a single bytes argument. If all your arguments are value types, you can use abi.encode(...) to properly generate it.
// TypeError: (170-177): Invalid type for argument in function call. Invalid implicit conversion from uint256 to bytes memory requested. This function requires a single bytes argument. If all your arguments are value types, you can use abi.encode(...) to properly generate it.
// TypeError: (197-233): Wrong argument count for function call: 2 arguments given but expected 1. This function requires a single bytes argument. If all your arguments are value types, you can use abi.encode(...) to properly generate it.
// TypeError: (65-85): Wrong argument count for function call: 0 arguments given but expected 1. This function requires a single bytes argument. Use "" as argument to provide empty calldata.
// TypeError: (153-171): Invalid type for argument in function call. Invalid implicit conversion from bytes4 to bytes memory requested. This function requires a single bytes argument. If all your arguments are value types, you can use abi.encode(...) to properly generate it.
// TypeError: (240-247): Invalid type for argument in function call. Invalid implicit conversion from uint256 to bytes memory requested. This function requires a single bytes argument. If all your arguments are value types, you can use abi.encode(...) to properly generate it.
// TypeError: (297-333): Wrong argument count for function call: 2 arguments given but expected 1. This function requires a single bytes argument. If all your arguments are value types, you can use abi.encode(...) to properly generate it.