AddressImpl.sol 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. // SPDX-License-Identifier: MIT
  2. pragma solidity >=0.6.0 <0.8.0;
  3. import "../utils/Address.sol";
  4. contract AddressImpl {
  5. string public sharedAnswer;
  6. event CallReturnValue(string data);
  7. function isContract(address account) external view returns (bool) {
  8. return Address.isContract(account);
  9. }
  10. function sendValue(address payable receiver, uint256 amount) external {
  11. Address.sendValue(receiver, amount);
  12. }
  13. function functionCall(address target, bytes calldata data) external {
  14. bytes memory returnData = Address.functionCall(target, data);
  15. emit CallReturnValue(abi.decode(returnData, (string)));
  16. }
  17. function functionCallWithValue(address target, bytes calldata data, uint256 value) external payable {
  18. bytes memory returnData = Address.functionCallWithValue(target, data, value);
  19. emit CallReturnValue(abi.decode(returnData, (string)));
  20. }
  21. function functionStaticCall(address target, bytes calldata data) external {
  22. bytes memory returnData = Address.functionStaticCall(target, data);
  23. emit CallReturnValue(abi.decode(returnData, (string)));
  24. }
  25. // sendValue's tests require the contract to hold Ether
  26. receive () external payable { }
  27. }