mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Tests after making all explicit address conversions as non-payable
This commit is contained in:
parent
f30c7cbac8
commit
7438c4dc16
@ -438,7 +438,7 @@ operations as long as there is enough gas passed on to it.
|
|||||||
// results in test.x becoming == 1 and test.y becoming 1.
|
// results in test.x becoming == 1 and test.y becoming 1.
|
||||||
|
|
||||||
// If someone sends Ether to that contract, the receive function in TestPayable will be called.
|
// If someone sends Ether to that contract, the receive function in TestPayable will be called.
|
||||||
require(address(test).send(2 ether));
|
require(payable(test).send(2 ether));
|
||||||
// results in test.x becoming == 2 and test.y becoming 2 ether.
|
// results in test.x becoming == 2 and test.y becoming 2 ether.
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -90,10 +90,10 @@ contract module {
|
|||||||
@newModuleAddress New module handler address
|
@newModuleAddress New module handler address
|
||||||
*/
|
*/
|
||||||
require( moduleStatus != status.New && moduleStatus != status.Disconnected);
|
require( moduleStatus != status.New && moduleStatus != status.Disconnected);
|
||||||
(bool _success, uint256 _balance) = abstractModuleHandler(moduleHandlerAddress).balanceOf(address(this));
|
(bool _success, uint256 _balance) = abstractModuleHandler(moduleHandlerAddress).balanceOf(payable(this));
|
||||||
require( _success );
|
require( _success );
|
||||||
if ( _balance > 0 ) {
|
if ( _balance > 0 ) {
|
||||||
require( abstractModuleHandler(moduleHandlerAddress).transfer(address(this), newModuleAddress, _balance, false) );
|
require( abstractModuleHandler(moduleHandlerAddress).transfer(payable(this), newModuleAddress, _balance, false) );
|
||||||
}
|
}
|
||||||
if ( address(this).balance > 0 ) {
|
if ( address(this).balance > 0 ) {
|
||||||
require( newModuleAddress.send(address(this).balance) );
|
require( newModuleAddress.send(address(this).balance) );
|
||||||
|
@ -724,11 +724,11 @@ contract DAO is DAOInterface, Token, TokenCreation {
|
|||||||
reward = address(DAOrewardAccount).balance < reward ? address(DAOrewardAccount).balance : reward;
|
reward = address(DAOrewardAccount).balance < reward ? address(DAOrewardAccount).balance : reward;
|
||||||
|
|
||||||
if(_toMembers) {
|
if(_toMembers) {
|
||||||
if (!DAOrewardAccount.payOut(address(dao.rewardAccount()), reward))
|
if (!DAOrewardAccount.payOut(payable(dao.rewardAccount()), reward))
|
||||||
revert();
|
revert();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (!DAOrewardAccount.payOut(address(dao), reward))
|
if (!DAOrewardAccount.payOut(payable(dao), reward))
|
||||||
revert();
|
revert();
|
||||||
}
|
}
|
||||||
DAOpaidOut[msg.sender] += reward;
|
DAOpaidOut[msg.sender] += reward;
|
||||||
|
@ -124,7 +124,7 @@ override returns (bool success) {
|
|||||||
if (block.timestamp > closingTime && !isFueled) {
|
if (block.timestamp > closingTime && !isFueled) {
|
||||||
// Get extraBalance - will only succeed when called for the first time
|
// Get extraBalance - will only succeed when called for the first time
|
||||||
if (address(extraBalance).balance >= extraBalance.accumulatedInput())
|
if (address(extraBalance).balance >= extraBalance.accumulatedInput())
|
||||||
extraBalance.payOut(address(this), extraBalance.accumulatedInput());
|
extraBalance.payOut(payable(this), extraBalance.accumulatedInput());
|
||||||
|
|
||||||
// Execute refund
|
// Execute refund
|
||||||
(bool success,) = msg.sender.call{value: weiGiven[msg.sender]}("");
|
(bool success,) = msg.sender.call{value: weiGiven[msg.sender]}("");
|
||||||
|
@ -1328,7 +1328,7 @@ BOOST_AUTO_TEST_CASE(contracts_as_addresses)
|
|||||||
}
|
}
|
||||||
contract test {
|
contract test {
|
||||||
helper h;
|
helper h;
|
||||||
constructor() payable { h = new helper(); address(h).send(5); }
|
constructor() payable { h = new helper(); payable(h).send(5); }
|
||||||
function getBalance() public returns (uint256 myBalance, uint256 helperBalance) {
|
function getBalance() public returns (uint256 myBalance, uint256 helperBalance) {
|
||||||
myBalance = address(this).balance;
|
myBalance = address(this).balance;
|
||||||
helperBalance = address(h).balance;
|
helperBalance = address(h).balance;
|
||||||
@ -4640,7 +4640,7 @@ BOOST_AUTO_TEST_CASE(bubble_up_error_messages_through_transfer)
|
|||||||
revert("message");
|
revert("message");
|
||||||
}
|
}
|
||||||
function f() public {
|
function f() public {
|
||||||
address(this).transfer(0);
|
payable(this).transfer(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
contract C {
|
contract C {
|
||||||
|
@ -18,7 +18,7 @@ contract C {
|
|||||||
assembly {
|
assembly {
|
||||||
y := x
|
y := x
|
||||||
}
|
}
|
||||||
address payable z = address(y);
|
address payable z = payable(y);
|
||||||
assembly {
|
assembly {
|
||||||
r := z
|
r := z
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
contract TransferTest {
|
contract TransferTest {
|
||||||
fallback() external payable {
|
fallback() external payable {
|
||||||
// This used to cause an ICE
|
// This used to cause an ICE
|
||||||
address(this).transfer;
|
payable(this).transfer;
|
||||||
}
|
}
|
||||||
|
|
||||||
function f() pure public {}
|
function f() pure public {}
|
||||||
|
@ -10,7 +10,7 @@ contract Main {
|
|||||||
|
|
||||||
function s() public returns (bool) {
|
function s() public returns (bool) {
|
||||||
Receiver r = new Receiver();
|
Receiver r = new Receiver();
|
||||||
return address(r).send(0);
|
return payable(r).send(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,13 +8,13 @@ contract C {
|
|||||||
A a = new A();
|
A a = new A();
|
||||||
receive() external payable {}
|
receive() external payable {}
|
||||||
function f() public {
|
function f() public {
|
||||||
address(a).transfer(1 wei);
|
payable(a).transfer(1 wei);
|
||||||
}
|
}
|
||||||
function h() public {
|
function h() public {
|
||||||
address(a).transfer(100 ether);
|
payable(a).transfer(100 ether);
|
||||||
}
|
}
|
||||||
function g() public view returns (uint) {
|
function g() public view returns (uint) {
|
||||||
return address(this).balance;
|
return payable(this).balance;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ====
|
// ====
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
contract C {
|
contract C {
|
||||||
function f() public returns (address payable) {
|
function f() public returns (address) {
|
||||||
return msg.sender;
|
return msg.sender;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
contract C {
|
contract C {
|
||||||
function f() public returns (address payable) {
|
function f() public returns (address) {
|
||||||
return tx.origin;
|
return tx.origin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ contract B {
|
|||||||
A a;
|
A a;
|
||||||
|
|
||||||
fallback() external {
|
fallback() external {
|
||||||
address(a).transfer(100);
|
payable(a).transfer(100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ----
|
// ----
|
||||||
|
@ -4,7 +4,7 @@ contract C {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
function transfer(uint amount) public {
|
function transfer(uint amount) public {
|
||||||
address(this).transfer(amount); // to avoid pureness warning
|
payable(this).transfer(amount); // to avoid pureness warning
|
||||||
}
|
}
|
||||||
receive() payable external {
|
receive() payable external {
|
||||||
}
|
}
|
||||||
|
@ -13,8 +13,8 @@ contract B {
|
|||||||
}
|
}
|
||||||
S s;
|
S s;
|
||||||
function f() public {
|
function f() public {
|
||||||
s.a = address(this);
|
s.a = payable(this);
|
||||||
}
|
}
|
||||||
receive() external payable {
|
receive() external payable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
contract C {
|
contract C {
|
||||||
function f() public pure returns (C c) {
|
function f() public pure returns (C c) {
|
||||||
c = C(payable(2));
|
c = C(payable(address(2)));
|
||||||
}
|
}
|
||||||
receive() external payable {
|
receive() external payable {
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
contract C {
|
||||||
|
function f() public view {
|
||||||
|
address a1 = address(uint160(0));
|
||||||
|
address a2 = address(bytes20(0));
|
||||||
|
address a3 = address(this);
|
||||||
|
|
||||||
|
address payable a4 = payable(uint160(0));
|
||||||
|
address payable a5 = payable(bytes20(0));
|
||||||
|
address payable a6 = payable(this);
|
||||||
|
|
||||||
|
// Trivial conversions
|
||||||
|
address payable a7 = payable(address(uint160(0)));
|
||||||
|
address payable a8 = payable(address(bytes20(0)));
|
||||||
|
address payable a9 = payable(address(this));
|
||||||
|
|
||||||
|
a1; a2; a3; a4; a5; a6; a7; a8; a9;
|
||||||
|
}
|
||||||
|
|
||||||
|
// to make payable(this) work
|
||||||
|
receive() payable external {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ----
|
@ -0,0 +1,11 @@
|
|||||||
|
contract C {
|
||||||
|
function f() public pure {
|
||||||
|
address payable a = address(uint160(0));
|
||||||
|
address payable b = address(bytes20(0));
|
||||||
|
address payable c = address(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// TypeError 9574: (52-91): Type address is not implicitly convertible to expected type address payable.
|
||||||
|
// TypeError 9574: (101-140): Type address is not implicitly convertible to expected type address payable.
|
||||||
|
// TypeError 9574: (150-183): Type address is not implicitly convertible to expected type address payable.
|
@ -1,5 +1,5 @@
|
|||||||
contract C {
|
contract C {
|
||||||
function f(bytes20 x) public pure returns (address payable) {
|
function f(bytes20 x) public pure returns (address payable) {
|
||||||
return address(x);
|
return payable(x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
contract C {
|
contract C {
|
||||||
function f() public view {
|
function f() public view {
|
||||||
address payable a = address(this);
|
address payable a = payable(this);
|
||||||
a;
|
a;
|
||||||
}
|
}
|
||||||
fallback() external payable {
|
fallback() external payable {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
contract C {
|
contract C {
|
||||||
function f() public view {
|
function f() public view {
|
||||||
address payable a = address(this);
|
address payable a = payable(this);
|
||||||
a;
|
a;
|
||||||
}
|
}
|
||||||
receive() external payable {
|
receive() external payable {
|
||||||
|
@ -0,0 +1,29 @@
|
|||||||
|
contract C {
|
||||||
|
function f() public {
|
||||||
|
address payable a = payable(address(new D()));
|
||||||
|
address payable b = payable(new E());
|
||||||
|
address payable c = payable(new F());
|
||||||
|
|
||||||
|
a;
|
||||||
|
b;
|
||||||
|
c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// A contract that cannot receive Ether
|
||||||
|
contract D {}
|
||||||
|
|
||||||
|
// A contract that can receive Ether
|
||||||
|
contract E {
|
||||||
|
receive() external payable {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// A contract that can receive Ether using the fallback
|
||||||
|
contract F {
|
||||||
|
fallback() external payable {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----
|
@ -0,0 +1,17 @@
|
|||||||
|
contract C {
|
||||||
|
function f() public {
|
||||||
|
address payable a = address(new D());
|
||||||
|
|
||||||
|
// This conversion makes no sense anyway.
|
||||||
|
address payable b = address(D);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
contract D {
|
||||||
|
receive() external payable {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ----
|
||||||
|
// TypeError 9574: (47-83): Type address is not implicitly convertible to expected type address payable.
|
||||||
|
// TypeError 9640: (164-174): Explicit type conversion not allowed from "type(contract D)" to "address".
|
||||||
|
// TypeError 9574: (144-174): Type address is not implicitly convertible to expected type address payable.
|
@ -0,0 +1,8 @@
|
|||||||
|
contract C {
|
||||||
|
function f() public pure returns (C c) {
|
||||||
|
c = C(payable(2));
|
||||||
|
}
|
||||||
|
receive() external payable {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ----
|
@ -1,5 +1,5 @@
|
|||||||
contract C {
|
contract C {
|
||||||
function f(uint x) public pure returns (address payable) {
|
function f(uint x) public pure returns (address payable) {
|
||||||
return address(uint160(x));
|
return payable(uint160(x));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
contract C {
|
contract C {
|
||||||
function f() public {
|
function f() public {
|
||||||
address(this).transfer(1);
|
payable(this).transfer(1);
|
||||||
require(address(this).send(2));
|
require(payable(this).send(2));
|
||||||
selfdestruct(address(this));
|
selfdestruct(payable(this));
|
||||||
(bool success,) = address(this).delegatecall("");
|
(bool success,) = address(this).delegatecall("");
|
||||||
require(success);
|
require(success);
|
||||||
(success,) = address(this).call("");
|
(success,) = address(this).call("");
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
contract C {
|
contract C {
|
||||||
function f() view public {
|
function f() view public {
|
||||||
address(this).transfer(1);
|
payable(this).transfer(1);
|
||||||
}
|
}
|
||||||
function g() view public {
|
function g() view public {
|
||||||
require(address(this).send(2));
|
require(payable(this).send(2));
|
||||||
}
|
}
|
||||||
function h() view public {
|
function h() view public {
|
||||||
selfdestruct(address(this));
|
selfdestruct(payable(this));
|
||||||
}
|
}
|
||||||
function i() view public {
|
function i() view public {
|
||||||
(bool success,) = address(this).delegatecall("");
|
(bool success,) = address(this).delegatecall("");
|
||||||
|
Loading…
Reference in New Issue
Block a user