123456789101112131415161718192021222324252627 |
- // SPDX-License-Identifier: MIT
- pragma solidity ^0.8.20;
- import {IBeacon} from "../proxy/beacon/IBeacon.sol";
- contract UpgradeableBeaconMock is IBeacon {
- address public implementation;
- constructor(address impl) {
- implementation = impl;
- }
- }
- interface IProxyExposed {
- // solhint-disable-next-line func-name-mixedcase
- function $getBeacon() external view returns (address);
- }
- contract UpgradeableBeaconReentrantMock is IBeacon {
- error BeaconProxyBeaconSlotAddress(address beacon);
- function implementation() external view override returns (address) {
- // Revert with the beacon seen in the proxy at the moment of calling to check if it's
- // set before the call.
- revert BeaconProxyBeaconSlotAddress(IProxyExposed(msg.sender).$getBeacon());
- }
- }
|