Skip to content

Commit 5b95cfa

Browse files
committed
Add MultiInit contract and update error name
Introduces the MultiInit contract for batch initialization using multiple addresses and calldata. Renames the AddressAndCalldataLengthDoNotMatch error to AddressAndCalldataLengthMismatch for consistency.
1 parent d99a359 commit 5b95cfa

2 files changed

Lines changed: 17 additions & 1 deletion

File tree

src/initializers/MultiInit.sol

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.20;
3+
4+
import {LibDiamond} from "@diamond/libraries/LibDiamond.sol";
5+
import {AddressAndCalldataLengthMismatch} from "@diamond/libraries/errors/DiamondErrors.sol";
6+
7+
contract MultiInit {
8+
function multiInit(address[] memory _initAddresses, bytes[] memory _initData) public {
9+
uint256 initAddressesLength = _initAddresses.length;
10+
if (initAddressesLength != _initData.length) revert AddressAndCalldataLengthMismatch();
11+
12+
for (uint256 i; i < initAddressesLength; ++i) {
13+
LibDiamond._initializeDiamondCut(_initAddresses[i], _initData[i]);
14+
}
15+
}
16+
}

src/libraries/errors/DiamondErrors.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,4 @@ error FunctionDoesNotExist(bytes4 functionSelector);
7474

7575
/// @notice Thrown when the length of the address array does not match the length of the calldata array.
7676
/// @dev Used in initializer logic to ensure one-to-one mapping between addresses and initialization calldata.
77-
error AddressAndCalldataLengthDoNotMatch();
77+
error AddressAndCalldataLengthMismatch();

0 commit comments

Comments
 (0)