Fix tests regarding contract type conversion.

This commit is contained in:
chriseth 2018-07-12 20:07:16 +02:00 committed by Alex Beregszaszi
parent c8232d9759
commit b800bfb021
18 changed files with 37 additions and 36 deletions

View File

@ -379,7 +379,7 @@ In this example::
} }
contract A { contract A {
address child; B child;
function test() public { function test() public {
child = (new B).value(10)(); //construct a new B with 10 wei child = (new B).value(10)(); //construct a new B with 10 wei

View File

@ -901,7 +901,7 @@ for each ``_KeyType``, recursively.
function f() public returns (uint) { function f() public returns (uint) {
MappingExample m = new MappingExample(); MappingExample m = new MappingExample();
m.update(100); m.update(100);
return m.balances(this); return m.balances(address(this));
} }
} }

View File

@ -15,7 +15,7 @@ contract MultiSigWalletFactory is Factory {
public public
returns (address wallet) returns (address wallet)
{ {
wallet = new MultiSigWallet(_owners, _required); wallet = address(new MultiSigWallet(_owners, _required));
register(wallet); register(wallet);
} }
} }

View File

@ -16,7 +16,7 @@ contract MultiSigWalletWithDailyLimitFactory is Factory {
public public
returns (address wallet) returns (address wallet)
{ {
wallet = new MultiSigWalletWithDailyLimit(_owners, _required, _dailyLimit); wallet = address(new MultiSigWalletWithDailyLimit(_owners, _required, _dailyLimit));
register(wallet); register(wallet);
} }
} }

View File

@ -56,7 +56,7 @@ contract premium is module, safeMath {
require( dbAddress != address(0x00) ); require( dbAddress != address(0x00) );
db = ptokenDB(dbAddress); db = ptokenDB(dbAddress);
if ( ! forReplace ) { if ( ! forReplace ) {
require( db.replaceOwner(this) ); require( db.replaceOwner(address(this)) );
isICO = true; isICO = true;
icoAddr = icoContractAddr; icoAddr = icoContractAddr;
assert( genesisAddr.length == genesisValue.length ); assert( genesisAddr.length == genesisValue.length );

View File

@ -259,7 +259,7 @@ contract schelling is module, announcementTypes, schellingVars {
db = schellingDB(_db); db = schellingDB(_db);
super.registerModuleHandler(_moduleHandler); super.registerModuleHandler(_moduleHandler);
if ( ! _forReplace ) { if ( ! _forReplace ) {
require( db.replaceOwner(this) ); require( db.replaceOwner(address(this)) );
} }
} }
function configure(announcementType a, uint256 b) external returns(bool) { function configure(announcementType a, uint256 b) external returns(bool) {

View File

@ -71,7 +71,7 @@ contract token is safeMath, module, announcementTypes {
exchangeAddress = exchangeContractAddress; exchangeAddress = exchangeContractAddress;
isICO = ! forReplace; isICO = ! forReplace;
if ( ! forReplace ) { if ( ! forReplace ) {
require( db.replaceOwner(this) ); require( db.replaceOwner(address(this)) );
assert( genesisAddr.length == genesisValue.length ); assert( genesisAddr.length == genesisValue.length );
require( address(this).balance >= genesisAddr.length * 0.2 ether ); require( address(this).balance >= genesisAddr.length * 0.2 ether );
for ( uint256 a=0 ; a<genesisAddr.length ; a++ ) { for ( uint256 a=0 ; a<genesisAddr.length ; a++ ) {

View File

@ -54,7 +54,7 @@ contract Event {
public public
{ {
// Transfer collateral tokens to events contract // Transfer collateral tokens to events contract
require(collateralToken.transferFrom(msg.sender, this, collateralTokenCount)); require(collateralToken.transferFrom(msg.sender, address(this), collateralTokenCount));
// Issue new outcome tokens to sender // Issue new outcome tokens to sender
for (uint8 i = 0; i < outcomeTokens.length; i++) for (uint8 i = 0; i < outcomeTokens.length; i++)
outcomeTokens[i].issue(msg.sender, collateralTokenCount); outcomeTokens[i].issue(msg.sender, collateralTokenCount);

View File

@ -102,12 +102,12 @@ contract Campaign {
timedTransitions timedTransitions
atStage(Stages.AuctionStarted) atStage(Stages.AuctionStarted)
{ {
uint raisedAmount = eventContract.collateralToken().balanceOf(this); uint raisedAmount = eventContract.collateralToken().balanceOf(address(this));
uint maxAmount = funding.sub(raisedAmount); uint maxAmount = funding.sub(raisedAmount);
if (maxAmount < amount) if (maxAmount < amount)
amount = maxAmount; amount = maxAmount;
// Collect collateral tokens // Collect collateral tokens
require(eventContract.collateralToken().transferFrom(msg.sender, this, amount)); require(eventContract.collateralToken().transferFrom(msg.sender, address(this), amount));
contributions[msg.sender] = contributions[msg.sender].add(amount); contributions[msg.sender] = contributions[msg.sender].add(amount);
if (amount == maxAmount) if (amount == maxAmount)
stage = Stages.AuctionSuccessful; stage = Stages.AuctionSuccessful;
@ -138,7 +138,7 @@ contract Campaign {
returns (Market) returns (Market)
{ {
market = marketFactory.createMarket(eventContract, marketMaker, fee); market = marketFactory.createMarket(eventContract, marketMaker, fee);
require(eventContract.collateralToken().approve(market, funding)); require(eventContract.collateralToken().approve(address(market), funding));
market.fund(funding); market.fund(funding);
stage = Stages.MarketCreated; stage = Stages.MarketCreated;
emit MarketCreation(market); emit MarketCreation(market);
@ -156,7 +156,7 @@ contract Campaign {
market.close(); market.close();
market.withdrawFees(); market.withdrawFees();
eventContract.redeemWinnings(); eventContract.redeemWinnings();
finalBalance = eventContract.collateralToken().balanceOf(this); finalBalance = eventContract.collateralToken().balanceOf(address(this));
stage = Stages.MarketClosed; stage = Stages.MarketClosed;
emit MarketClosing(); emit MarketClosing();
} }

View File

@ -60,8 +60,8 @@ contract StandardMarket is Market {
atStage(Stages.MarketCreated) atStage(Stages.MarketCreated)
{ {
// Request collateral tokens and allow event contract to transfer them to buy all outcomes // Request collateral tokens and allow event contract to transfer them to buy all outcomes
require( eventContract.collateralToken().transferFrom(msg.sender, this, _funding) require( eventContract.collateralToken().transferFrom(msg.sender, address(this), _funding)
&& eventContract.collateralToken().approve(eventContract, _funding)); && eventContract.collateralToken().approve(address(eventContract), _funding));
eventContract.buyAllOutcomes(_funding); eventContract.buyAllOutcomes(_funding);
funding = _funding; funding = _funding;
stage = Stages.MarketFunded; stage = Stages.MarketFunded;
@ -76,7 +76,7 @@ contract StandardMarket is Market {
{ {
uint8 outcomeCount = eventContract.getOutcomeCount(); uint8 outcomeCount = eventContract.getOutcomeCount();
for (uint8 i = 0; i < outcomeCount; i++) for (uint8 i = 0; i < outcomeCount; i++)
require(eventContract.outcomeTokens(i).transfer(creator, eventContract.outcomeTokens(i).balanceOf(this))); require(eventContract.outcomeTokens(i).transfer(creator, eventContract.outcomeTokens(i).balanceOf(address(this))));
stage = Stages.MarketClosed; stage = Stages.MarketClosed;
emit MarketClosing(); emit MarketClosing();
} }
@ -88,7 +88,7 @@ contract StandardMarket is Market {
isCreator isCreator
returns (uint fees) returns (uint fees)
{ {
fees = eventContract.collateralToken().balanceOf(this); fees = eventContract.collateralToken().balanceOf(address(this));
// Transfer fees // Transfer fees
require(eventContract.collateralToken().transfer(creator, fees)); require(eventContract.collateralToken().transfer(creator, fees));
emit FeeWithdrawal(fees); emit FeeWithdrawal(fees);
@ -112,8 +112,8 @@ contract StandardMarket is Market {
// Check cost doesn't exceed max cost // Check cost doesn't exceed max cost
require(cost > 0 && cost <= maxCost); require(cost > 0 && cost <= maxCost);
// Transfer tokens to markets contract and buy all outcomes // Transfer tokens to markets contract and buy all outcomes
require( eventContract.collateralToken().transferFrom(msg.sender, this, cost) require( eventContract.collateralToken().transferFrom(msg.sender, address(this), cost)
&& eventContract.collateralToken().approve(eventContract, outcomeTokenCost)); && eventContract.collateralToken().approve(address(eventContract), outcomeTokenCost));
// Buy all outcomes // Buy all outcomes
eventContract.buyAllOutcomes(outcomeTokenCost); eventContract.buyAllOutcomes(outcomeTokenCost);
// Transfer outcome tokens to buyer // Transfer outcome tokens to buyer
@ -142,7 +142,7 @@ contract StandardMarket is Market {
// Check profit is not too low // Check profit is not too low
require(profit > 0 && profit >= minProfit); require(profit > 0 && profit >= minProfit);
// Transfer outcome tokens to markets contract to sell all outcomes // Transfer outcome tokens to markets contract to sell all outcomes
require(eventContract.outcomeTokens(outcomeTokenIndex).transferFrom(msg.sender, this, outcomeTokenCount)); require(eventContract.outcomeTokens(outcomeTokenIndex).transferFrom(msg.sender, address(this), outcomeTokenCount));
// Sell all outcomes // Sell all outcomes
eventContract.sellAllOutcomes(outcomeTokenProfit); eventContract.sellAllOutcomes(outcomeTokenProfit);
// Transfer profit to seller // Transfer profit to seller
@ -164,11 +164,11 @@ contract StandardMarket is Market {
returns (uint cost) returns (uint cost)
{ {
// Buy all outcomes // Buy all outcomes
require( eventContract.collateralToken().transferFrom(msg.sender, this, outcomeTokenCount) require( eventContract.collateralToken().transferFrom(msg.sender, address(this), outcomeTokenCount)
&& eventContract.collateralToken().approve(eventContract, outcomeTokenCount)); && eventContract.collateralToken().approve(address(eventContract), outcomeTokenCount));
eventContract.buyAllOutcomes(outcomeTokenCount); eventContract.buyAllOutcomes(outcomeTokenCount);
// Short sell selected outcome // Short sell selected outcome
eventContract.outcomeTokens(outcomeTokenIndex).approve(this, outcomeTokenCount); eventContract.outcomeTokens(outcomeTokenIndex).approve(address(this), outcomeTokenCount);
uint profit = this.sell(outcomeTokenIndex, outcomeTokenCount, minProfit); uint profit = this.sell(outcomeTokenIndex, outcomeTokenCount, minProfit);
cost = outcomeTokenCount - profit; cost = outcomeTokenCount - profit;
// Transfer outcome tokens to buyer // Transfer outcome tokens to buyer

View File

@ -95,14 +95,14 @@ contract FutarchyOracle is Oracle {
isCreator isCreator
{ {
// Buy all outcomes // Buy all outcomes
require( categoricalEvent.collateralToken().transferFrom(creator, this, funding) require( categoricalEvent.collateralToken().transferFrom(creator, address(this), funding)
&& categoricalEvent.collateralToken().approve(categoricalEvent, funding)); && categoricalEvent.collateralToken().approve(address(categoricalEvent), funding));
categoricalEvent.buyAllOutcomes(funding); categoricalEvent.buyAllOutcomes(funding);
// Fund each market with outcome tokens from categorical event // Fund each market with outcome tokens from categorical event
for (uint8 i = 0; i < markets.length; i++) { for (uint8 i = 0; i < markets.length; i++) {
Market market = markets[i]; Market market = markets[i];
// Approve funding for market // Approve funding for market
require(market.eventContract().collateralToken().approve(market, funding)); require(market.eventContract().collateralToken().approve(address(market), funding));
market.fund(funding); market.fund(funding);
} }
emit FutarchyFunding(funding); emit FutarchyFunding(funding);
@ -122,7 +122,7 @@ contract FutarchyOracle is Oracle {
market.withdrawFees(); market.withdrawFees();
// Redeem collateral token for winning outcome tokens and transfer collateral tokens to creator // Redeem collateral token for winning outcome tokens and transfer collateral tokens to creator
categoricalEvent.redeemWinnings(); categoricalEvent.redeemWinnings();
require(categoricalEvent.collateralToken().transfer(creator, categoricalEvent.collateralToken().balanceOf(this))); require(categoricalEvent.collateralToken().transfer(creator, categoricalEvent.collateralToken().balanceOf(address(this))));
emit FutarchyClosing(); emit FutarchyClosing();
} }

View File

@ -92,7 +92,7 @@ contract UltimateOracle is Oracle {
// There was no challenge yet or the challenge period expired // There was no challenge yet or the challenge period expired
require( !isChallenged() require( !isChallenged()
&& !isChallengePeriodOver() && !isChallengePeriodOver()
&& collateralToken.transferFrom(msg.sender, this, challengeAmount)); && collateralToken.transferFrom(msg.sender, address(this), challengeAmount));
outcomeAmounts[msg.sender][_outcome] = challengeAmount; outcomeAmounts[msg.sender][_outcome] = challengeAmount;
totalOutcomeAmounts[_outcome] = challengeAmount; totalOutcomeAmounts[_outcome] = challengeAmount;
totalAmount = challengeAmount; totalAmount = challengeAmount;
@ -113,7 +113,7 @@ contract UltimateOracle is Oracle {
// Outcome is challenged and front runner period is not over yet and tokens can be transferred // Outcome is challenged and front runner period is not over yet and tokens can be transferred
require( isChallenged() require( isChallenged()
&& !isFrontRunnerPeriodOver() && !isFrontRunnerPeriodOver()
&& collateralToken.transferFrom(msg.sender, this, amount)); && collateralToken.transferFrom(msg.sender, address(this), amount));
outcomeAmounts[msg.sender][_outcome] = outcomeAmounts[msg.sender][_outcome].add(amount); outcomeAmounts[msg.sender][_outcome] = outcomeAmounts[msg.sender][_outcome].add(amount);
totalOutcomeAmounts[_outcome] = totalOutcomeAmounts[_outcome].add(amount); totalOutcomeAmounts[_outcome] = totalOutcomeAmounts[_outcome].add(amount);
totalAmount = totalAmount.add(amount); totalAmount = totalAmount.add(amount);

View File

@ -31,8 +31,8 @@ contract Bounty is PullPayment, Destructible {
*/ */
function createTarget() public returns(Target) { function createTarget() public returns(Target) {
Target target = Target(deployContract()); Target target = Target(deployContract());
researchers[target] = msg.sender; researchers[address(target)] = msg.sender;
emit TargetCreated(target); emit TargetCreated(address(target));
return target; return target;
} }
@ -47,7 +47,7 @@ contract Bounty is PullPayment, Destructible {
* @param target contract * @param target contract
*/ */
function claim(Target target) public { function claim(Target target) public {
address researcher = researchers[target]; address researcher = researchers[address(target)];
if (researcher == address(0)) { if (researcher == address(0)) {
revert(); revert();
} }

View File

@ -26,7 +26,7 @@ contract TokenDestructible is Ownable {
// Transfer tokens to owner // Transfer tokens to owner
for(uint256 i = 0; i < tokens.length; i++) { for(uint256 i = 0; i < tokens.length; i++) {
ERC20Basic token = ERC20Basic(tokens[i]); ERC20Basic token = ERC20Basic(tokens[i]);
uint256 balance = token.balanceOf(this); uint256 balance = token.balanceOf(address(this));
token.transfer(owner, balance); token.transfer(owner, balance);
} }

View File

@ -28,7 +28,7 @@ contract HasNoTokens is Ownable {
*/ */
function reclaimToken(address tokenAddr) external onlyOwner { function reclaimToken(address tokenAddr) external onlyOwner {
ERC20Basic tokenInst = ERC20Basic(tokenAddr); ERC20Basic tokenInst = ERC20Basic(tokenAddr);
uint256 balance = tokenInst.balanceOf(this); uint256 balance = tokenInst.balanceOf(address(this));
tokenInst.transfer(owner, balance); tokenInst.transfer(owner, balance);
} }
} }

View File

@ -33,7 +33,7 @@ contract TokenTimelock {
require(msg.sender == beneficiary); require(msg.sender == beneficiary);
require(now >= releaseTime); require(now >= releaseTime);
uint amount = token.balanceOf(this); uint amount = token.balanceOf(address(this));
require(amount > 0); require(amount > 0);
token.transfer(beneficiary, amount); token.transfer(beneficiary, amount);

View File

@ -9428,7 +9428,7 @@ BOOST_AUTO_TEST_CASE(failed_create)
if (depth < 1024) if (depth < 1024)
return this.stack(depth - 1); return this.stack(depth - 1);
else else
return f(0); return address(f(0));
} }
} }
)"; )";

View File

@ -7,6 +7,7 @@ contract B {
} }
} }
contract A { contract A {
constructor(address) public {} constructor(address) internal {}
} }
// ---- // ----
// TypeError: (141-146): Contract with internal constructor cannot be created directly.