-
Notifications
You must be signed in to change notification settings - Fork 59
Open
Labels
status:readyThis issue is ready to be worked onThis issue is ready to be worked ontype:bugSomething isn't workingSomething isn't working
Description
When having overloaded functions, it seems that the first function that matches the name comes first but parameters may have not been checked. Take for instance
/**
* @dev Revert with a standard message if `_msgSender()` is missing `role`.
* Overriding this function changes the behavior of the {onlyRole} modifier.
*
* Format of the revert message is described in {_checkRole}.
*
* _Available since v4.6._
*/
function _checkRole(bytes32 role) internal view virtual {
_checkRole(role, _msgSender());
}
/**
* @dev Revert with a standard message if `account` is missing `role`.
*
* The format of the revert reason is given by the following regular expression:
*
* /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/
*/
function _checkRole(bytes32 role, address account) internal view virtual {
if (!hasRole(role, account)) {
revert(
string(
abi.encodePacked(
"AccessControl: account ",
Strings.toHexString(account),
" is missing role ",
Strings.toHexString(uint256(role), 32)
)
)
);
}
}
When going to definition on the
function _checkRole(bytes32 role) internal view virtual {
_checkRole(role, _msgSender());
}
it leads to the same function (function _checkRole(bytes32 role)
) while the parameters does not match.
Metadata
Metadata
Assignees
Labels
status:readyThis issue is ready to be worked onThis issue is ready to be worked ontype:bugSomething isn't workingSomething isn't working
Type
Projects
Status
Todo