Add tests for function type sigs

This commit is contained in:
Alex Beregszaszi
2017-09-13 11:40:57 +01:00
parent 58f7a27ee0
commit 88946f9f03
2 changed files with 105 additions and 0 deletions
@@ -6285,6 +6285,87 @@ BOOST_AUTO_TEST_CASE(modifiers_access_storage_pointer)
CHECK_SUCCESS_NO_WARNINGS(text);
}
BOOST_AUTO_TEST_CASE(function_types_sig)
{
char const* text = R"(
contract C {
function f() returns (bytes4) {
return f.sig;
}
}
)";
CHECK_ERROR(text, TypeError, "Member \"sig\" not found");
text = R"(
contract C {
function g() internal {
}
function f() returns (bytes4) {
return g.sig;
}
}
)";
CHECK_ERROR(text, TypeError, "Member \"sig\" not found");
text = R"(
contract C {
function f() returns (bytes4) {
function () g;
return g.sig;
}
}
)";
CHECK_ERROR(text, TypeError, "Member \"sig\" not found");
text = R"(
contract C {
function f() returns (bytes4) {
return this.f.sig;
}
}
)";
CHECK_SUCCESS_NO_WARNINGS(text);
text = R"(
contract C {
function f() external returns (bytes4) {
return this.f.sig;
}
}
)";
CHECK_SUCCESS_NO_WARNINGS(text);
text = R"(
contract C {
function h() external {
}
function f() external returns (bytes4) {
var g = this.h;
return g.sig;
}
}
)";
CHECK_SUCCESS_NO_WARNINGS(text);
text = R"(
contract C {
function h() external {
}
function f() external returns (bytes4) {
function () external g = this.h;
return g.sig;
}
}
)";
CHECK_SUCCESS_NO_WARNINGS(text);
text = R"(
contract C {
function h() external {
}
function f() external returns (bytes4) {
function () external g = this.h;
var i = g;
return i.sig;
}
}
)";
CHECK_SUCCESS_NO_WARNINGS(text);
}
BOOST_AUTO_TEST_CASE(using_this_in_constructor)
{
char const* text = R"(