From 73fbaa5a3e31d54a6456642223814fa4c044bad1 Mon Sep 17 00:00:00 2001 From: chriseth Date: Thu, 22 Jun 2017 15:22:49 +0200 Subject: Test for var i = 0; --- test/libsolidity/SolidityNameAndTypeResolution.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'test') diff --git a/test/libsolidity/SolidityNameAndTypeResolution.cpp b/test/libsolidity/SolidityNameAndTypeResolution.cpp index c8a04539..14bb0810 100644 --- a/test/libsolidity/SolidityNameAndTypeResolution.cpp +++ b/test/libsolidity/SolidityNameAndTypeResolution.cpp @@ -1781,6 +1781,28 @@ BOOST_AUTO_TEST_CASE(exp_warn_literal_base) CHECK_SUCCESS(sourceCode); } + +BOOST_AUTO_TEST_CASE(warn_var_from_zero) +{ + char const* sourceCode = R"( + contract test { + function f() returns (uint) { + var i = 1; + return i; + } + } + )"; + CHECK_WARNING(sourceCode, "type uint8, which can only hold"); + sourceCode = R"( + contract test { + function f() { + for (var i = 0; i < msg.data.length; i++) { } + } + } + )"; + CHECK_WARNING(sourceCode, "type uint8, which can only hold"); +} + BOOST_AUTO_TEST_CASE(enum_member_access) { char const* text = R"( -- cgit v1.2.3 From af7ff3a3efec0394e8d44453f46af4e692cc224f Mon Sep 17 00:00:00 2001 From: chriseth Date: Thu, 22 Jun 2017 16:09:10 +0200 Subject: Update tests themselves --- test/libsolidity/SolidityNameAndTypeResolution.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/libsolidity/SolidityNameAndTypeResolution.cpp b/test/libsolidity/SolidityNameAndTypeResolution.cpp index 14bb0810..f649bf00 100644 --- a/test/libsolidity/SolidityNameAndTypeResolution.cpp +++ b/test/libsolidity/SolidityNameAndTypeResolution.cpp @@ -1792,7 +1792,7 @@ BOOST_AUTO_TEST_CASE(warn_var_from_zero) } } )"; - CHECK_WARNING(sourceCode, "type uint8, which can only hold"); + CHECK_WARNING(sourceCode, "uint8, which can hold"); sourceCode = R"( contract test { function f() { @@ -1800,7 +1800,7 @@ BOOST_AUTO_TEST_CASE(warn_var_from_zero) } } )"; - CHECK_WARNING(sourceCode, "type uint8, which can only hold"); + CHECK_WARNING(sourceCode, "uint8, which can hold"); } BOOST_AUTO_TEST_CASE(enum_member_access) -- cgit v1.2.3 From c73ba612f4c41a2f068debdb368789ae15dfb5a4 Mon Sep 17 00:00:00 2001 From: chriseth Date: Thu, 22 Jun 2017 16:32:46 +0200 Subject: Fix test error reporting if we ignore warnings. --- test/libsolidity/SolidityNameAndTypeResolution.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'test') diff --git a/test/libsolidity/SolidityNameAndTypeResolution.cpp b/test/libsolidity/SolidityNameAndTypeResolution.cpp index f649bf00..616ef47f 100644 --- a/test/libsolidity/SolidityNameAndTypeResolution.cpp +++ b/test/libsolidity/SolidityNameAndTypeResolution.cpp @@ -103,16 +103,22 @@ parseAnalyseAndReturnError(string const& _source, bool _reportWarnings = false, if (success) if (!StaticAnalyzer(errorReporter).analyze(*sourceUnit)) success = false; - if (errorReporter.errors().size() > 1 && !_allowMultipleErrors) - BOOST_FAIL("Multiple errors found"); + std::shared_ptr error; for (auto const& currentError: errorReporter.errors()) { if ( (_reportWarnings && currentError->type() == Error::Type::Warning) || (!_reportWarnings && currentError->type() != Error::Type::Warning) ) - return make_pair(sourceUnit, currentError); + { + if (error && !_allowMultipleErrors) + BOOST_FAIL("Multiple errors found"); + if (!error) + error = currentError; + } } + if (error) + return make_pair(sourceUnit, error); } catch (InternalCompilerError const& _e) { -- cgit v1.2.3 From 070a241899499b27fa18e3913bb0941f828b859a Mon Sep 17 00:00:00 2001 From: chriseth Date: Thu, 22 Jun 2017 16:54:24 +0200 Subject: Adjust other tests. --- test/libsolidity/SolidityNameAndTypeResolution.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'test') diff --git a/test/libsolidity/SolidityNameAndTypeResolution.cpp b/test/libsolidity/SolidityNameAndTypeResolution.cpp index 616ef47f..3d6104db 100644 --- a/test/libsolidity/SolidityNameAndTypeResolution.cpp +++ b/test/libsolidity/SolidityNameAndTypeResolution.cpp @@ -1148,7 +1148,7 @@ BOOST_AUTO_TEST_CASE(modifier_overrides_function) )"; // Error: Identifier already declared. // Error: Override changes modifier to function. - CHECK_ERROR_ALLOW_MULTI(text, DeclarationError, ""); + CHECK_ERROR_ALLOW_MULTI(text, DeclarationError, "Identifier already declared"); } BOOST_AUTO_TEST_CASE(function_overrides_modifier) @@ -3203,9 +3203,9 @@ BOOST_AUTO_TEST_CASE(tuples) contract C { function f() { uint a = (1); - var (b,) = (1,); - var (c,d) = (1, 2 + a); - var (e,) = (1, 2, b); + var (b,) = (uint8(1),); + var (c,d) = (uint32(1), 2 + a); + var (e,) = (uint64(1), 2, b); a;b;c;d;e; } } @@ -5546,7 +5546,7 @@ BOOST_AUTO_TEST_CASE(invalid_address_checksum) char const* text = R"( contract C { function f() { - var x = 0xFA0bFc97E48458494Ccd857e1A85DC91F7F0046E; + address x = 0xFA0bFc97E48458494Ccd857e1A85DC91F7F0046E; x; } } @@ -5559,7 +5559,7 @@ BOOST_AUTO_TEST_CASE(invalid_address_no_checksum) char const* text = R"( contract C { function f() { - var x = 0xfa0bfc97e48458494ccd857e1a85dc91f7f0046e; + address x = 0xfa0bfc97e48458494ccd857e1a85dc91f7f0046e; x; } } @@ -5572,7 +5572,7 @@ BOOST_AUTO_TEST_CASE(invalid_address_length) char const* text = R"( contract C { function f() { - var x = 0xA0bFc97E48458494Ccd857e1A85DC91F7F0046E; + address x = 0xA0bFc97E48458494Ccd857e1A85DC91F7F0046E; x; } } @@ -5955,7 +5955,7 @@ BOOST_AUTO_TEST_CASE(warn_unused_local_assigned) char const* text = R"( contract C { function f() { - var a = 1; + uint a = 1; } } )"; -- cgit v1.2.3 From c3e5d6b7ef64f7924754d1b0a1c5577e038e7bf4 Mon Sep 17 00:00:00 2001 From: chriseth Date: Mon, 26 Jun 2017 09:49:45 +0200 Subject: Give min and max values in warning message. --- test/libsolidity/SolidityNameAndTypeResolution.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/libsolidity/SolidityNameAndTypeResolution.cpp b/test/libsolidity/SolidityNameAndTypeResolution.cpp index 3d6104db..169b33d1 100644 --- a/test/libsolidity/SolidityNameAndTypeResolution.cpp +++ b/test/libsolidity/SolidityNameAndTypeResolution.cpp @@ -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"( contract test { function f() { for (var i = 0; i < msg.data.length; i++) { } } } - )"; + )"; CHECK_WARNING(sourceCode, "uint8, which can hold"); } -- cgit v1.2.3 From 803ab3626b2ea0ed6e9cee2c1b0ac01217390833 Mon Sep 17 00:00:00 2001 From: chriseth Date: Wed, 28 Jun 2017 11:00:36 +0200 Subject: Verbose error message test failure. --- test/libsolidity/ErrorCheck.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/libsolidity/ErrorCheck.cpp b/test/libsolidity/ErrorCheck.cpp index 75555c9b..9b0f9fb7 100644 --- a/test/libsolidity/ErrorCheck.cpp +++ b/test/libsolidity/ErrorCheck.cpp @@ -29,6 +29,15 @@ using namespace std; bool dev::solidity::searchErrorMessage(Error const& _err, std::string const& _substr) { if (string const* errorMessage = boost::get_error_info(_err)) - return errorMessage->find(_substr) != std::string::npos; + { + if (errorMessage->find(_substr) == std::string::npos) + { + cout << "Expected message \"" << _substr << "\" but found" << *errorMessage << endl; + return false; + } + return true; + } + else + cout << "Expected error message but found none." << endl; return _substr.empty(); } -- cgit v1.2.3