aboutsummaryrefslogtreecommitdiffstats
path: root/test/libsolidity/SolidityEndToEndTest.cpp
diff options
context:
space:
mode:
authorLeonardo Alt <leo@ethereum.org>2018-11-19 22:17:39 +0800
committerLeonardo Alt <leo@ethereum.org>2018-11-22 21:41:39 +0800
commit06189ae57f2f556f21499938fca8f9c0db82779e (patch)
treece106ef690debf21629cbf8339091c220381d6fc /test/libsolidity/SolidityEndToEndTest.cpp
parenta5411965e6d7abf50f896291d69cab820db6ef87 (diff)
downloaddexon-solidity-06189ae57f2f556f21499938fca8f9c0db82779e.tar.gz
dexon-solidity-06189ae57f2f556f21499938fca8f9c0db82779e.tar.zst
dexon-solidity-06189ae57f2f556f21499938fca8f9c0db82779e.zip
Add assert and tests for bound functions
Diffstat (limited to 'test/libsolidity/SolidityEndToEndTest.cpp')
-rw-r--r--test/libsolidity/SolidityEndToEndTest.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/test/libsolidity/SolidityEndToEndTest.cpp b/test/libsolidity/SolidityEndToEndTest.cpp
index 041f29a8..e591432a 100644
--- a/test/libsolidity/SolidityEndToEndTest.cpp
+++ b/test/libsolidity/SolidityEndToEndTest.cpp
@@ -9388,6 +9388,25 @@ BOOST_AUTO_TEST_CASE(using_for_by_name)
ABI_CHECK(callContractFunction("x()"), encodeArgs(u256(6 * 7)));
}
+BOOST_AUTO_TEST_CASE(bound_function_in_function)
+{
+ char const* sourceCode = R"(
+ library L {
+ function g(function() internal returns (uint) _t) internal returns (uint) { return _t(); }
+ }
+ contract C {
+ using L for *;
+ function f() public returns (uint) {
+ return t.g();
+ }
+ function t() public pure returns (uint) { return 7; }
+ }
+ )";
+ compileAndRun(sourceCode, 0, "L");
+ compileAndRun(sourceCode, 0, "C", bytes(), map<string, Address>{{"L", m_contractAddress}});
+ ABI_CHECK(callContractFunction("f()"), encodeArgs(u256(7)));
+}
+
BOOST_AUTO_TEST_CASE(bound_function_in_var)
{
char const* sourceCode = R"(