aboutsummaryrefslogtreecommitdiffstats
path: root/SolidityNameAndTypeResolution.cpp
diff options
context:
space:
mode:
authorLu Guanqun <guanqun.lu@gmail.com>2015-03-01 11:33:38 +0800
committerLu Guanqun <guanqun.lu@gmail.com>2015-03-08 22:48:53 +0800
commit1da211920e04ff385ac429d36ccafd4e10db7281 (patch)
tree96822577cd1aa8ccd05b022d671d07f1b16f959e /SolidityNameAndTypeResolution.cpp
parentb87c5547a5b9f307c2a0871e537a37508bc4da75 (diff)
downloaddexon-solidity-1da211920e04ff385ac429d36ccafd4e10db7281.tar
dexon-solidity-1da211920e04ff385ac429d36ccafd4e10db7281.tar.gz
dexon-solidity-1da211920e04ff385ac429d36ccafd4e10db7281.tar.bz2
dexon-solidity-1da211920e04ff385ac429d36ccafd4e10db7281.tar.lz
dexon-solidity-1da211920e04ff385ac429d36ccafd4e10db7281.tar.xz
dexon-solidity-1da211920e04ff385ac429d36ccafd4e10db7281.tar.zst
dexon-solidity-1da211920e04ff385ac429d36ccafd4e10db7281.zip
add two overloaded function test cases
Diffstat (limited to 'SolidityNameAndTypeResolution.cpp')
-rw-r--r--SolidityNameAndTypeResolution.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/SolidityNameAndTypeResolution.cpp b/SolidityNameAndTypeResolution.cpp
index d2ae3f73..d764019e 100644
--- a/SolidityNameAndTypeResolution.cpp
+++ b/SolidityNameAndTypeResolution.cpp
@@ -1287,6 +1287,31 @@ BOOST_AUTO_TEST_CASE(storage_variable_initialization_with_incorrect_type_string)
BOOST_CHECK_THROW(parseTextAndResolveNames(text), TypeError);
}
+BOOST_AUTO_TEST_CASE(overloaded_function_cannot_resolve)
+{
+ char const* sourceCode = R"(
+ contract test {
+ function f() returns(uint) { return 1; }
+ function f(uint a) returns(uint) { return a; }
+ function g() returns(uint) { return f(3, 5); }
+ }
+ )";
+ BOOST_CHECK_THROW(parseTextAndResolveNames(sourceCode), TypeError);
+}
+
+BOOST_AUTO_TEST_CASE(ambiguous_overloaded_function)
+{
+ // literal 1 can be both converted to uint8 and uint8, so it's ambiguous.
+ char const* sourceCode = R"(
+ contract test {
+ function f(uint8 a) returns(uint) { return a; }
+ function f(uint a) returns(uint) { return 2*a; }
+ function g() returns(uint) { return f(1); }
+ }
+ )";
+ BOOST_CHECK_THROW(parseTextAndResolveNames(sourceCode), TypeError);
+}
+
BOOST_AUTO_TEST_SUITE_END()
}