From 79b6525ba0ac749ebe3581ca892039760d58b638 Mon Sep 17 00:00:00 2001 From: Stefan van Kessel Date: Sat, 11 Nov 2023 11:46:15 +0100 Subject: [PATCH] Minor: fix msvc warning "not all control paths return a value" When building with /Od - default cmake debug build for me, the __assume(false); trick does not work to get rid of the C4714 warnings https://godbolt.org/z/a6xGnfP7d D:\tmp\cppcheck\lib\keywords.cpp(205): warning C4715: 'Keywords::getOnly': not all control paths return a value D:\tmp\cppcheck\lib\keywords.cpp(226): warning C4715: 'Keywords::getOnly': not all control paths return a value D:\tmp\cppcheck\lib\keywords.cpp(168): warning C4715: 'Keywords::getAll': not all control paths return a value D:\tmp\cppcheck\lib\keywords.cpp(188): warning C4715: 'Keywords::getAll': not all control paths return a value Proposed fix: also define NORETURN to [[noreturn]] when according to __has_cpp_attribute [[noreturn]] is supported https://en.cppreference.com/w/cpp/feature_test (For previous discussion see also https://github.com/danmar/cppcheck/pull/5497) --- lib/config.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/config.h b/lib/config.h index 3ecff1c1000..49f76698ee1 100644 --- a/lib/config.h +++ b/lib/config.h @@ -57,7 +57,12 @@ # define NORETURN [[noreturn]] #elif defined(__GNUC__) # define NORETURN __attribute__((noreturn)) -#else +#elif defined __has_cpp_attribute +# if __has_cpp_attribute (noreturn) +# define NORETURN [[noreturn]] +# endif +#endif +#if !defined(NORETURN) # define NORETURN #endif