mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Fix overload resolution when conflict is with members of address (balance, transfer, etc)
This commit is contained in:
@@ -10151,6 +10151,31 @@ BOOST_AUTO_TEST_CASE(constant_string)
|
||||
ABI_CHECK(callContractFunction("h()"), encodeDyn(string("hello")));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(address_overload_resolution)
|
||||
{
|
||||
char const* sourceCode = R"(
|
||||
contract C {
|
||||
function balance() returns (uint) {
|
||||
return 1;
|
||||
}
|
||||
function transfer(uint amount) returns (uint) {
|
||||
return amount;
|
||||
}
|
||||
}
|
||||
contract D {
|
||||
function f() returns (uint) {
|
||||
return (new C()).balance();
|
||||
}
|
||||
function g() returns (uint) {
|
||||
return (new C()).transfer(5);
|
||||
}
|
||||
}
|
||||
)";
|
||||
compileAndRun(sourceCode, 0, "D");
|
||||
BOOST_CHECK(callContractFunction("f()") == encodeArgs(u256(1)));
|
||||
BOOST_CHECK(callContractFunction("g()") == encodeArgs(u256(5)));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
||||
}
|
||||
|
||||
@@ -6953,6 +6953,29 @@ BOOST_AUTO_TEST_CASE(warn_about_suicide)
|
||||
CHECK_WARNING(text, "\"suicide\" has been deprecated in favour of \"selfdestruct\"");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(address_overload_resolution)
|
||||
{
|
||||
char const* text = R"(
|
||||
contract C {
|
||||
function balance() returns (uint) {
|
||||
this.balance; // to avoid pureness warning
|
||||
return 1;
|
||||
}
|
||||
function transfer(uint amount) {
|
||||
address(this).transfer(amount); // to avoid pureness warning
|
||||
}
|
||||
}
|
||||
contract D {
|
||||
function f() {
|
||||
var x = (new C()).balance();
|
||||
x;
|
||||
(new C()).transfer(5);
|
||||
}
|
||||
}
|
||||
)";
|
||||
CHECK_SUCCESS(text);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user