AddressFnPointersMock.sol 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // SPDX-License-Identifier: MIT
  2. pragma solidity ^0.8.0;
  3. import "../utils/Address.sol";
  4. /**
  5. * @dev A mock to expose `Address`'s functions with function pointers.
  6. */
  7. contract AddressFnPointerMock {
  8. error CustomRevert();
  9. function functionCall(address target, bytes memory data) external returns (bytes memory) {
  10. return Address.functionCall(target, data, _customRevert);
  11. }
  12. function functionCallWithValue(address target, bytes memory data, uint256 value) external returns (bytes memory) {
  13. return Address.functionCallWithValue(target, data, value, _customRevert);
  14. }
  15. function functionStaticCall(address target, bytes memory data) external view returns (bytes memory) {
  16. return Address.functionStaticCall(target, data, _customRevert);
  17. }
  18. function functionDelegateCall(address target, bytes memory data) external returns (bytes memory) {
  19. return Address.functionDelegateCall(target, data, _customRevert);
  20. }
  21. function verifyCallResultFromTarget(
  22. address target,
  23. bool success,
  24. bytes memory returndata
  25. ) external view returns (bytes memory) {
  26. return Address.verifyCallResultFromTarget(target, success, returndata, _customRevert);
  27. }
  28. function verifyCallResult(bool success, bytes memory returndata) external view returns (bytes memory) {
  29. return Address.verifyCallResult(success, returndata, _customRevert);
  30. }
  31. function verifyCallResultVoid(bool success, bytes memory returndata) external view returns (bytes memory) {
  32. return Address.verifyCallResult(success, returndata, _customRevertVoid);
  33. }
  34. function _customRevert() internal pure {
  35. revert CustomRevert();
  36. }
  37. function _customRevertVoid() internal pure {}
  38. }