From e1e1337aca5939acffc040a6c7667acfae4738d0 Mon Sep 17 00:00:00 2001 From: chriseth Date: Mon, 14 Dec 2020 12:10:22 +0100 Subject: [PATCH 1/4] Move functions into anonymous namespace. --- libsolidity/analysis/ConstantEvaluator.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libsolidity/analysis/ConstantEvaluator.cpp b/libsolidity/analysis/ConstantEvaluator.cpp index 70c196f10..c3b4b9a7f 100644 --- a/libsolidity/analysis/ConstantEvaluator.cpp +++ b/libsolidity/analysis/ConstantEvaluator.cpp @@ -227,6 +227,9 @@ optional ConstantEvaluator::evaluateUnaryOperator(Token _operator, rat } } +namespace +{ + optional convertType(rational const& _value, Type const& _type) { if (_type.category() == Type::Category::RationalNumber) @@ -255,6 +258,8 @@ optional constantToTypedValue(Type const& _type) return nullopt; } +} + optional ConstantEvaluator::evaluate( langutil::ErrorReporter& _errorReporter, Expression const& _expr From 843e37b6e641aa08fa83db78629e8b7d198707d7 Mon Sep 17 00:00:00 2001 From: chriseth Date: Mon, 14 Dec 2020 13:55:05 +0100 Subject: [PATCH 2/4] Do not warn about unreachable break. --- cmake/EthCompilerSettings.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/cmake/EthCompilerSettings.cmake b/cmake/EthCompilerSettings.cmake index adbc3a661..bbf631ca6 100644 --- a/cmake/EthCompilerSettings.cmake +++ b/cmake/EthCompilerSettings.cmake @@ -60,7 +60,6 @@ if (("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" MA eth_add_cxx_compiler_flag_if_supported(-Wfinal-dtor-non-final-class) eth_add_cxx_compiler_flag_if_supported(-Wnewline-eof) eth_add_cxx_compiler_flag_if_supported(-Wsuggest-destructor-override) - eth_add_cxx_compiler_flag_if_supported(-Wunreachable-code-break) eth_add_cxx_compiler_flag_if_supported(-Wduplicated-cond) eth_add_cxx_compiler_flag_if_supported(-Wduplicate-enum) eth_add_cxx_compiler_flag_if_supported(-Wlogical-op) From b03d1105289eb3fb53dfbf58916aed56a13cf3e6 Mon Sep 17 00:00:00 2001 From: chriseth Date: Mon, 14 Dec 2020 14:02:50 +0100 Subject: [PATCH 3/4] Ignore "no version found" check for pragmas containing "99". --- scripts/docs_version_pragma_check.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/scripts/docs_version_pragma_check.sh b/scripts/docs_version_pragma_check.sh index 458c55308..ecb47377b 100755 --- a/scripts/docs_version_pragma_check.sh +++ b/scripts/docs_version_pragma_check.sh @@ -119,8 +119,13 @@ function findMinimalVersion() if [ -z "$version" ] then - printError "No release $sign$pragmaVersion was listed in available releases!" - exit 1 + if [[ "$greater" = true && "$pragmaVersion" =~ 99 ]] + then + printError "Skipping version check for pragma: $pragmaVersion" + else + printError "No release $sign$pragmaVersion was listed in available releases!" + exit 1 + fi fi } From 0dd2f1edbe536589e974bc97992bd3357897cd32 Mon Sep 17 00:00:00 2001 From: chriseth Date: Mon, 14 Dec 2020 14:21:35 +0100 Subject: [PATCH 4/4] Update counter-examples. --- .../libsolidity/smtCheckerTests/external_calls/external_inc.sol | 2 +- .../smtCheckerTests/types/struct/struct_unary_sub.sol | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/libsolidity/smtCheckerTests/external_calls/external_inc.sol b/test/libsolidity/smtCheckerTests/external_calls/external_inc.sol index 412456cd4..deab0cc9a 100644 --- a/test/libsolidity/smtCheckerTests/external_calls/external_inc.sol +++ b/test/libsolidity/smtCheckerTests/external_calls/external_inc.sol @@ -19,5 +19,5 @@ contract C { } // ---- // Warning 4984: (146-149): CHC: Overflow (resulting value larger than 2**256 - 1) might happen here. -// Warning 6328: (189-203): CHC: Assertion violation happens here.\nCounterexample:\nx = 10, d = 0\n\n\n\nTransaction trace:\nconstructor()\nState: x = 0, d = 0\ninc()\nState: x = 1, d = 0\nf() +// Warning 6328: (189-203): CHC: Assertion violation happens here.\nCounterexample:\nx = 10, d = 0\n\n\n\nTransaction trace:\nconstructor()\nState: x = 0, d = 0\ninc()\nState: x = 1, d = 0\ninc()\nState: x = 2, d = 0\nf() // Warning 2661: (146-149): BMC: Overflow (resulting value larger than 2**256 - 1) happens here. diff --git a/test/libsolidity/smtCheckerTests/types/struct/struct_unary_sub.sol b/test/libsolidity/smtCheckerTests/types/struct/struct_unary_sub.sol index 3dda683a8..202c4566d 100644 --- a/test/libsolidity/smtCheckerTests/types/struct/struct_unary_sub.sol +++ b/test/libsolidity/smtCheckerTests/types/struct/struct_unary_sub.sol @@ -16,4 +16,4 @@ contract C { } } // ---- -// Warning 6328: (240-260): CHC: Assertion violation happens here.\nCounterexample:\n\ns1 = {x: 98, a: []}\ns2 = {x: 99, a: [6, 6, 6, 6, 6, 6, 6]}\n\n\nTransaction trace:\nconstructor()\nf({x: 0, a: []}, {x: 99, a: [6, 6, 6, 6, 6, 6, 6]}) +// Warning 6328: (240-260): CHC: Assertion violation happens here.\nCounterexample:\n\ns1 = {x: 98, a: []}\ns2 = {x: (- 38), a: [6, 6, 6, 6, 6, 6, 6]}\n\n\nTransaction trace:\nconstructor()\nf({x: 0, a: []}, {x: (- 38), a: [6, 6, 6, 6, 6, 6, 6]})