소스 검색

Support compiling with solc 0.7 (#2408)

Francisco Giordano 4 년 전
부모
커밋
90ed1af972
100개의 변경된 파일130개의 추가작업 그리고 125개의 파일을 삭제
  1. 3 2
      .solhint.json
  2. 1 1
      contracts/GSN/Context.sol
  3. 1 1
      contracts/GSN/GSNRecipient.sol
  4. 3 1
      contracts/GSN/GSNRecipientERC20Fee.sol
  5. 1 1
      contracts/GSN/GSNRecipientSignature.sol
  6. 1 1
      contracts/GSN/IRelayHub.sol
  7. 1 1
      contracts/GSN/IRelayRecipient.sol
  8. 1 1
      contracts/access/AccessControl.sol
  9. 2 2
      contracts/access/Ownable.sol
  10. 1 1
      contracts/access/TimelockController.sol
  11. 1 1
      contracts/cryptography/ECDSA.sol
  12. 1 1
      contracts/cryptography/MerkleProof.sol
  13. 2 2
      contracts/introspection/ERC165.sol
  14. 1 1
      contracts/introspection/ERC165Checker.sol
  15. 1 1
      contracts/introspection/ERC1820Implementer.sol
  16. 1 1
      contracts/introspection/IERC165.sol
  17. 1 1
      contracts/introspection/IERC1820Implementer.sol
  18. 3 3
      contracts/introspection/IERC1820Registry.sol
  19. 1 1
      contracts/math/Math.sol
  20. 1 1
      contracts/math/SafeMath.sol
  21. 1 1
      contracts/math/SignedSafeMath.sol
  22. 1 1
      contracts/mocks/AccessControlMock.sol
  23. 1 1
      contracts/mocks/AddressImpl.sol
  24. 1 1
      contracts/mocks/ArraysImpl.sol
  25. 1 1
      contracts/mocks/CallReceiverMock.sol
  26. 1 1
      contracts/mocks/ClashingImplementation.sol
  27. 1 1
      contracts/mocks/ConditionalEscrowMock.sol
  28. 1 1
      contracts/mocks/ContextMock.sol
  29. 1 1
      contracts/mocks/CountersImpl.sol
  30. 1 1
      contracts/mocks/Create2Impl.sol
  31. 1 1
      contracts/mocks/DummyImplementation.sol
  32. 1 1
      contracts/mocks/ECDSAMock.sol
  33. 1 1
      contracts/mocks/ERC1155BurnableMock.sol
  34. 1 1
      contracts/mocks/ERC1155Mock.sol
  35. 1 1
      contracts/mocks/ERC1155PausableMock.sol
  36. 1 1
      contracts/mocks/ERC1155ReceiverMock.sol
  37. 1 1
      contracts/mocks/ERC165/ERC165InterfacesSupported.sol
  38. 1 1
      contracts/mocks/ERC165/ERC165NotSupported.sol
  39. 1 1
      contracts/mocks/ERC165CheckerMock.sol
  40. 1 1
      contracts/mocks/ERC165Mock.sol
  41. 1 1
      contracts/mocks/ERC1820ImplementerMock.sol
  42. 1 1
      contracts/mocks/ERC20BurnableMock.sol
  43. 1 1
      contracts/mocks/ERC20CappedMock.sol
  44. 1 1
      contracts/mocks/ERC20DecimalsMock.sol
  45. 1 1
      contracts/mocks/ERC20Mock.sol
  46. 1 1
      contracts/mocks/ERC20PausableMock.sol
  47. 1 1
      contracts/mocks/ERC20SnapshotMock.sol
  48. 1 1
      contracts/mocks/ERC721BurnableMock.sol
  49. 1 1
      contracts/mocks/ERC721GSNRecipientMock.sol
  50. 1 1
      contracts/mocks/ERC721Mock.sol
  51. 1 1
      contracts/mocks/ERC721PausableMock.sol
  52. 1 1
      contracts/mocks/ERC721ReceiverMock.sol
  53. 1 1
      contracts/mocks/ERC777Mock.sol
  54. 1 1
      contracts/mocks/ERC777SenderRecipientMock.sol
  55. 1 1
      contracts/mocks/EnumerableMapMock.sol
  56. 1 1
      contracts/mocks/EnumerableSetMock.sol
  57. 1 1
      contracts/mocks/EtherReceiverMock.sol
  58. 1 1
      contracts/mocks/GSNRecipientERC20FeeMock.sol
  59. 1 1
      contracts/mocks/GSNRecipientMock.sol
  60. 1 1
      contracts/mocks/GSNRecipientSignatureMock.sol
  61. 1 1
      contracts/mocks/InitializableMock.sol
  62. 1 1
      contracts/mocks/MathMock.sol
  63. 1 1
      contracts/mocks/MerkleProofWrapper.sol
  64. 1 1
      contracts/mocks/MultipleInheritanceInitializableMocks.sol
  65. 1 1
      contracts/mocks/OwnableMock.sol
  66. 1 1
      contracts/mocks/PausableMock.sol
  67. 1 1
      contracts/mocks/PullPaymentMock.sol
  68. 1 1
      contracts/mocks/ReentrancyAttack.sol
  69. 1 1
      contracts/mocks/ReentrancyMock.sol
  70. 1 1
      contracts/mocks/RegressionImplementation.sol
  71. 1 1
      contracts/mocks/SafeCastMock.sol
  72. 1 1
      contracts/mocks/SafeERC20Helper.sol
  73. 1 1
      contracts/mocks/SafeMathMock.sol
  74. 1 1
      contracts/mocks/SignedSafeMathMock.sol
  75. 1 1
      contracts/mocks/SingleInheritanceInitializableMocks.sol
  76. 1 1
      contracts/mocks/StringsMock.sol
  77. 1 1
      contracts/package.json
  78. 4 4
      contracts/payment/PaymentSplitter.sol
  79. 2 2
      contracts/payment/PullPayment.sol
  80. 1 1
      contracts/payment/escrow/ConditionalEscrow.sol
  81. 1 1
      contracts/payment/escrow/Escrow.sol
  82. 5 5
      contracts/payment/escrow/RefundEscrow.sol
  83. 1 1
      contracts/presets/ERC1155PresetMinterPauser.sol
  84. 1 1
      contracts/presets/ERC20PresetMinterPauser.sol
  85. 1 1
      contracts/presets/ERC721PresetMinterPauserAutoId.sol
  86. 1 1
      contracts/proxy/Initializable.sol
  87. 1 1
      contracts/proxy/Proxy.sol
  88. 1 1
      contracts/proxy/ProxyAdmin.sol
  89. 7 7
      contracts/proxy/TransparentUpgradeableProxy.sol
  90. 1 1
      contracts/proxy/UpgradeableProxy.sol
  91. 3 3
      contracts/token/ERC1155/ERC1155.sol
  92. 1 1
      contracts/token/ERC1155/ERC1155Burnable.sol
  93. 1 1
      contracts/token/ERC1155/ERC1155Holder.sol
  94. 1 1
      contracts/token/ERC1155/ERC1155Pausable.sol
  95. 2 2
      contracts/token/ERC1155/ERC1155Receiver.sol
  96. 1 1
      contracts/token/ERC1155/IERC1155.sol
  97. 1 1
      contracts/token/ERC1155/IERC1155MetadataURI.sol
  98. 1 1
      contracts/token/ERC1155/IERC1155Receiver.sol
  99. 4 4
      contracts/token/ERC20/ERC20.sol
  100. 3 1
      contracts/token/ERC20/ERC20Burnable.sol

+ 3 - 2
.solhint.json

@@ -4,8 +4,9 @@
     "func-order": "off",
     "mark-callable-contracts": "off",
     "no-empty-blocks": "off",
-    "compiler-version": ["error", "^0.6.0"],
+    "compiler-version": "off",
     "private-vars-leading-underscore": "error",
-    "reason-string": "off"
+    "reason-string": "off",
+    "func-visibility": ["error", { "ignoreConstructors": true }]
   }
 }

+ 1 - 1
contracts/GSN/Context.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 /*
  * @dev Provides information about the current execution context, including the

+ 1 - 1
contracts/GSN/GSNRecipient.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "./IRelayRecipient.sol";
 import "./IRelayHub.sol";

+ 3 - 1
contracts/GSN/GSNRecipientERC20Fee.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "./GSNRecipient.sol";
 import "../math/SafeMath.sol";
@@ -86,6 +86,8 @@ contract GSNRecipientERC20Fee is GSNRecipient {
 
         // The maximum token charge is pre-charged from the user
         _token.safeTransferFrom(from, address(this), maxPossibleCharge);
+
+        return 0;
     }
 
     /**

+ 1 - 1
contracts/GSN/GSNRecipientSignature.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "./GSNRecipient.sol";
 import "../cryptography/ECDSA.sol";

+ 1 - 1
contracts/GSN/IRelayHub.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 /**
  * @dev Interface for `RelayHub`, the core contract of the GSN. Users should not need to interact with this contract

+ 1 - 1
contracts/GSN/IRelayRecipient.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 /**
  * @dev Base interface for a contract that will be called via the GSN from {IRelayHub}.

+ 1 - 1
contracts/access/AccessControl.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../utils/EnumerableSet.sol";
 import "../utils/Address.sol";

+ 2 - 2
contracts/access/Ownable.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../GSN/Context.sol";
 /**
@@ -15,7 +15,7 @@ import "../GSN/Context.sol";
  * `onlyOwner`, which can be applied to your functions to restrict their use to
  * the owner.
  */
-contract Ownable is Context {
+abstract contract Ownable is Context {
     address private _owner;
 
     event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

+ 1 - 1
contracts/access/TimelockController.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.9 <0.8.0;
 pragma experimental ABIEncoderV2;
 
 import "./../math/SafeMath.sol";

+ 1 - 1
contracts/cryptography/ECDSA.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 /**
  * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.

+ 1 - 1
contracts/cryptography/MerkleProof.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 /**
  * @dev These functions deal with verification of Merkle trees (hash trees),

+ 2 - 2
contracts/introspection/ERC165.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "./IERC165.sol";
 
@@ -10,7 +10,7 @@ import "./IERC165.sol";
  * Contracts may inherit from this and call {_registerInterface} to declare
  * their support of an interface.
  */
-contract ERC165 is IERC165 {
+abstract contract ERC165 is IERC165 {
     /*
      * bytes4(keccak256('supportsInterface(bytes4)')) == 0x01ffc9a7
      */

+ 1 - 1
contracts/introspection/ERC165Checker.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.2;
+pragma solidity >=0.6.2 <0.8.0;
 
 /**
  * @dev Library used to query support of an interface declared via {IERC165}.

+ 1 - 1
contracts/introspection/ERC1820Implementer.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "./IERC1820Implementer.sol";
 

+ 1 - 1
contracts/introspection/IERC165.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 /**
  * @dev Interface of the ERC165 standard, as defined in the

+ 1 - 1
contracts/introspection/IERC1820Implementer.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 /**
  * @dev Interface for an ERC1820 implementer, as defined in the

+ 3 - 3
contracts/introspection/IERC1820Registry.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 /**
  * @dev Interface of the global ERC1820 Registry, as defined in the
@@ -59,7 +59,7 @@ interface IERC1820Registry {
      * queried for support, unless `implementer` is the caller. See
      * {IERC1820Implementer-canImplementInterfaceForAddress}.
      */
-    function setInterfaceImplementer(address account, bytes32 interfaceHash, address implementer) external;
+    function setInterfaceImplementer(address account, bytes32 _interfaceHash, address implementer) external;
 
     /**
      * @dev Returns the implementer of `interfaceHash` for `account`. If no such
@@ -70,7 +70,7 @@ interface IERC1820Registry {
      *
      * `account` being the zero address is an alias for the caller's address.
      */
-    function getInterfaceImplementer(address account, bytes32 interfaceHash) external view returns (address);
+    function getInterfaceImplementer(address account, bytes32 _interfaceHash) external view returns (address);
 
     /**
      * @dev Returns the interface hash for an `interfaceName`, as defined in the

+ 1 - 1
contracts/math/Math.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 /**
  * @dev Standard math utilities missing in the Solidity language.

+ 1 - 1
contracts/math/SafeMath.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 /**
  * @dev Wrappers over Solidity's arithmetic operations with added overflow

+ 1 - 1
contracts/math/SignedSafeMath.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 /**
  * @title SignedSafeMath

+ 1 - 1
contracts/mocks/AccessControlMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../access/AccessControl.sol";
 

+ 1 - 1
contracts/mocks/AddressImpl.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../utils/Address.sol";
 

+ 1 - 1
contracts/mocks/ArraysImpl.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../utils/Arrays.sol";
 

+ 1 - 1
contracts/mocks/CallReceiverMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 contract CallReceiverMock {
     string public sharedAnswer;

+ 1 - 1
contracts/mocks/ClashingImplementation.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 
 /**

+ 1 - 1
contracts/mocks/ConditionalEscrowMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../payment/escrow/ConditionalEscrow.sol";
 

+ 1 - 1
contracts/mocks/ContextMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../GSN/Context.sol";
 

+ 1 - 1
contracts/mocks/CountersImpl.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../utils/Counters.sol";
 

+ 1 - 1
contracts/mocks/Create2Impl.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../utils/Create2.sol";
 import "../introspection/ERC1820Implementer.sol";

+ 1 - 1
contracts/mocks/DummyImplementation.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 abstract contract Impl {
   function version() public pure virtual returns (string memory); 

+ 1 - 1
contracts/mocks/ECDSAMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../cryptography/ECDSA.sol";
 

+ 1 - 1
contracts/mocks/ERC1155BurnableMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../token/ERC1155/ERC1155Burnable.sol";
 

+ 1 - 1
contracts/mocks/ERC1155Mock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../token/ERC1155/ERC1155.sol";
 

+ 1 - 1
contracts/mocks/ERC1155PausableMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "./ERC1155Mock.sol";
 import "../token/ERC1155/ERC1155Pausable.sol";

+ 1 - 1
contracts/mocks/ERC1155ReceiverMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../token/ERC1155/IERC1155Receiver.sol";
 import "./ERC165Mock.sol";

+ 1 - 1
contracts/mocks/ERC165/ERC165InterfacesSupported.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../../introspection/IERC165.sol";
 

+ 1 - 1
contracts/mocks/ERC165/ERC165NotSupported.sol

@@ -1,5 +1,5 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 contract ERC165NotSupported { }

+ 1 - 1
contracts/mocks/ERC165CheckerMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../introspection/ERC165Checker.sol";
 

+ 1 - 1
contracts/mocks/ERC165Mock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../introspection/ERC165.sol";
 

+ 1 - 1
contracts/mocks/ERC1820ImplementerMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../introspection/ERC1820Implementer.sol";
 

+ 1 - 1
contracts/mocks/ERC20BurnableMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../token/ERC20/ERC20Burnable.sol";
 

+ 1 - 1
contracts/mocks/ERC20CappedMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../token/ERC20/ERC20Capped.sol";
 

+ 1 - 1
contracts/mocks/ERC20DecimalsMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../token/ERC20/ERC20.sol";
 

+ 1 - 1
contracts/mocks/ERC20Mock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../token/ERC20/ERC20.sol";
 

+ 1 - 1
contracts/mocks/ERC20PausableMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../token/ERC20/ERC20Pausable.sol";
 

+ 1 - 1
contracts/mocks/ERC20SnapshotMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../token/ERC20/ERC20Snapshot.sol";
 

+ 1 - 1
contracts/mocks/ERC721BurnableMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../token/ERC721/ERC721Burnable.sol";
 

+ 1 - 1
contracts/mocks/ERC721GSNRecipientMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../token/ERC721/ERC721.sol";
 import "../GSN/GSNRecipient.sol";

+ 1 - 1
contracts/mocks/ERC721Mock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../token/ERC721/ERC721.sol";
 

+ 1 - 1
contracts/mocks/ERC721PausableMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../token/ERC721/ERC721Pausable.sol";
 

+ 1 - 1
contracts/mocks/ERC721ReceiverMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../token/ERC721/IERC721Receiver.sol";
 

+ 1 - 1
contracts/mocks/ERC777Mock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../GSN/Context.sol";
 import "../token/ERC777/ERC777.sol";

+ 1 - 1
contracts/mocks/ERC777SenderRecipientMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../GSN/Context.sol";
 import "../token/ERC777/IERC777.sol";

+ 1 - 1
contracts/mocks/EnumerableMapMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../utils/EnumerableMap.sol";
 

+ 1 - 1
contracts/mocks/EnumerableSetMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../utils/EnumerableSet.sol";
 

+ 1 - 1
contracts/mocks/EtherReceiverMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 contract EtherReceiverMock {
     bool private _acceptEther;

+ 1 - 1
contracts/mocks/GSNRecipientERC20FeeMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../GSN/GSNRecipient.sol";
 import "../GSN/GSNRecipientERC20Fee.sol";

+ 1 - 1
contracts/mocks/GSNRecipientMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "./ContextMock.sol";
 import "../GSN/GSNRecipient.sol";

+ 1 - 1
contracts/mocks/GSNRecipientSignatureMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../GSN/GSNRecipient.sol";
 import "../GSN/GSNRecipientSignature.sol";

+ 1 - 1
contracts/mocks/InitializableMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../proxy/Initializable.sol";
 

+ 1 - 1
contracts/mocks/MathMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../math/Math.sol";
 

+ 1 - 1
contracts/mocks/MerkleProofWrapper.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import { MerkleProof } from "../cryptography/MerkleProof.sol";
 

+ 1 - 1
contracts/mocks/MultipleInheritanceInitializableMocks.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../proxy/Initializable.sol";
 

+ 1 - 1
contracts/mocks/OwnableMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../access/Ownable.sol";
 

+ 1 - 1
contracts/mocks/PausableMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../utils/Pausable.sol";
 

+ 1 - 1
contracts/mocks/PullPaymentMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../payment/PullPayment.sol";
 

+ 1 - 1
contracts/mocks/ReentrancyAttack.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../GSN/Context.sol";
 contract ReentrancyAttack is Context {

+ 1 - 1
contracts/mocks/ReentrancyMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../utils/ReentrancyGuard.sol";
 import "./ReentrancyAttack.sol";

+ 1 - 1
contracts/mocks/RegressionImplementation.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../proxy/Initializable.sol";
 

+ 1 - 1
contracts/mocks/SafeCastMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../utils/SafeCast.sol";
 

+ 1 - 1
contracts/mocks/SafeERC20Helper.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../GSN/Context.sol";
 import "../token/ERC20/IERC20.sol";

+ 1 - 1
contracts/mocks/SafeMathMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../math/SafeMath.sol";
 

+ 1 - 1
contracts/mocks/SignedSafeMathMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../math/SignedSafeMath.sol";
 

+ 1 - 1
contracts/mocks/SingleInheritanceInitializableMocks.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../proxy/Initializable.sol";
 

+ 1 - 1
contracts/mocks/StringsMock.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../utils/Strings.sol";
 

+ 1 - 1
contracts/package.json

@@ -1,7 +1,7 @@
 {
   "name": "@openzeppelin/contracts",
   "description": "Secure Smart Contract library for Solidity",
-  "version": "3.2.0",
+  "version": "3.2.2-solc-0.7",
   "files": [
     "**/*.sol",
     "/build/contracts/*.json",

+ 4 - 4
contracts/payment/PaymentSplitter.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../GSN/Context.sol";
 import "../math/SafeMath.sol";
@@ -39,13 +39,13 @@ contract PaymentSplitter is Context {
      * All addresses in `payees` must be non-zero. Both arrays must have the same non-zero length, and there must be no
      * duplicates in `payees`.
      */
-    constructor (address[] memory payees, uint256[] memory shares) public payable {
+    constructor (address[] memory payees, uint256[] memory shares_) public payable {
         // solhint-disable-next-line max-line-length
-        require(payees.length == shares.length, "PaymentSplitter: payees and shares length mismatch");
+        require(payees.length == shares_.length, "PaymentSplitter: payees and shares length mismatch");
         require(payees.length > 0, "PaymentSplitter: no payees");
 
         for (uint256 i = 0; i < payees.length; i++) {
-            _addPayee(payees[i], shares[i]);
+            _addPayee(payees[i], shares_[i]);
         }
     }
 

+ 2 - 2
contracts/payment/PullPayment.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.2;
+pragma solidity >=0.6.2 <0.8.0;
 
 import "./escrow/Escrow.sol";
 
@@ -22,7 +22,7 @@ import "./escrow/Escrow.sol";
  * instead of Solidity's `transfer` function. Payees can query their due
  * payments with {payments}, and retrieve them with {withdrawPayments}.
  */
-contract PullPayment {
+abstract contract PullPayment {
     Escrow private _escrow;
 
     constructor () internal {

+ 1 - 1
contracts/payment/escrow/ConditionalEscrow.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "./Escrow.sol";
 

+ 1 - 1
contracts/payment/escrow/Escrow.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../../math/SafeMath.sol";
 import "../../access/Ownable.sol";

+ 5 - 5
contracts/payment/escrow/RefundEscrow.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "./ConditionalEscrow.sol";
 
@@ -25,11 +25,11 @@ contract RefundEscrow is ConditionalEscrow {
 
     /**
      * @dev Constructor.
-     * @param beneficiary The beneficiary of the deposits.
+     * @param beneficiary_ The beneficiary of the deposits.
      */
-    constructor (address payable beneficiary) public {
-        require(beneficiary != address(0), "RefundEscrow: beneficiary is the zero address");
-        _beneficiary = beneficiary;
+    constructor (address payable beneficiary_) public {
+        require(beneficiary_ != address(0), "RefundEscrow: beneficiary is the zero address");
+        _beneficiary = beneficiary_;
         _state = State.Active;
     }
 

+ 1 - 1
contracts/presets/ERC1155PresetMinterPauser.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../access/AccessControl.sol";
 import "../GSN/Context.sol";

+ 1 - 1
contracts/presets/ERC20PresetMinterPauser.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../access/AccessControl.sol";
 import "../GSN/Context.sol";

+ 1 - 1
contracts/presets/ERC721PresetMinterPauserAutoId.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../access/AccessControl.sol";
 import "../GSN/Context.sol";

+ 1 - 1
contracts/proxy/Initializable.sol

@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: MIT
 
 // solhint-disable-next-line compiler-version
-pragma solidity >=0.4.24 <0.7.0;
+pragma solidity >=0.4.24 <0.8.0;
 
 
 /**

+ 1 - 1
contracts/proxy/Proxy.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 /**
  * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM

+ 1 - 1
contracts/proxy/ProxyAdmin.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../access/Ownable.sol";
 import "./TransparentUpgradeableProxy.sol";

+ 7 - 7
contracts/proxy/TransparentUpgradeableProxy.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "./UpgradeableProxy.sol";
 
@@ -30,9 +30,9 @@ contract TransparentUpgradeableProxy is UpgradeableProxy {
      * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and
      * optionally initialized with `_data` as explained in {UpgradeableProxy-constructor}.
      */
-    constructor(address _logic, address _admin, bytes memory _data) public payable UpgradeableProxy(_logic, _data) {
+    constructor(address _logic, address admin_, bytes memory _data) public payable UpgradeableProxy(_logic, _data) {
         assert(_ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1));
-        _setAdmin(_admin);
+        _setAdmin(admin_);
     }
 
     /**
@@ -67,8 +67,8 @@ contract TransparentUpgradeableProxy is UpgradeableProxy {
      * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
      * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`
      */
-    function admin() external ifAdmin returns (address) {
-        return _admin();
+    function admin() external ifAdmin returns (address admin_) {
+        admin_ = _admin();
     }
 
     /**
@@ -80,8 +80,8 @@ contract TransparentUpgradeableProxy is UpgradeableProxy {
      * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
      * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`
      */
-    function implementation() external ifAdmin returns (address) {
-        return _implementation();
+    function implementation() external ifAdmin returns (address implementation_) {
+        implementation_ = _implementation();
     }
 
     /**

+ 1 - 1
contracts/proxy/UpgradeableProxy.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "./Proxy.sol";
 import "../utils/Address.sol";

+ 3 - 3
contracts/token/ERC1155/ERC1155.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "./IERC1155.sol";
 import "./IERC1155MetadataURI.sol";
@@ -52,8 +52,8 @@ contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {
     /**
      * @dev See {_setURI}.
      */
-    constructor (string memory uri) public {
-        _setURI(uri);
+    constructor (string memory uri_) public {
+        _setURI(uri_);
 
         // register the supported interfaces to conform to ERC1155 via ERC165
         _registerInterface(_INTERFACE_ID_ERC1155);

+ 1 - 1
contracts/token/ERC1155/ERC1155Burnable.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "./ERC1155.sol";
 

+ 1 - 1
contracts/token/ERC1155/ERC1155Holder.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "./ERC1155Receiver.sol";
 

+ 1 - 1
contracts/token/ERC1155/ERC1155Pausable.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "./ERC1155.sol";
 import "../../utils/Pausable.sol";

+ 2 - 2
contracts/token/ERC1155/ERC1155Receiver.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "./IERC1155Receiver.sol";
 import "../../introspection/ERC165.sol";
@@ -9,7 +9,7 @@ import "../../introspection/ERC165.sol";
  * @dev _Available since v3.1._
  */
 abstract contract ERC1155Receiver is ERC165, IERC1155Receiver {
-    constructor() public {
+    constructor() internal {
         _registerInterface(
             ERC1155Receiver(0).onERC1155Received.selector ^
             ERC1155Receiver(0).onERC1155BatchReceived.selector

+ 1 - 1
contracts/token/ERC1155/IERC1155.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.2;
+pragma solidity >=0.6.2 <0.8.0;
 
 import "../../introspection/IERC165.sol";
 

+ 1 - 1
contracts/token/ERC1155/IERC1155MetadataURI.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.2;
+pragma solidity >=0.6.2 <0.8.0;
 
 import "./IERC1155.sol";
 

+ 1 - 1
contracts/token/ERC1155/IERC1155Receiver.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../../introspection/IERC165.sol";
 

+ 4 - 4
contracts/token/ERC20/ERC20.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../../GSN/Context.sol";
 import "./IERC20.sol";
@@ -52,9 +52,9 @@ contract ERC20 is Context, IERC20 {
      * All three of these values are immutable: they can only be set once during
      * construction.
      */
-    constructor (string memory name, string memory symbol) public {
-        _name = name;
-        _symbol = symbol;
+    constructor (string memory name_, string memory symbol_) public {
+        _name = name_;
+        _symbol = symbol_;
         _decimals = 18;
     }
 

+ 3 - 1
contracts/token/ERC20/ERC20Burnable.sol

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: MIT
 
-pragma solidity ^0.6.0;
+pragma solidity >=0.6.0 <0.8.0;
 
 import "../../GSN/Context.sol";
 import "./ERC20.sol";
@@ -11,6 +11,8 @@ import "./ERC20.sol";
  * recognized off-chain (via event analysis).
  */
 abstract contract ERC20Burnable is Context, ERC20 {
+    using SafeMath for uint256;
+
     /**
      * @dev Destroys `amount` tokens from the caller.
      *

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.