From 09748275db98e2d75964307e78b9c20a72beb81b Mon Sep 17 00:00:00 2001 From: Jason Turner Date: Sat, 17 Oct 2015 09:22:13 -0600 Subject: [PATCH] Fix warnings from clang --- .decent_ci-Linux.yaml | 2 +- .../chaiscript/dispatchkit/dynamic_object.hpp | 2 ++ .../chaiscript/language/chaiscript_parser.hpp | 17 ++++++++++------- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/.decent_ci-Linux.yaml b/.decent_ci-Linux.yaml index 24990bd..246241a 100644 --- a/.decent_ci-Linux.yaml +++ b/.decent_ci-Linux.yaml @@ -12,7 +12,7 @@ compilers: build_tag: AddressSanitizer version: "3.6" skip_packaging: true - cmake_extra_flags: -DUSE_LIBCXX:BOOL=OFF -DBUILD_SAMPLES:BOOL=ON -DBUILD_PACKAGE:BOOL=ON -DBUILD_TESTING:BOOL=ON -DENABLE_ADDRESS_SANITIZER:BOOL=ON + cmake_extra_flags: -DRUN_FUZZY_TESTS:BOOL=TRUE -DUSE_LIBCXX:BOOL=OFF -DBUILD_SAMPLES:BOOL=ON -DBUILD_PACKAGE:BOOL=ON -DBUILD_TESTING:BOOL=ON -DENABLE_ADDRESS_SANITIZER:BOOL=ON - name: "clang" build_tag: ThreadSanitizer version: "3.6" diff --git a/include/chaiscript/dispatchkit/dynamic_object.hpp b/include/chaiscript/dispatchkit/dynamic_object.hpp index eaabf9b..1e79eea 100644 --- a/include/chaiscript/dispatchkit/dynamic_object.hpp +++ b/include/chaiscript/dispatchkit/dynamic_object.hpp @@ -31,6 +31,8 @@ namespace chaiscript } + option_explicit_set(const option_explicit_set &) = default; + virtual ~option_explicit_set() CHAISCRIPT_NOEXCEPT {} }; diff --git a/include/chaiscript/language/chaiscript_parser.hpp b/include/chaiscript/language/chaiscript_parser.hpp index d012e26..a9b9311 100644 --- a/include/chaiscript/language/chaiscript_parser.hpp +++ b/include/chaiscript/language/chaiscript_parser.hpp @@ -660,14 +660,16 @@ namespace chaiscript const auto val = prefixed?std::string(t_val.begin()+2,t_val.end()):t_val; - try { - auto u = std::stoll(val,nullptr,base); - #ifdef __GNUC__ #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wsign-compare" +#pragma GCC diagnostic ignored "-Wtautological-compare" #endif + try { + auto u = std::stoll(val,nullptr,base); + + if (!unsigned_ && !long_ && u >= std::numeric_limits::min() && u <= std::numeric_limits::max()) { return const_var(static_cast(u)); } else if ((unsigned_ || base != 10) && !long_ && u >= std::numeric_limits::min() && u <= std::numeric_limits::max()) { @@ -682,10 +684,6 @@ namespace chaiscript return const_var(static_cast(u)); } -#ifdef __GNUC__ -#pragma GCC diagnostic pop -#endif - } catch (const std::out_of_range &) { // too big to be signed try { @@ -701,6 +699,11 @@ namespace chaiscript return const_var(std::numeric_limits::max()); } } + +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif + } template