diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2017-10-04 19:18:40 +0800 |
---|---|---|
committer | Alex Beregszaszi <alex@rtfs.hu> | 2017-10-05 18:41:11 +0800 |
commit | 10529e994f9a587436c57bfdeef52476da9770bb (patch) | |
tree | c99524c75ed6fd9ab82c0a775c188177640e4038 /test | |
parent | 19274c78904632d568bf56e95603d22ef091ce77 (diff) | |
download | dexon-solidity-10529e994f9a587436c57bfdeef52476da9770bb.tar.gz dexon-solidity-10529e994f9a587436c57bfdeef52476da9770bb.tar.zst dexon-solidity-10529e994f9a587436c57bfdeef52476da9770bb.zip |
SMT should not crash on typecast/structs
Diffstat (limited to 'test')
-rw-r--r-- | test/libsolidity/SMTChecker.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/test/libsolidity/SMTChecker.cpp b/test/libsolidity/SMTChecker.cpp index d58f296f..8d712a80 100644 --- a/test/libsolidity/SMTChecker.cpp +++ b/test/libsolidity/SMTChecker.cpp @@ -79,6 +79,32 @@ BOOST_AUTO_TEST_CASE(simple_overflow) CHECK_WARNING(text, "Overflow (resulting value larger than"); } +BOOST_AUTO_TEST_CASE(warn_on_typecast) +{ + string text = R"( + contract C { + function f() public pure returns (uint) { + return uint8(1); + } + } + )"; + CHECK_WARNING(text, "Assertion checker does not yet implement this expression."); +} + +BOOST_AUTO_TEST_CASE(warn_on_struct) +{ + string text = R"( + contract C { + struct A { uint a; uint b; } + function f() public pure returns (A) { + return A({ a: 1, b: 2 }); + } + } + )"; + /// Multiple warnings, should check for: Assertion checker does not yet implement this expression. + CHECK_WARNING_ALLOW_MULTI(text, ""); +} + BOOST_AUTO_TEST_SUITE_END() } |