AddressImplUpgradeable.sol 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // SPDX-License-Identifier: MIT
  2. pragma solidity ^0.8.0;
  3. import "../utils/AddressUpgradeable.sol";
  4. import "../proxy/utils/Initializable.sol";
  5. contract AddressImplUpgradeable is Initializable {
  6. function __AddressImpl_init() internal onlyInitializing {
  7. __AddressImpl_init_unchained();
  8. }
  9. function __AddressImpl_init_unchained() internal onlyInitializing {
  10. }
  11. string public sharedAnswer;
  12. event CallReturnValue(string data);
  13. function isContract(address account) external view returns (bool) {
  14. return AddressUpgradeable.isContract(account);
  15. }
  16. function sendValue(address payable receiver, uint256 amount) external {
  17. AddressUpgradeable.sendValue(receiver, amount);
  18. }
  19. function functionCall(address target, bytes calldata data) external {
  20. bytes memory returnData = AddressUpgradeable.functionCall(target, data);
  21. emit CallReturnValue(abi.decode(returnData, (string)));
  22. }
  23. function functionCallWithValue(
  24. address target,
  25. bytes calldata data,
  26. uint256 value
  27. ) external payable {
  28. bytes memory returnData = AddressUpgradeable.functionCallWithValue(target, data, value);
  29. emit CallReturnValue(abi.decode(returnData, (string)));
  30. }
  31. function functionStaticCall(address target, bytes calldata data) external {
  32. bytes memory returnData = AddressUpgradeable.functionStaticCall(target, data);
  33. emit CallReturnValue(abi.decode(returnData, (string)));
  34. }
  35. // sendValue's tests require the contract to hold Ether
  36. receive() external payable {}
  37. uint256[49] private __gap;
  38. }