Merge branch 'solc-0.7' into solc-0.8
This commit is contained in:
24
contracts/utils/Context.sol
Normal file
24
contracts/utils/Context.sol
Normal file
@ -0,0 +1,24 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
pragma solidity >=0.6.0 <0.9.0;
|
||||
|
||||
/*
|
||||
* @dev Provides information about the current execution context, including the
|
||||
* sender of the transaction and its data. While these are generally available
|
||||
* via msg.sender and msg.data, they should not be accessed in such a direct
|
||||
* manner, since when dealing with GSN meta-transactions the account sending and
|
||||
* paying for execution may not be the actual sender (as far as an application
|
||||
* is concerned).
|
||||
*
|
||||
* This contract is only required for intermediate, library-like contracts.
|
||||
*/
|
||||
abstract contract Context {
|
||||
function _msgSender() internal view virtual returns (address) {
|
||||
return msg.sender;
|
||||
}
|
||||
|
||||
function _msgData() internal view virtual returns (bytes memory) {
|
||||
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
|
||||
return msg.data;
|
||||
}
|
||||
}
|
||||
@ -143,6 +143,16 @@ library EnumerableMap {
|
||||
return (entry._key, entry._value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev Tries to returns the value associated with `key`. O(1).
|
||||
* Does not revert if `key` is not in the map.
|
||||
*/
|
||||
function _tryGet(Map storage map, bytes32 key) private view returns (bool, bytes32) {
|
||||
uint256 keyIndex = map._indexes[key];
|
||||
if (keyIndex == 0) return (false, 0); // Equivalent to contains(map, key)
|
||||
return (true, map._entries[keyIndex - 1]._value); // All indexes are 1-based
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev Returns the value associated with `key`. O(1).
|
||||
*
|
||||
@ -151,11 +161,16 @@ library EnumerableMap {
|
||||
* - `key` must be in the map.
|
||||
*/
|
||||
function _get(Map storage map, bytes32 key) private view returns (bytes32) {
|
||||
return _get(map, key, "EnumerableMap: nonexistent key");
|
||||
uint256 keyIndex = map._indexes[key];
|
||||
require(keyIndex != 0, "EnumerableMap: nonexistent key"); // Equivalent to contains(map, key)
|
||||
return map._entries[keyIndex - 1]._value; // All indexes are 1-based
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev Same as {_get}, with a custom error message when `key` is not in the map.
|
||||
*
|
||||
* CAUTION: This function is deprecated because it requires allocating memory for the error
|
||||
* message unnecessarily. For custom revert reasons use {_tryGet}.
|
||||
*/
|
||||
function _get(Map storage map, bytes32 key, string memory errorMessage) private view returns (bytes32) {
|
||||
uint256 keyIndex = map._indexes[key];
|
||||
@ -217,6 +232,15 @@ library EnumerableMap {
|
||||
return (uint256(key), address(uint160(uint256(value))));
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev Tries to returns the value associated with `key`. O(1).
|
||||
* Does not revert if `key` is not in the map.
|
||||
*/
|
||||
function tryGet(UintToAddressMap storage map, uint256 key) internal view returns (bool, address) {
|
||||
(bool success, bytes32 value) = _tryGet(map._inner, bytes32(key));
|
||||
return (success, address(uint160(uint256(value))));
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev Returns the value associated with `key`. O(1).
|
||||
*
|
||||
@ -230,6 +254,9 @@ library EnumerableMap {
|
||||
|
||||
/**
|
||||
* @dev Same as {get}, with a custom error message when `key` is not in the map.
|
||||
*
|
||||
* CAUTION: This function is deprecated because it requires allocating memory for the error
|
||||
* message unnecessarily. For custom revert reasons use {tryGet}.
|
||||
*/
|
||||
function get(UintToAddressMap storage map, uint256 key, string memory errorMessage) internal view returns (address) {
|
||||
return address(uint160(uint256(_get(map._inner, bytes32(key), errorMessage))));
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
pragma solidity ^0.8.0;
|
||||
|
||||
import "../GSN/Context.sol";
|
||||
import "./Context.sol";
|
||||
|
||||
/**
|
||||
* @dev Contract module which allows children to implement an emergency stop
|
||||
@ -36,7 +36,7 @@ abstract contract Pausable is Context {
|
||||
/**
|
||||
* @dev Returns true if the contract is paused, and false otherwise.
|
||||
*/
|
||||
function paused() public view returns (bool) {
|
||||
function paused() public view virtual returns (bool) {
|
||||
return _paused;
|
||||
}
|
||||
|
||||
@ -48,7 +48,7 @@ abstract contract Pausable is Context {
|
||||
* - The contract must not be paused.
|
||||
*/
|
||||
modifier whenNotPaused() {
|
||||
require(!_paused, "Pausable: paused");
|
||||
require(!paused(), "Pausable: paused");
|
||||
_;
|
||||
}
|
||||
|
||||
@ -60,7 +60,7 @@ abstract contract Pausable is Context {
|
||||
* - The contract must be paused.
|
||||
*/
|
||||
modifier whenPaused() {
|
||||
require(_paused, "Pausable: not paused");
|
||||
require(paused(), "Pausable: not paused");
|
||||
_;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user