diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2017-09-16 10:46:29 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-16 10:46:29 +0800 |
commit | a0d171722a211720773aae0ded8a80991d44ba9d (patch) | |
tree | ae1376cd7d128573edb235f92191dd30118d07bf /test/libsolidity | |
parent | 7dd372ce5c9ea1cacf2c70a16f0285bb74314db8 (diff) | |
parent | 80ce3ca66f063d8d87c2393e689f92d8608b4e0a (diff) | |
download | dexon-solidity-a0d171722a211720773aae0ded8a80991d44ba9d.tar dexon-solidity-a0d171722a211720773aae0ded8a80991d44ba9d.tar.gz dexon-solidity-a0d171722a211720773aae0ded8a80991d44ba9d.tar.bz2 dexon-solidity-a0d171722a211720773aae0ded8a80991d44ba9d.tar.lz dexon-solidity-a0d171722a211720773aae0ded8a80991d44ba9d.tar.xz dexon-solidity-a0d171722a211720773aae0ded8a80991d44ba9d.tar.zst dexon-solidity-a0d171722a211720773aae0ded8a80991d44ba9d.zip |
Merge pull request #2823 from ethereum/iuliaCompressor
Combine all ABI functions into a single assembly.
Diffstat (limited to 'test/libsolidity')
-rw-r--r-- | test/libsolidity/ABIEncoderTests.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/libsolidity/ABIEncoderTests.cpp b/test/libsolidity/ABIEncoderTests.cpp index 297c4ef0..4ddf17ce 100644 --- a/test/libsolidity/ABIEncoderTests.cpp +++ b/test/libsolidity/ABIEncoderTests.cpp @@ -398,6 +398,34 @@ BOOST_AUTO_TEST_CASE(calldata) ) } +BOOST_AUTO_TEST_CASE(function_name_collision) +{ + // This tests a collision between a function name used by inline assembly + // and by the ABI encoder + string sourceCode = R"( + contract C { + function f(uint x) returns (uint) { + assembly { + function abi_encode_t_uint256_to_t_uint256() { + mstore(0, 7) + return(0, 0x20) + } + switch x + case 0 { abi_encode_t_uint256_to_t_uint256() } + } + return 1; + } + } + )"; + BOTH_ENCODERS( + compileAndRun(sourceCode); + BOOST_CHECK(callContractFunction("f(uint256)", encodeArgs(0)) == encodeArgs(7)); + BOOST_CHECK(callContractFunction("f(uint256)", encodeArgs(1)) == encodeArgs(1)); + ) +} + + + BOOST_AUTO_TEST_SUITE_END() } |