Minor: fix msvc warning "not all control paths return a value" (#5650)

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)
This commit is contained in:
Stefan van Kessel 2023-11-12 17:30:06 +01:00 committed by GitHub
parent b201ef26cb
commit d3520943ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 6 deletions

View File

@ -51,6 +51,12 @@
#endif #endif
// C++11 noreturn // C++11 noreturn
#if defined __has_cpp_attribute
# if __has_cpp_attribute (noreturn)
# define NORETURN [[noreturn]]
# endif
#endif
#if !defined(NORETURN)
# if (defined(__GNUC__) && (__GNUC__ >= 5)) \ # if (defined(__GNUC__) && (__GNUC__ >= 5)) \
|| defined(__clang__) \ || defined(__clang__) \
|| defined(__CPPCHECK__) || defined(__CPPCHECK__)
@ -60,6 +66,7 @@
# else # else
# define NORETURN # define NORETURN
# endif # endif
#endif
// fallthrough // fallthrough
#if defined(__clang__) #if defined(__clang__)