diff --git a/.github/workflows/foundry.yml b/.github/workflows/foundry.yml index 741fee08..97612e41 100644 --- a/.github/workflows/foundry.yml +++ b/.github/workflows/foundry.yml @@ -32,7 +32,7 @@ jobs: - uses: ./.github/actions/install - name: Build contracts via IR & check sizes - run: yarn build:forge --force # don't use compilation cache + run: yarn build:forge --force --sizes # don't use compilation cache build-no-ir: name: Compilation (without IR) diff --git a/foundry.toml b/foundry.toml index 9f0ecf48..133d6a95 100644 --- a/foundry.toml +++ b/foundry.toml @@ -1,7 +1,5 @@ [profile.default] -names = true -sizes = true -via-ir = false +src = "src" test = "test/forge" evm_version = "paris" fs_permissions = [ @@ -18,6 +16,7 @@ wrap_comments = true [profile.build] +via-ir = true test = "/dev/null" script = "/dev/null" diff --git a/src/MetaMorpho.sol b/src/MetaMorpho.sol index b6545466..0f259f27 100644 --- a/src/MetaMorpho.sol +++ b/src/MetaMorpho.sol @@ -79,7 +79,7 @@ contract MetaMorpho is ERC4626, ERC20Permit, Ownable2Step, Multicall, IMetaMorph string memory _name, string memory _symbol ) ERC4626(IERC20(_asset)) ERC20Permit(_name) ERC20(_name, _symbol) { - require(initialTimelock <= MAX_TIMELOCK, ErrorsLib.MAX_TIMELOCK_EXCEEDED); + if (initialTimelock > MAX_TIMELOCK) revert ErrorsLib.MaxTimelockExceeded(); _transferOwnership(owner); @@ -93,27 +93,29 @@ contract MetaMorpho is ERC4626, ERC20Permit, Ownable2Step, Multicall, IMetaMorph /* MODIFIERS */ modifier onlyRiskManager() { - require(_msgSender() == riskManager || _msgSender() == owner(), ErrorsLib.NOT_RISK_MANAGER); + if (_msgSender() != riskManager && _msgSender() != owner()) revert ErrorsLib.NotRiskManager(); _; } modifier onlyGuardian() { - require(_msgSender() == guardian, ErrorsLib.NOT_GUARDIAN); + if (_msgSender() != guardian) revert ErrorsLib.NotGuardian(); _; } modifier onlyAllocator() { - require(isAllocator(_msgSender()), ErrorsLib.NOT_ALLOCATOR); + if (!isAllocator(_msgSender())) revert ErrorsLib.NotAllocator(); _; } modifier timelockElapsed(uint256 submittedAt) { - require(submittedAt != 0, ErrorsLib.NO_PENDING_VALUE); - require(block.timestamp >= submittedAt + timelock, ErrorsLib.TIMELOCK_NOT_ELAPSED); - require(block.timestamp <= submittedAt + timelock + TIMELOCK_EXPIRATION, ErrorsLib.TIMELOCK_EXPIRATION_EXCEEDED); + if (submittedAt == 0) revert ErrorsLib.NoPendingValue(); + if (block.timestamp < submittedAt + timelock) revert ErrorsLib.TimelockNotElapsed(); + if (block.timestamp > submittedAt + timelock + TIMELOCK_EXPIRATION) { + revert ErrorsLib.TimelockExpirationExceeded(); + } _; } @@ -121,7 +123,7 @@ contract MetaMorpho is ERC4626, ERC20Permit, Ownable2Step, Multicall, IMetaMorph /* ONLY OWNER FUNCTIONS */ function setRiskManager(address newRiskManager) external onlyOwner { - require(newRiskManager != riskManager, ErrorsLib.ALREADY_SET); + if (newRiskManager == riskManager) revert ErrorsLib.AlreadySet(); riskManager = newRiskManager; @@ -129,7 +131,7 @@ contract MetaMorpho is ERC4626, ERC20Permit, Ownable2Step, Multicall, IMetaMorph } function setIsAllocator(address newAllocator, bool newIsAllocator) external onlyOwner { - require(_isAllocator[newAllocator] != newIsAllocator, ErrorsLib.ALREADY_SET); + if (_isAllocator[newAllocator] == newIsAllocator) revert ErrorsLib.AlreadySet(); _isAllocator[newAllocator] = newIsAllocator; @@ -137,7 +139,7 @@ contract MetaMorpho is ERC4626, ERC20Permit, Ownable2Step, Multicall, IMetaMorph } function setRewardsDistributor(address newRewardsDistributor) external onlyOwner { - require(newRewardsDistributor != rewardsDistributor, ErrorsLib.ALREADY_SET); + if (newRewardsDistributor == rewardsDistributor) revert ErrorsLib.AlreadySet(); rewardsDistributor = newRewardsDistributor; @@ -145,8 +147,8 @@ contract MetaMorpho is ERC4626, ERC20Permit, Ownable2Step, Multicall, IMetaMorph } function submitTimelock(uint256 newTimelock) external onlyOwner { - require(newTimelock <= MAX_TIMELOCK, ErrorsLib.MAX_TIMELOCK_EXCEEDED); - require(newTimelock != timelock, ErrorsLib.ALREADY_SET); + if (newTimelock > MAX_TIMELOCK) revert ErrorsLib.MaxTimelockExceeded(); + if (newTimelock == timelock) revert ErrorsLib.AlreadySet(); if (newTimelock > timelock || timelock == 0) { _setTimelock(newTimelock); @@ -163,8 +165,8 @@ contract MetaMorpho is ERC4626, ERC20Permit, Ownable2Step, Multicall, IMetaMorph } function submitFee(uint256 newFee) external onlyOwner { - require(newFee <= MAX_FEE, ErrorsLib.MAX_FEE_EXCEEDED); - require(newFee != fee, ErrorsLib.ALREADY_SET); + if (newFee > MAX_FEE) revert ErrorsLib.MaxFeeExceeded(); + if (newFee == fee) revert ErrorsLib.AlreadySet(); if (newFee < fee || timelock == 0) { _setFee(newFee); @@ -181,8 +183,8 @@ contract MetaMorpho is ERC4626, ERC20Permit, Ownable2Step, Multicall, IMetaMorph } function setFeeRecipient(address newFeeRecipient) external onlyOwner { - require(newFeeRecipient != feeRecipient, ErrorsLib.ALREADY_SET); - require(newFeeRecipient != address(0) || fee == 0, ErrorsLib.ZERO_FEE_RECIPIENT); + if (newFeeRecipient == feeRecipient) revert ErrorsLib.AlreadySet(); + if (newFeeRecipient == address(0) && fee != 0) revert ErrorsLib.ZeroFeeRecipient(); // Accrue interest to the previous fee recipient set before changing it. _updateLastTotalAssets(_accrueFee()); @@ -193,8 +195,8 @@ contract MetaMorpho is ERC4626, ERC20Permit, Ownable2Step, Multicall, IMetaMorph } function submitGuardian(address newGuardian) external onlyOwner { - require(timelock != 0, ErrorsLib.NO_TIMELOCK); - require(newGuardian != guardian, ErrorsLib.ALREADY_SET); + if (timelock == 0) revert ErrorsLib.NoTimelock(); + if (newGuardian == guardian) revert ErrorsLib.AlreadySet(); if (guardian == address(0)) { _setGuardian(newGuardian); @@ -212,13 +214,13 @@ contract MetaMorpho is ERC4626, ERC20Permit, Ownable2Step, Multicall, IMetaMorph /* ONLY RISK MANAGER FUNCTIONS */ function submitCap(MarketParams memory marketParams, uint256 newMarketCap) external onlyRiskManager { - require(marketParams.loanToken == asset(), ErrorsLib.INCONSISTENT_ASSET); + if (marketParams.loanToken != asset()) revert ErrorsLib.InconsistentAsset(); Id id = marketParams.id(); - require(MORPHO.lastUpdate(id) != 0, ErrorsLib.MARKET_NOT_CREATED); + if (MORPHO.lastUpdate(id) == 0) revert ErrorsLib.MarketNotCreated(); uint256 marketCap = config[id].cap; - require(newMarketCap != marketCap, ErrorsLib.ALREADY_SET); + if (newMarketCap == marketCap) revert ErrorsLib.AlreadySet(); if (newMarketCap < marketCap || timelock == 0) { _setCap(id, newMarketCap.toUint192()); @@ -241,7 +243,7 @@ contract MetaMorpho is ERC4626, ERC20Permit, Ownable2Step, Multicall, IMetaMorph uint256 length = newSupplyQueue.length; for (uint256 i; i < length; ++i) { - require(config[newSupplyQueue[i]].cap > 0, ErrorsLib.UNAUTHORIZED_MARKET); + if (config[newSupplyQueue[i]].cap == 0) revert ErrorsLib.UnauthorizedMarket(); } supplyQueue = newSupplyQueue; @@ -260,14 +262,13 @@ contract MetaMorpho is ERC4626, ERC20Permit, Ownable2Step, Multicall, IMetaMorph for (uint256 i; i < newLength; ++i) { uint256 prevIndex = indexes[i]; + Id id = withdrawQueue[prevIndex]; // If prevIndex >= currLength, reverts with native "Index out of bounds". - require(!seen[prevIndex], ErrorsLib.DUPLICATE_MARKET); + if (seen[prevIndex]) revert ErrorsLib.DuplicateMarket(id); seen[prevIndex] = true; - Id id = withdrawQueue[prevIndex]; - newWithdrawQueue[i] = id; // Safe "unchecked" cast because i < currLength. @@ -278,7 +279,9 @@ contract MetaMorpho is ERC4626, ERC20Permit, Ownable2Step, Multicall, IMetaMorph if (!seen[i]) { Id id = withdrawQueue[i]; - require(MORPHO.supplyShares(id, address(this)) == 0 && config[id].cap == 0, ErrorsLib.MISSING_MARKET); + if (MORPHO.supplyShares(id, address(this)) != 0 || config[id].cap != 0) { + revert ErrorsLib.MissingMarket(id); + } delete config[id].withdrawRank; } @@ -317,17 +320,17 @@ contract MetaMorpho is ERC4626, ERC20Permit, Ownable2Step, Multicall, IMetaMorph totalSupplied += suppliedAssets; - require( - _supplyBalance(allocation.marketParams) <= config[allocation.marketParams.id()].cap, - ErrorsLib.SUPPLY_CAP_EXCEEDED - ); + Id id = allocation.marketParams.id(); + if (_supplyBalance(allocation.marketParams) > config[id].cap) { + revert ErrorsLib.SupplyCapExceeded(id); + } } if (totalWithdrawn > totalSupplied) { idle += totalWithdrawn - totalSupplied; } else { uint256 idleSupplied = totalSupplied - totalWithdrawn; - require(idle >= idleSupplied, ErrorsLib.INSUFFICIENT_IDLE); + if (idle < idleSupplied) revert ErrorsLib.InsufficientIdle(); idle -= idleSupplied; } @@ -336,7 +339,7 @@ contract MetaMorpho is ERC4626, ERC20Permit, Ownable2Step, Multicall, IMetaMorph /* EXTERNAL */ function transferRewards(address token) external { - require(rewardsDistributor != address(0), ErrorsLib.ZERO_ADDRESS); + if (rewardsDistributor == address(0)) revert ErrorsLib.ZeroAddress(); uint256 amount = IERC20(token).balanceOf(address(this)); if (token == asset()) amount -= idle; @@ -513,7 +516,7 @@ contract MetaMorpho is ERC4626, ERC20Permit, Ownable2Step, Multicall, IMetaMorph internal override { - require(_withdrawMorpho(assets) == 0, ErrorsLib.WITHDRAW_FAILED_MORPHO); + if (_withdrawMorpho(assets) != 0) revert ErrorsLib.WithdrawMorphoFailed(); super._withdraw(caller, receiver, owner, assets, shares); } @@ -551,7 +554,7 @@ contract MetaMorpho is ERC4626, ERC20Permit, Ownable2Step, Multicall, IMetaMorph supplyQueue.push(id); withdrawQueue.push(id); - require(withdrawQueue.length <= MAX_QUEUE_SIZE, ErrorsLib.MAX_QUEUE_SIZE_EXCEEDED); + if (withdrawQueue.length > MAX_QUEUE_SIZE) revert ErrorsLib.MaxQueueSizeExceeded(); // Safe "unchecked" cast because withdrawQueue.length <= MAX_QUEUE_SIZE. marketConfig.withdrawRank = uint64(withdrawQueue.length); @@ -565,7 +568,7 @@ contract MetaMorpho is ERC4626, ERC20Permit, Ownable2Step, Multicall, IMetaMorph } function _setFee(uint256 newFee) internal { - require(newFee == 0 || feeRecipient != address(0), ErrorsLib.ZERO_FEE_RECIPIENT); + if (newFee != 0 && feeRecipient == address(0)) revert ErrorsLib.ZeroFeeRecipient(); // Accrue interest using the previous fee set before changing it. _updateLastTotalAssets(_accrueFee()); diff --git a/src/MetaMorphoFactory.sol b/src/MetaMorphoFactory.sol index 8f5ec35f..ea6b9b93 100644 --- a/src/MetaMorphoFactory.sol +++ b/src/MetaMorphoFactory.sol @@ -18,7 +18,7 @@ contract MetaMorphoFactory { /* CONSTRCUTOR */ constructor(address morpho) { - require(morpho != address(0), ErrorsLib.ZERO_ADDRESS); + if (morpho == address(0)) revert ErrorsLib.ZeroAddress(); MORPHO = morpho; } diff --git a/src/libraries/ErrorsLib.sol b/src/libraries/ErrorsLib.sol index fb5730c0..5c21d0af 100644 --- a/src/libraries/ErrorsLib.sol +++ b/src/libraries/ErrorsLib.sol @@ -1,48 +1,50 @@ // SPDX-License-Identifier: GPL-2.0-or-later pragma solidity ^0.8.0; +import {Id} from "@morpho-blue/interfaces/IMorpho.sol"; + library ErrorsLib { - string internal constant ZERO_ADDRESS = "zero address"; + error ZeroAddress(); - string internal constant NOT_RISK_MANAGER = "not risk manager"; + error NotRiskManager(); - string internal constant NOT_ALLOCATOR = "not allocator"; + error NotAllocator(); - string internal constant NOT_GUARDIAN = "not guardian"; + error NotGuardian(); - string internal constant UNAUTHORIZED_MARKET = "unauthorized market"; + error UnauthorizedMarket(); - string internal constant INCONSISTENT_ASSET = "inconsistent asset"; + error InconsistentAsset(); - string internal constant SUPPLY_CAP_EXCEEDED = "supply cap exceeded"; + error SupplyCapExceeded(Id id); /// @notice Thrown when the fee to set exceeds the maximum fee. - string internal constant MAX_FEE_EXCEEDED = "max fee exceeded"; + error MaxFeeExceeded(); /// @notice Thrown when the value is already set. - string internal constant ALREADY_SET = "already set"; + error AlreadySet(); - string internal constant NO_TIMELOCK = "no timelock"; + error NoTimelock(); - string internal constant DUPLICATE_MARKET = "duplicate market"; + error DuplicateMarket(Id id); - string internal constant MISSING_MARKET = "missing market"; + error MissingMarket(Id id); - string internal constant NO_PENDING_VALUE = "no pending value"; + error NoPendingValue(); - string internal constant WITHDRAW_FAILED_MORPHO = "withdraw failed on Morpho"; + error WithdrawMorphoFailed(); - string internal constant MARKET_NOT_CREATED = "market not created"; + error MarketNotCreated(); - string internal constant MAX_TIMELOCK_EXCEEDED = "max timelock exceeded"; + error MaxTimelockExceeded(); - string internal constant TIMELOCK_NOT_ELAPSED = "timelock not elapsed"; + error TimelockNotElapsed(); - string internal constant TIMELOCK_EXPIRATION_EXCEEDED = "timelock expiration exceeded"; + error TimelockExpirationExceeded(); - string internal constant MAX_QUEUE_SIZE_EXCEEDED = "max queue size exceeded"; + error MaxQueueSizeExceeded(); - string internal constant ZERO_FEE_RECIPIENT = "fee recipient is zero"; + error ZeroFeeRecipient(); - string internal constant INSUFFICIENT_IDLE = "insufficient idle liquidity"; + error InsufficientIdle(); } diff --git a/test/forge/ERC4626Test.sol b/test/forge/ERC4626Test.sol index b840e16c..c551b1d8 100644 --- a/test/forge/ERC4626Test.sol +++ b/test/forge/ERC4626Test.sol @@ -199,7 +199,7 @@ contract ERC4626Test is BaseTest { assets = bound(assets, deposited + 1, type(uint256).max / (deposited + 10 ** DECIMALS_OFFSET)); vm.prank(ONBEHALF); - vm.expectRevert(bytes(ErrorsLib.WITHDRAW_FAILED_MORPHO)); + vm.expectRevert(ErrorsLib.WithdrawMorphoFailed.selector); vault.withdraw(assets, RECEIVER, ONBEHALF); } @@ -222,7 +222,7 @@ contract ERC4626Test is BaseTest { vm.stopPrank(); vm.prank(ONBEHALF); - vm.expectRevert(bytes(ErrorsLib.WITHDRAW_FAILED_MORPHO)); + vm.expectRevert(ErrorsLib.WithdrawMorphoFailed.selector); vault.withdraw(assets, RECEIVER, ONBEHALF); } diff --git a/test/forge/FeeTest.sol b/test/forge/FeeTest.sol index 73d71a4d..8c0be234 100644 --- a/test/forge/FeeTest.sol +++ b/test/forge/FeeTest.sol @@ -236,13 +236,13 @@ contract FeeTest is BaseTest { fee = bound(fee, MAX_FEE + 1, type(uint256).max); vm.prank(OWNER); - vm.expectRevert(bytes(ErrorsLib.MAX_FEE_EXCEEDED)); + vm.expectRevert(ErrorsLib.MaxFeeExceeded.selector); vault.submitFee(fee); } function testSubmitFeeAlreadySet() public { vm.prank(OWNER); - vm.expectRevert(bytes(ErrorsLib.ALREADY_SET)); + vm.expectRevert(ErrorsLib.AlreadySet.selector); vault.submitFee(FEE); } diff --git a/test/forge/MarketTest.sol b/test/forge/MarketTest.sol index 8321994e..dac7ee6a 100644 --- a/test/forge/MarketTest.sol +++ b/test/forge/MarketTest.sol @@ -36,7 +36,7 @@ contract MarketTest is BaseTest { vm.assume(marketParams.loanToken != address(loanToken)); vm.prank(RISK_MANAGER); - vm.expectRevert(bytes(ErrorsLib.INCONSISTENT_ASSET)); + vm.expectRevert(ErrorsLib.InconsistentAsset.selector); vault.submitCap(marketParams, 0); } @@ -46,7 +46,7 @@ contract MarketTest is BaseTest { vm.assume(morpho.lastUpdate(marketParams.id()) == 0); vm.prank(RISK_MANAGER); - vm.expectRevert(bytes(ErrorsLib.MARKET_NOT_CREATED)); + vm.expectRevert(ErrorsLib.MarketNotCreated.selector); vault.submitCap(marketParams, 0); } @@ -118,7 +118,7 @@ contract MarketTest is BaseTest { indexes[2] = 1; vm.prank(ALLOCATOR); - vm.expectRevert(bytes(ErrorsLib.DUPLICATE_MARKET)); + vm.expectRevert(abi.encodeWithSelector(ErrorsLib.DuplicateMarket.selector, allMarkets[1].id())); vault.sortWithdrawQueue(indexes); } @@ -137,7 +137,7 @@ contract MarketTest is BaseTest { indexes[1] = 2; vm.prank(ALLOCATOR); - vm.expectRevert(bytes(ErrorsLib.MISSING_MARKET)); + vm.expectRevert(abi.encodeWithSelector(ErrorsLib.MissingMarket.selector, allMarkets[0].id())); vault.sortWithdrawQueue(indexes); } } diff --git a/test/forge/MetaMorphoFactoryTest.sol b/test/forge/MetaMorphoFactoryTest.sol index ec51685e..80363574 100644 --- a/test/forge/MetaMorphoFactoryTest.sol +++ b/test/forge/MetaMorphoFactoryTest.sol @@ -15,7 +15,7 @@ contract MetaMorphoFactoryTest is BaseTest { } function testFactoryAddresssZero() public { - vm.expectRevert(bytes(ErrorsLib.ZERO_ADDRESS)); + vm.expectRevert(ErrorsLib.ZeroAddress.selector); new MetaMorphoFactory(address(0)); } diff --git a/test/forge/ReallocateIdleTest.sol b/test/forge/ReallocateIdleTest.sol index a1b31c83..1d7d2111 100644 --- a/test/forge/ReallocateIdleTest.sol +++ b/test/forge/ReallocateIdleTest.sol @@ -8,7 +8,7 @@ import "./helpers/BaseTest.sol"; uint256 constant CAP2 = 100e18; uint256 constant INITIAL_DEPOSIT = 4 * CAP2; -contract ReallocateTest is BaseTest { +contract ReallocateIdleTest is BaseTest { using MarketParamsLib for MarketParams; using MorphoLib for IMorpho; diff --git a/test/forge/RoleTest.sol b/test/forge/RoleTest.sol index 96682640..c8e301c1 100644 --- a/test/forge/RoleTest.sol +++ b/test/forge/RoleTest.sol @@ -37,7 +37,7 @@ contract RoleTest is BaseTest { vm.startPrank(caller); - vm.expectRevert(bytes(ErrorsLib.NOT_RISK_MANAGER)); + vm.expectRevert(ErrorsLib.NotRiskManager.selector); vault.submitCap(allMarkets[0], CAP); vm.stopPrank(); @@ -52,13 +52,13 @@ contract RoleTest is BaseTest { MarketAllocation[] memory allocation; uint256[] memory withdrawQueueFromRanks; - vm.expectRevert(bytes(ErrorsLib.NOT_ALLOCATOR)); + vm.expectRevert(ErrorsLib.NotAllocator.selector); vault.setSupplyQueue(supplyQueue); - vm.expectRevert(bytes(ErrorsLib.NOT_ALLOCATOR)); + vm.expectRevert(ErrorsLib.NotAllocator.selector); vault.sortWithdrawQueue(withdrawQueueFromRanks); - vm.expectRevert(bytes(ErrorsLib.NOT_ALLOCATOR)); + vm.expectRevert(ErrorsLib.NotAllocator.selector); vault.reallocate(allocation, allocation); vm.stopPrank(); diff --git a/test/forge/TimelockTest.sol b/test/forge/TimelockTest.sol index 53976ec3..53633d69 100644 --- a/test/forge/TimelockTest.sol +++ b/test/forge/TimelockTest.sol @@ -63,7 +63,7 @@ contract TimelockTest is BaseTest { timelock = bound(timelock, MAX_TIMELOCK + 1, type(uint256).max); vm.prank(OWNER); - vm.expectRevert(bytes(ErrorsLib.MAX_TIMELOCK_EXCEEDED)); + vm.expectRevert(ErrorsLib.MaxTimelockExceeded.selector); vault.submitTimelock(timelock); } @@ -87,7 +87,7 @@ contract TimelockTest is BaseTest { } function testAcceptTimelockNoPendingValue() public { - vm.expectRevert(bytes(ErrorsLib.NO_PENDING_VALUE)); + vm.expectRevert(ErrorsLib.NoPendingValue.selector); vault.acceptTimelock(); } @@ -113,7 +113,7 @@ contract TimelockTest is BaseTest { vm.warp(block.timestamp + elapsed); vm.prank(OWNER); - vm.expectRevert(bytes(ErrorsLib.TIMELOCK_NOT_ELAPSED)); + vm.expectRevert(ErrorsLib.TimelockNotElapsed.selector); vault.acceptTimelock(); } @@ -127,7 +127,7 @@ contract TimelockTest is BaseTest { vm.warp(block.timestamp + elapsed); vm.prank(OWNER); - vm.expectRevert(bytes(ErrorsLib.TIMELOCK_EXPIRATION_EXCEEDED)); + vm.expectRevert(ErrorsLib.TimelockExpirationExceeded.selector); vault.acceptTimelock(); } @@ -179,7 +179,7 @@ contract TimelockTest is BaseTest { } function testAcceptFeeNoPendingValue() public { - vm.expectRevert(bytes(ErrorsLib.NO_PENDING_VALUE)); + vm.expectRevert(ErrorsLib.NoPendingValue.selector); vault.acceptFee(); } @@ -193,7 +193,7 @@ contract TimelockTest is BaseTest { vm.warp(block.timestamp + elapsed); vm.prank(OWNER); - vm.expectRevert(bytes(ErrorsLib.TIMELOCK_NOT_ELAPSED)); + vm.expectRevert(ErrorsLib.TimelockNotElapsed.selector); vault.acceptFee(); } @@ -207,7 +207,7 @@ contract TimelockTest is BaseTest { vm.warp(block.timestamp + elapsed); vm.prank(OWNER); - vm.expectRevert(bytes(ErrorsLib.TIMELOCK_EXPIRATION_EXCEEDED)); + vm.expectRevert(ErrorsLib.TimelockExpirationExceeded.selector); vault.acceptFee(); } @@ -241,7 +241,7 @@ contract TimelockTest is BaseTest { } function testAcceptCapNoPendingValue() public { - vm.expectRevert(bytes(ErrorsLib.NO_PENDING_VALUE)); + vm.expectRevert(ErrorsLib.NoPendingValue.selector); vault.acceptCap(allMarkets[0].id()); } @@ -254,7 +254,7 @@ contract TimelockTest is BaseTest { vm.warp(block.timestamp + elapsed); vm.prank(RISK_MANAGER); - vm.expectRevert(bytes(ErrorsLib.TIMELOCK_NOT_ELAPSED)); + vm.expectRevert(ErrorsLib.TimelockNotElapsed.selector); vault.acceptCap(allMarkets[0].id()); } @@ -272,7 +272,7 @@ contract TimelockTest is BaseTest { vm.warp(block.timestamp + elapsed); - vm.expectRevert(bytes(ErrorsLib.TIMELOCK_EXPIRATION_EXCEEDED)); + vm.expectRevert(ErrorsLib.TimelockExpirationExceeded.selector); vault.acceptCap(allMarkets[0].id()); } diff --git a/test/forge/UrdTest.sol b/test/forge/UrdTest.sol index 992476ff..54ecaee1 100644 --- a/test/forge/UrdTest.sol +++ b/test/forge/UrdTest.sol @@ -33,7 +33,7 @@ contract UrdTest is BaseTest { address currentRewardsDistributor = vault.rewardsDistributor(); vm.prank(OWNER); - vm.expectRevert(bytes(ErrorsLib.ALREADY_SET)); + vm.expectRevert(ErrorsLib.AlreadySet.selector); vault.setRewardsDistributor(currentRewardsDistributor); }