浏览代码

Fix warnings (#1606)

* Bump required compiler version to 0.5.2.

* Fix shadowed variable warning in ERC20Migrator.

* Rename Counter to Counters.

* Add dummy state variable to SafeERC20Helper.

* Update changelog entry.

* Fix CountersImpl name.

* Improve changelog entry.
Nicolás Venturo 6 年之前
父节点
当前提交
b7d60f2f9a
共有 100 个文件被更改,包括 134 次插入111 次删除
  1. 8 0
      CHANGELOG.md
  2. 1 1
      contracts/access/Roles.sol
  3. 1 1
      contracts/access/roles/CapperRole.sol
  4. 1 1
      contracts/access/roles/MinterRole.sol
  5. 1 1
      contracts/access/roles/PauserRole.sol
  6. 1 1
      contracts/access/roles/SignerRole.sol
  7. 1 1
      contracts/access/roles/WhitelistAdminRole.sol
  8. 1 1
      contracts/access/roles/WhitelistedRole.sol
  9. 1 1
      contracts/crowdsale/Crowdsale.sol
  10. 1 1
      contracts/crowdsale/distribution/FinalizableCrowdsale.sol
  11. 1 1
      contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol
  12. 1 1
      contracts/crowdsale/distribution/RefundableCrowdsale.sol
  13. 1 1
      contracts/crowdsale/distribution/RefundablePostDeliveryCrowdsale.sol
  14. 1 1
      contracts/crowdsale/emission/AllowanceCrowdsale.sol
  15. 1 1
      contracts/crowdsale/emission/MintedCrowdsale.sol
  16. 1 1
      contracts/crowdsale/price/IncreasingPriceCrowdsale.sol
  17. 1 1
      contracts/crowdsale/validation/CappedCrowdsale.sol
  18. 1 1
      contracts/crowdsale/validation/IndividuallyCappedCrowdsale.sol
  19. 1 1
      contracts/crowdsale/validation/PausableCrowdsale.sol
  20. 1 1
      contracts/crowdsale/validation/TimedCrowdsale.sol
  21. 1 1
      contracts/crowdsale/validation/WhitelistCrowdsale.sol
  22. 1 1
      contracts/cryptography/ECDSA.sol
  23. 1 1
      contracts/cryptography/MerkleProof.sol
  24. 4 4
      contracts/drafts/Counters.sol
  25. 1 1
      contracts/drafts/ERC1046/TokenMetadata.sol
  26. 6 6
      contracts/drafts/ERC20Migrator.sol
  27. 1 1
      contracts/drafts/SignatureBouncer.sol
  28. 1 1
      contracts/drafts/SignedSafeMath.sol
  29. 1 1
      contracts/drafts/TokenVesting.sol
  30. 1 1
      contracts/examples/SampleCrowdsale.sol
  31. 1 1
      contracts/examples/SimpleToken.sol
  32. 1 1
      contracts/introspection/ERC165.sol
  33. 1 1
      contracts/introspection/ERC165Checker.sol
  34. 1 1
      contracts/introspection/IERC165.sol
  35. 1 1
      contracts/lifecycle/Pausable.sol
  36. 1 1
      contracts/math/Math.sol
  37. 1 1
      contracts/math/SafeMath.sol
  38. 1 1
      contracts/mocks/Acknowledger.sol
  39. 1 1
      contracts/mocks/AddressImpl.sol
  40. 1 1
      contracts/mocks/AllowanceCrowdsaleImpl.sol
  41. 1 1
      contracts/mocks/ArraysImpl.sol
  42. 1 1
      contracts/mocks/CappedCrowdsaleImpl.sol
  43. 1 1
      contracts/mocks/CapperRoleMock.sol
  44. 1 1
      contracts/mocks/ConditionalEscrowMock.sol
  45. 5 5
      contracts/mocks/CountersImpl.sol
  46. 1 1
      contracts/mocks/CrowdsaleMock.sol
  47. 1 1
      contracts/mocks/ECDSAMock.sol
  48. 1 1
      contracts/mocks/ERC165/ERC165InterfacesSupported.sol
  49. 1 1
      contracts/mocks/ERC165/ERC165NotSupported.sol
  50. 1 1
      contracts/mocks/ERC165CheckerMock.sol
  51. 1 1
      contracts/mocks/ERC165Mock.sol
  52. 1 1
      contracts/mocks/ERC20BurnableMock.sol
  53. 1 1
      contracts/mocks/ERC20DetailedMock.sol
  54. 1 1
      contracts/mocks/ERC20MintableMock.sol
  55. 1 1
      contracts/mocks/ERC20Mock.sol
  56. 1 1
      contracts/mocks/ERC20PausableMock.sol
  57. 1 1
      contracts/mocks/ERC20WithMetadataMock.sol
  58. 1 1
      contracts/mocks/ERC721FullMock.sol
  59. 1 1
      contracts/mocks/ERC721MintableBurnableImpl.sol
  60. 1 1
      contracts/mocks/ERC721Mock.sol
  61. 1 1
      contracts/mocks/ERC721PausableMock.sol
  62. 1 1
      contracts/mocks/ERC721ReceiverMock.sol
  63. 1 1
      contracts/mocks/EventEmitter.sol
  64. 1 1
      contracts/mocks/Failer.sol
  65. 1 1
      contracts/mocks/FinalizableCrowdsaleImpl.sol
  66. 1 1
      contracts/mocks/IncreasingPriceCrowdsaleImpl.sol
  67. 1 1
      contracts/mocks/IndividuallyCappedCrowdsaleImpl.sol
  68. 1 1
      contracts/mocks/MathMock.sol
  69. 1 1
      contracts/mocks/MerkleProofWrapper.sol
  70. 1 1
      contracts/mocks/MintedCrowdsaleImpl.sol
  71. 1 1
      contracts/mocks/MinterRoleMock.sol
  72. 1 1
      contracts/mocks/OwnableInterfaceId.sol
  73. 1 1
      contracts/mocks/OwnableMock.sol
  74. 1 1
      contracts/mocks/PausableCrowdsaleImpl.sol
  75. 1 1
      contracts/mocks/PausableMock.sol
  76. 1 1
      contracts/mocks/PauserRoleMock.sol
  77. 1 1
      contracts/mocks/PostDeliveryCrowdsaleImpl.sol
  78. 1 1
      contracts/mocks/PullPaymentMock.sol
  79. 1 1
      contracts/mocks/ReentrancyAttack.sol
  80. 1 1
      contracts/mocks/ReentrancyMock.sol
  81. 1 1
      contracts/mocks/RefundableCrowdsaleImpl.sol
  82. 1 1
      contracts/mocks/RefundablePostDeliveryCrowdsaleImpl.sol
  83. 1 1
      contracts/mocks/RolesMock.sol
  84. 16 1
      contracts/mocks/SafeERC20Helper.sol
  85. 1 1
      contracts/mocks/SafeMathMock.sol
  86. 1 1
      contracts/mocks/SecondaryMock.sol
  87. 1 1
      contracts/mocks/SignatureBouncerMock.sol
  88. 1 1
      contracts/mocks/SignedSafeMathMock.sol
  89. 1 1
      contracts/mocks/SignerRoleMock.sol
  90. 1 1
      contracts/mocks/TimedCrowdsaleImpl.sol
  91. 1 1
      contracts/mocks/WhitelistAdminRoleMock.sol
  92. 1 1
      contracts/mocks/WhitelistCrowdsaleImpl.sol
  93. 1 1
      contracts/mocks/WhitelistedRoleMock.sol
  94. 1 1
      contracts/ownership/Ownable.sol
  95. 1 1
      contracts/ownership/Secondary.sol
  96. 1 1
      contracts/payment/PaymentSplitter.sol
  97. 1 1
      contracts/payment/PullPayment.sol
  98. 1 1
      contracts/payment/escrow/ConditionalEscrow.sol
  99. 1 1
      contracts/payment/escrow/Escrow.sol
  100. 1 1
      contracts/payment/escrow/RefundEscrow.sol

+ 8 - 0
CHANGELOG.md

@@ -2,6 +2,14 @@
 
 ## 2.2.0 (unreleased)
 
+### Improvements:
+ * Upgraded the minimum compiler version to v0.5.2: this removes many Solidity warnings that were false positives.
+ * Fixed variable shadowing issues.
+
+### Bugfixes:
+
+### Breaking changes:
+
 ## 2.1.1 (2019-04-01)
  * Version bump to avoid conflict in the npm registry.
 

+ 1 - 1
contracts/access/Roles.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 /**
  * @title Roles

+ 1 - 1
contracts/access/roles/CapperRole.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../Roles.sol";
 

+ 1 - 1
contracts/access/roles/MinterRole.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../Roles.sol";
 

+ 1 - 1
contracts/access/roles/PauserRole.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../Roles.sol";
 

+ 1 - 1
contracts/access/roles/SignerRole.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../Roles.sol";
 

+ 1 - 1
contracts/access/roles/WhitelistAdminRole.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../Roles.sol";
 

+ 1 - 1
contracts/access/roles/WhitelistedRole.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../Roles.sol";
 import "./WhitelistAdminRole.sol";

+ 1 - 1
contracts/crowdsale/Crowdsale.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/IERC20.sol";
 import "../math/SafeMath.sol";

+ 1 - 1
contracts/crowdsale/distribution/FinalizableCrowdsale.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../../math/SafeMath.sol";
 import "../validation/TimedCrowdsale.sol";

+ 1 - 1
contracts/crowdsale/distribution/PostDeliveryCrowdsale.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../validation/TimedCrowdsale.sol";
 import "../../math/SafeMath.sol";

+ 1 - 1
contracts/crowdsale/distribution/RefundableCrowdsale.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../../math/SafeMath.sol";
 import "./FinalizableCrowdsale.sol";

+ 1 - 1
contracts/crowdsale/distribution/RefundablePostDeliveryCrowdsale.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "./RefundableCrowdsale.sol";
 import "./PostDeliveryCrowdsale.sol";

+ 1 - 1
contracts/crowdsale/emission/AllowanceCrowdsale.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../Crowdsale.sol";
 import "../../token/ERC20/IERC20.sol";

+ 1 - 1
contracts/crowdsale/emission/MintedCrowdsale.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../Crowdsale.sol";
 import "../../token/ERC20/ERC20Mintable.sol";

+ 1 - 1
contracts/crowdsale/price/IncreasingPriceCrowdsale.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../validation/TimedCrowdsale.sol";
 import "../../math/SafeMath.sol";

+ 1 - 1
contracts/crowdsale/validation/CappedCrowdsale.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../../math/SafeMath.sol";
 import "../Crowdsale.sol";

+ 1 - 1
contracts/crowdsale/validation/IndividuallyCappedCrowdsale.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../../math/SafeMath.sol";
 import "../Crowdsale.sol";

+ 1 - 1
contracts/crowdsale/validation/PausableCrowdsale.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../Crowdsale.sol";
 import "../../lifecycle/Pausable.sol";

+ 1 - 1
contracts/crowdsale/validation/TimedCrowdsale.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../../math/SafeMath.sol";
 import "../Crowdsale.sol";

+ 1 - 1
contracts/crowdsale/validation/WhitelistCrowdsale.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 import "../Crowdsale.sol";
 import "../../access/roles/WhitelistedRole.sol";
 

+ 1 - 1
contracts/cryptography/ECDSA.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 /**
  * @title Elliptic curve signature operations

+ 1 - 1
contracts/cryptography/MerkleProof.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 /**
  * @title MerkleProof

+ 4 - 4
contracts/drafts/Counter.sol → contracts/drafts/Counters.sol

@@ -1,18 +1,18 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 /**
- * @title Counter
+ * @title Counters
  * @author Matt Condon (@shrugs)
  * @dev Provides an incrementing uint256 id acquired by the `Counter#next` getter.
  * Use this for issuing ERC721 ids or keeping track of request ids, anything you want, really.
  *
- * Include with `using Counter for Counter.Counter;`
+ * Include with `using Counters` for Counters.Counter;`
  * @notice Does not allow an Id of 0, which is popularly used to signify a null state in solidity.
  * Does not protect from overflows, but if you have 2^256 ids, you have other problems.
  * (But actually, it's generally impossible to increment a counter this many times, energy wise
  * so it's not something you have to worry about.)
  */
-library Counter {
+library Counters {
     struct Counter {
         uint256 current; // default: 0
     }

+ 1 - 1
contracts/drafts/ERC1046/TokenMetadata.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../../token/ERC20/IERC20.sol";
 

+ 6 - 6
contracts/drafts/ERC20Migrator.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/IERC20.sol";
 import "../token/ERC20/ERC20Mintable.sol";
@@ -65,14 +65,14 @@ contract ERC20Migrator {
     /**
      * @dev Begins the migration by setting which is the new token that will be
      * minted. This contract must be a minter for the new token.
-     * @param newToken the token that will be minted
+     * @param newToken_ the token that will be minted
      */
-    function beginMigration(ERC20Mintable newToken) public {
+    function beginMigration(ERC20Mintable newToken_) public {
         require(address(_newToken) == address(0));
-        require(address(newToken) != address(0));
-        require(newToken.isMinter(address(this)));
+        require(address(newToken_) != address(0));
+        require(newToken_.isMinter(address(this)));
 
-        _newToken = newToken;
+        _newToken = newToken_;
     }
 
     /**

+ 1 - 1
contracts/drafts/SignatureBouncer.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../access/roles/SignerRole.sol";
 import "../cryptography/ECDSA.sol";

+ 1 - 1
contracts/drafts/SignedSafeMath.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 /**
  * @title SignedSafeMath

+ 1 - 1
contracts/drafts/TokenVesting.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/SafeERC20.sol";
 import "../ownership/Ownable.sol";

+ 1 - 1
contracts/examples/SampleCrowdsale.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../crowdsale/validation/CappedCrowdsale.sol";
 import "../crowdsale/distribution/RefundableCrowdsale.sol";

+ 1 - 1
contracts/examples/SimpleToken.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/ERC20.sol";
 import "../token/ERC20/ERC20Detailed.sol";

+ 1 - 1
contracts/introspection/ERC165.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "./IERC165.sol";
 

+ 1 - 1
contracts/introspection/ERC165Checker.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 /**
  * @title ERC165Checker

+ 1 - 1
contracts/introspection/IERC165.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 /**
  * @title IERC165

+ 1 - 1
contracts/lifecycle/Pausable.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../access/roles/PauserRole.sol";
 

+ 1 - 1
contracts/math/Math.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 /**
  * @title Math

+ 1 - 1
contracts/math/SafeMath.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 /**
  * @title SafeMath

+ 1 - 1
contracts/mocks/Acknowledger.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 contract Acknowledger {
     event AcknowledgeFoo(uint256 a);

+ 1 - 1
contracts/mocks/AddressImpl.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../utils/Address.sol";
 

+ 1 - 1
contracts/mocks/AllowanceCrowdsaleImpl.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/IERC20.sol";
 import "../crowdsale/emission/AllowanceCrowdsale.sol";

+ 1 - 1
contracts/mocks/ArraysImpl.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../utils/Arrays.sol";
 

+ 1 - 1
contracts/mocks/CappedCrowdsaleImpl.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/IERC20.sol";
 import "../crowdsale/validation/CappedCrowdsale.sol";

+ 1 - 1
contracts/mocks/CapperRoleMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../access/roles/CapperRole.sol";
 

+ 1 - 1
contracts/mocks/ConditionalEscrowMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../payment/escrow/ConditionalEscrow.sol";
 

+ 5 - 5
contracts/mocks/CounterImpl.sol → contracts/mocks/CountersImpl.sol

@@ -1,14 +1,14 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
-import "../drafts/Counter.sol";
+import "../drafts/Counters.sol";
 
-contract CounterImpl {
-    using Counter for Counter.Counter;
+contract CountersImpl {
+    using Counters for Counters.Counter;
 
     uint256 public theId;
 
     // use whatever key you want to track your counters
-    mapping(string => Counter.Counter) private _counters;
+    mapping(string => Counters.Counter) private _counters;
 
     function doThing(string memory key) public returns (uint256) {
         theId = _counters[key].next();

+ 1 - 1
contracts/mocks/CrowdsaleMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../crowdsale/Crowdsale.sol";
 

+ 1 - 1
contracts/mocks/ECDSAMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../cryptography/ECDSA.sol";
 

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

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../../introspection/IERC165.sol";
 

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

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 contract ERC165NotSupported {
     // solhint-disable-previous-line no-empty-blocks

+ 1 - 1
contracts/mocks/ERC165CheckerMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../introspection/ERC165Checker.sol";
 

+ 1 - 1
contracts/mocks/ERC165Mock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../introspection/ERC165.sol";
 

+ 1 - 1
contracts/mocks/ERC20BurnableMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/ERC20Burnable.sol";
 

+ 1 - 1
contracts/mocks/ERC20DetailedMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/ERC20.sol";
 import "../token/ERC20/ERC20Detailed.sol";

+ 1 - 1
contracts/mocks/ERC20MintableMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/ERC20Mintable.sol";
 import "./MinterRoleMock.sol";

+ 1 - 1
contracts/mocks/ERC20Mock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/ERC20.sol";
 

+ 1 - 1
contracts/mocks/ERC20PausableMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/ERC20Pausable.sol";
 import "./PauserRoleMock.sol";

+ 1 - 1
contracts/mocks/ERC20WithMetadataMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/ERC20.sol";
 import "../drafts/ERC1046/TokenMetadata.sol";

+ 1 - 1
contracts/mocks/ERC721FullMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC721/ERC721Full.sol";
 import "../token/ERC721/ERC721Mintable.sol";

+ 1 - 1
contracts/mocks/ERC721MintableBurnableImpl.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC721/ERC721Full.sol";
 import "../token/ERC721/ERC721Mintable.sol";

+ 1 - 1
contracts/mocks/ERC721Mock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC721/ERC721.sol";
 

+ 1 - 1
contracts/mocks/ERC721PausableMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC721/ERC721Pausable.sol";
 import "./PauserRoleMock.sol";

+ 1 - 1
contracts/mocks/ERC721ReceiverMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC721/IERC721Receiver.sol";
 

+ 1 - 1
contracts/mocks/EventEmitter.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 contract EventEmitter {
     event Argumentless();

+ 1 - 1
contracts/mocks/Failer.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 contract Failer {
     uint256[] private array;

+ 1 - 1
contracts/mocks/FinalizableCrowdsaleImpl.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/IERC20.sol";
 import "../crowdsale/distribution/FinalizableCrowdsale.sol";

+ 1 - 1
contracts/mocks/IncreasingPriceCrowdsaleImpl.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../crowdsale/price/IncreasingPriceCrowdsale.sol";
 import "../math/SafeMath.sol";

+ 1 - 1
contracts/mocks/IndividuallyCappedCrowdsaleImpl.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/IERC20.sol";
 import "../crowdsale/validation/IndividuallyCappedCrowdsale.sol";

+ 1 - 1
contracts/mocks/MathMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../math/Math.sol";
 

+ 1 - 1
contracts/mocks/MerkleProofWrapper.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import { MerkleProof } from "../cryptography/MerkleProof.sol";
 

+ 1 - 1
contracts/mocks/MintedCrowdsaleImpl.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/ERC20Mintable.sol";
 import "../crowdsale/emission/MintedCrowdsale.sol";

+ 1 - 1
contracts/mocks/MinterRoleMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../access/roles/MinterRole.sol";
 

+ 1 - 1
contracts/mocks/OwnableInterfaceId.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../ownership/Ownable.sol";
 

+ 1 - 1
contracts/mocks/OwnableMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../ownership/Ownable.sol";
 

+ 1 - 1
contracts/mocks/PausableCrowdsaleImpl.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/ERC20.sol";
 import "../crowdsale/validation/PausableCrowdsale.sol";

+ 1 - 1
contracts/mocks/PausableMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../lifecycle/Pausable.sol";
 import "./PauserRoleMock.sol";

+ 1 - 1
contracts/mocks/PauserRoleMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../access/roles/PauserRole.sol";
 

+ 1 - 1
contracts/mocks/PostDeliveryCrowdsaleImpl.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/IERC20.sol";
 import "../crowdsale/distribution/PostDeliveryCrowdsale.sol";

+ 1 - 1
contracts/mocks/PullPaymentMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../payment/PullPayment.sol";
 

+ 1 - 1
contracts/mocks/ReentrancyAttack.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 contract ReentrancyAttack {
     function callSender(bytes4 data) public {

+ 1 - 1
contracts/mocks/ReentrancyMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../utils/ReentrancyGuard.sol";
 import "./ReentrancyAttack.sol";

+ 1 - 1
contracts/mocks/RefundableCrowdsaleImpl.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/IERC20.sol";
 import "../crowdsale/distribution/RefundableCrowdsale.sol";

+ 1 - 1
contracts/mocks/RefundablePostDeliveryCrowdsaleImpl.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/IERC20.sol";
 import "../crowdsale/distribution/RefundablePostDeliveryCrowdsale.sol";

+ 1 - 1
contracts/mocks/RolesMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../access/Roles.sol";
 

+ 16 - 1
contracts/mocks/SafeERC20Helper.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/IERC20.sol";
 import "../token/ERC20/SafeERC20.sol";
@@ -6,19 +6,27 @@ import "../token/ERC20/SafeERC20.sol";
 contract ERC20FailingMock {
     uint256 private _allowance;
 
+    // IERC20's functions are not pure, but these mock implementations are: to prevent Solidity from issuing warnings,
+    // we write to a dummy state variable.
+    uint256 private _dummy;
+
     function transfer(address, uint256) public returns (bool) {
+        _dummy = 0;
         return false;
     }
 
     function transferFrom(address, address, uint256) public returns (bool) {
+        _dummy = 0;
         return false;
     }
 
     function approve(address, uint256) public returns (bool) {
+        _dummy = 0;
         return false;
     }
 
     function allowance(address, address) public view returns (uint256) {
+        require(_dummy == 0);
         return 0;
     }
 }
@@ -26,15 +34,22 @@ contract ERC20FailingMock {
 contract ERC20SucceedingMock {
     uint256 private _allowance;
 
+    // IERC20's functions are not pure, but these mock implementations are: to prevent Solidity from issuing warnings,
+    // we write to a dummy state variable.
+    uint256 private _dummy;
+
     function transfer(address, uint256) public returns (bool) {
+        _dummy = 0;
         return true;
     }
 
     function transferFrom(address, address, uint256) public returns (bool) {
+        _dummy = 0;
         return true;
     }
 
     function approve(address, uint256) public returns (bool) {
+        _dummy = 0;
         return true;
     }
 

+ 1 - 1
contracts/mocks/SafeMathMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../math/SafeMath.sol";
 

+ 1 - 1
contracts/mocks/SecondaryMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../ownership/Secondary.sol";
 

+ 1 - 1
contracts/mocks/SignatureBouncerMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../drafts/SignatureBouncer.sol";
 import "./SignerRoleMock.sol";

+ 1 - 1
contracts/mocks/SignedSafeMathMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../drafts/SignedSafeMath.sol";
 

+ 1 - 1
contracts/mocks/SignerRoleMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../access/roles/SignerRole.sol";
 

+ 1 - 1
contracts/mocks/TimedCrowdsaleImpl.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/IERC20.sol";
 import "../crowdsale/validation/TimedCrowdsale.sol";

+ 1 - 1
contracts/mocks/WhitelistAdminRoleMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../access/roles/WhitelistAdminRole.sol";
 

+ 1 - 1
contracts/mocks/WhitelistCrowdsaleImpl.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../token/ERC20/IERC20.sol";
 import "../crowdsale/validation/WhitelistCrowdsale.sol";

+ 1 - 1
contracts/mocks/WhitelistedRoleMock.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../access/roles/WhitelistedRole.sol";
 

+ 1 - 1
contracts/ownership/Ownable.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 /**
  * @title Ownable

+ 1 - 1
contracts/ownership/Secondary.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 /**
  * @title Secondary

+ 1 - 1
contracts/payment/PaymentSplitter.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../math/SafeMath.sol";
 

+ 1 - 1
contracts/payment/PullPayment.sol

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "./escrow/Escrow.sol";
 

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

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "./Escrow.sol";
 

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

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "../../math/SafeMath.sol";
 import "../../ownership/Secondary.sol";

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

@@ -1,4 +1,4 @@
-pragma solidity ^0.5.0;
+pragma solidity ^0.5.2;
 
 import "./ConditionalEscrow.sol";
 

部分文件因为文件数量过多而无法显示