Unverified Commit b7d60f2f by Nicolás Venturo Committed by GitHub

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.
parent 7fb90a15
......@@ -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.
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
/**
* @title Roles
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../Roles.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../Roles.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../Roles.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../Roles.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../Roles.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../Roles.sol";
import "./WhitelistAdminRole.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC20/IERC20.sol";
import "../math/SafeMath.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../../math/SafeMath.sol";
import "../validation/TimedCrowdsale.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../validation/TimedCrowdsale.sol";
import "../../math/SafeMath.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../../math/SafeMath.sol";
import "./FinalizableCrowdsale.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./RefundableCrowdsale.sol";
import "./PostDeliveryCrowdsale.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../Crowdsale.sol";
import "../../token/ERC20/IERC20.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../Crowdsale.sol";
import "../../token/ERC20/ERC20Mintable.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../validation/TimedCrowdsale.sol";
import "../../math/SafeMath.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../../math/SafeMath.sol";
import "../Crowdsale.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../../math/SafeMath.sol";
import "../Crowdsale.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../Crowdsale.sol";
import "../../lifecycle/Pausable.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../../math/SafeMath.sol";
import "../Crowdsale.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../Crowdsale.sol";
import "../../access/roles/WhitelistedRole.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
/**
* @title Elliptic curve signature operations
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
/**
* @title MerkleProof
......
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
}
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../../token/ERC20/IERC20.sol";
......
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_;
}
/**
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../access/roles/SignerRole.sol";
import "../cryptography/ECDSA.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
/**
* @title SignedSafeMath
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC20/SafeERC20.sol";
import "../ownership/Ownable.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../crowdsale/validation/CappedCrowdsale.sol";
import "../crowdsale/distribution/RefundableCrowdsale.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC20/ERC20.sol";
import "../token/ERC20/ERC20Detailed.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./IERC165.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
/**
* @title ERC165Checker
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
/**
* @title IERC165
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../access/roles/PauserRole.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
/**
* @title Math
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
/**
* @title SafeMath
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
contract Acknowledger {
event AcknowledgeFoo(uint256 a);
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../utils/Address.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC20/IERC20.sol";
import "../crowdsale/emission/AllowanceCrowdsale.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../utils/Arrays.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC20/IERC20.sol";
import "../crowdsale/validation/CappedCrowdsale.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../access/roles/CapperRole.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../payment/escrow/ConditionalEscrow.sol";
......
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();
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../crowdsale/Crowdsale.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../cryptography/ECDSA.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../../introspection/IERC165.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
contract ERC165NotSupported {
// solhint-disable-previous-line no-empty-blocks
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../introspection/ERC165Checker.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../introspection/ERC165.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC20/ERC20Burnable.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC20/ERC20.sol";
import "../token/ERC20/ERC20Detailed.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC20/ERC20Mintable.sol";
import "./MinterRoleMock.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC20/ERC20.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC20/ERC20Pausable.sol";
import "./PauserRoleMock.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC20/ERC20.sol";
import "../drafts/ERC1046/TokenMetadata.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC721/ERC721Full.sol";
import "../token/ERC721/ERC721Mintable.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC721/ERC721Full.sol";
import "../token/ERC721/ERC721Mintable.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC721/ERC721.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC721/ERC721Pausable.sol";
import "./PauserRoleMock.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC721/IERC721Receiver.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
contract EventEmitter {
event Argumentless();
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
contract Failer {
uint256[] private array;
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC20/IERC20.sol";
import "../crowdsale/distribution/FinalizableCrowdsale.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../crowdsale/price/IncreasingPriceCrowdsale.sol";
import "../math/SafeMath.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC20/IERC20.sol";
import "../crowdsale/validation/IndividuallyCappedCrowdsale.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../math/Math.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import { MerkleProof } from "../cryptography/MerkleProof.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC20/ERC20Mintable.sol";
import "../crowdsale/emission/MintedCrowdsale.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../access/roles/MinterRole.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../ownership/Ownable.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../ownership/Ownable.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC20/ERC20.sol";
import "../crowdsale/validation/PausableCrowdsale.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../lifecycle/Pausable.sol";
import "./PauserRoleMock.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../access/roles/PauserRole.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC20/IERC20.sol";
import "../crowdsale/distribution/PostDeliveryCrowdsale.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../payment/PullPayment.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
contract ReentrancyAttack {
function callSender(bytes4 data) public {
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../utils/ReentrancyGuard.sol";
import "./ReentrancyAttack.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC20/IERC20.sol";
import "../crowdsale/distribution/RefundableCrowdsale.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC20/IERC20.sol";
import "../crowdsale/distribution/RefundablePostDeliveryCrowdsale.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../access/Roles.sol";
......
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;
}
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../math/SafeMath.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../ownership/Secondary.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../drafts/SignatureBouncer.sol";
import "./SignerRoleMock.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../drafts/SignedSafeMath.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../access/roles/SignerRole.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC20/IERC20.sol";
import "../crowdsale/validation/TimedCrowdsale.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../access/roles/WhitelistAdminRole.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../token/ERC20/IERC20.sol";
import "../crowdsale/validation/WhitelistCrowdsale.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../access/roles/WhitelistedRole.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
/**
* @title Ownable
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
/**
* @title Secondary
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../math/SafeMath.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./escrow/Escrow.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./Escrow.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../../math/SafeMath.sol";
import "../../ownership/Secondary.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./ConditionalEscrow.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./IERC20.sol";
import "../../math/SafeMath.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./ERC20.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./ERC20Mintable.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./IERC20.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./ERC20.sol";
import "../../access/roles/MinterRole.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./ERC20.sol";
import "../../lifecycle/Pausable.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
/**
* @title ERC20 interface
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./IERC20.sol";
import "../../math/SafeMath.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./SafeERC20.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./IERC721.sol";
import "./IERC721Receiver.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./ERC721.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./IERC721Enumerable.sol";
import "./ERC721.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./ERC721.sol";
import "./ERC721Enumerable.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./IERC721Receiver.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./ERC721.sol";
import "./IERC721Metadata.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./ERC721Metadata.sol";
import "../../access/roles/MinterRole.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./ERC721.sol";
import "../../access/roles/MinterRole.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./ERC721.sol";
import "../../lifecycle/Pausable.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../../introspection/IERC165.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./IERC721.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./IERC721.sol";
import "./IERC721Enumerable.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "./IERC721.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
/**
* @title ERC721 token receiver interface
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
/**
* Utility library of inline functions on addresses
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
import "../math/Math.sol";
......
pragma solidity ^0.5.0;
pragma solidity ^0.5.2;
/**
* @title Helps contracts guard against reentrancy attacks.
......
const { BN } = require('openzeppelin-test-helpers');
const CounterImpl = artifacts.require('CounterImpl');
const CountersImpl = artifacts.require('CountersImpl');
const EXPECTED = [new BN(1), new BN(2), new BN(3), new BN(4)];
const KEY1 = web3.utils.sha3('key1');
const KEY2 = web3.utils.sha3('key2');
contract('Counter', function ([_, owner]) {
contract('Counters', function ([_, owner]) {
beforeEach(async function () {
this.mock = await CounterImpl.new({ from: owner });
this.mock = await CountersImpl.new({ from: owner });
});
context('custom key', async function () {
......
......@@ -16,7 +16,7 @@ module.exports = {
compilers: {
solc: {
version: '0.5.0',
version: '0.5.2',
},
},
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment