mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Give min and max values in warning message.
This commit is contained in:
parent
a895f2dccb
commit
c3e5d6b7ef
@ -964,9 +964,17 @@ bool TypeChecker::visit(VariableDeclarationStatement const& _statement)
|
|||||||
{
|
{
|
||||||
int numBits = type->numBits();
|
int numBits = type->numBits();
|
||||||
bool isSigned = type->isSigned();
|
bool isSigned = type->isSigned();
|
||||||
|
string minValue;
|
||||||
|
string maxValue;
|
||||||
if (isSigned)
|
if (isSigned)
|
||||||
|
{
|
||||||
numBits--;
|
numBits--;
|
||||||
extension = ", which can hold values up to " + string((u256(1) << numBits) - 1);
|
minValue = "-" + bigint(bigint(1) << numBits).str();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
minValue = "0";
|
||||||
|
maxValue = bigint((bigint(1) << numBits) - 1).str();
|
||||||
|
extension = ", which can hold values between " + minValue + " and " + maxValue;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
solAssert(dynamic_cast<FixedPointType const*>(var.annotation().type.get()), "Unknown type.");
|
solAssert(dynamic_cast<FixedPointType const*>(var.annotation().type.get()), "Unknown type.");
|
||||||
|
@ -1798,14 +1798,32 @@ BOOST_AUTO_TEST_CASE(warn_var_from_zero)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
)";
|
)";
|
||||||
CHECK_WARNING(sourceCode, "uint8, which can hold");
|
CHECK_WARNING(sourceCode, "uint8, which can hold values between 0 and 255");
|
||||||
|
sourceCode = R"(
|
||||||
|
contract test {
|
||||||
|
function f() {
|
||||||
|
var i = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff;
|
||||||
|
i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)";
|
||||||
|
CHECK_WARNING(sourceCode, "uint256, which can hold values between 0 and 115792089237316195423570985008687907853269984665640564039457584007913129639935");
|
||||||
|
sourceCode = R"(
|
||||||
|
contract test {
|
||||||
|
function f() {
|
||||||
|
var i = -2;
|
||||||
|
i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)";
|
||||||
|
CHECK_WARNING(sourceCode, "int8, which can hold values between -128 and 127");
|
||||||
sourceCode = R"(
|
sourceCode = R"(
|
||||||
contract test {
|
contract test {
|
||||||
function f() {
|
function f() {
|
||||||
for (var i = 0; i < msg.data.length; i++) { }
|
for (var i = 0; i < msg.data.length; i++) { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)";
|
)";
|
||||||
CHECK_WARNING(sourceCode, "uint8, which can hold");
|
CHECK_WARNING(sourceCode, "uint8, which can hold");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user