Warn about shift of literals.

This commit is contained in:
chriseth
2017-08-16 13:54:28 +02:00
parent 83561e136c
commit 3d595d4b14
3 changed files with 42 additions and 2 deletions
@@ -1765,6 +1765,44 @@ BOOST_AUTO_TEST_CASE(exp_warn_literal_base)
CHECK_SUCCESS(sourceCode);
}
BOOST_AUTO_TEST_CASE(shift_warn_literal_base)
{
char const* sourceCode = R"(
contract test {
function f() returns(uint) {
uint8 x = 100;
return 10 << x;
}
}
)";
CHECK_WARNING(sourceCode, "might overflow");
sourceCode = R"(
contract test {
function f() returns(uint) {
uint8 x = 100;
return uint8(10) << x;
}
}
)";
CHECK_SUCCESS(sourceCode);
sourceCode = R"(
contract test {
function f() returns(uint) {
return 2 << 80;
}
}
)";
CHECK_SUCCESS(sourceCode);
sourceCode = R"(
contract test {
function f() returns(uint) {
uint8 x = 100;
return 10 >> x;
}
}
)";
CHECK_SUCCESS(sourceCode);
}
BOOST_AUTO_TEST_CASE(warn_var_from_zero)
{