diff --git a/include/json/value.h b/include/json/value.h index 59bae07..a9d9ea1 100644 --- a/include/json/value.h +++ b/include/json/value.h @@ -24,19 +24,6 @@ #include #endif -// Conditional NORETURN attribute on the throw functions would: -// a) suppress false positives from static code analysis -// b) possibly improve optimization opportunities. -#if !defined(JSONCPP_NORETURN) -#if defined(_MSC_VER) -#define JSONCPP_NORETURN __declspec(noreturn) -#elif defined(__GNUC__) -#define JSONCPP_NORETURN __attribute__((__noreturn__)) -#else -#define JSONCPP_NORETURN -#endif -#endif - // Disable warning C4251: : needs to have dll-interface to // be used by... #if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) @@ -89,9 +76,9 @@ public: #endif /// used internally -JSONCPP_NORETURN void throwRuntimeError(String const& msg); +[[noreturn]] void throwRuntimeError(String const& msg); /// used internally -JSONCPP_NORETURN void throwLogicError(String const& msg); +[[noreturn]] void throwLogicError(String const& msg); /** \brief Type of the value held by a Value object. */ diff --git a/src/lib_json/json_value.cpp b/src/lib_json/json_value.cpp index 1cf4828..a702c56 100644 --- a/src/lib_json/json_value.cpp +++ b/src/lib_json/json_value.cpp @@ -232,15 +232,15 @@ Exception::~Exception() JSONCPP_NOEXCEPT {} char const* Exception::what() const JSONCPP_NOEXCEPT { return msg_.c_str(); } RuntimeError::RuntimeError(String const& msg) : Exception(msg) {} LogicError::LogicError(String const& msg) : Exception(msg) {} -JSONCPP_NORETURN void throwRuntimeError(String const& msg) { +[[noreturn]] void throwRuntimeError(String const& msg) { throw RuntimeError(msg); } -JSONCPP_NORETURN void throwLogicError(String const& msg) { +[[noreturn]] void throwLogicError(String const& msg) { throw LogicError(msg); } #else // !JSON_USE_EXCEPTION -JSONCPP_NORETURN void throwRuntimeError(String const& msg) { abort(); } -JSONCPP_NORETURN void throwLogicError(String const& msg) { abort(); } +[[noreturn]] void throwRuntimeError(String const& msg) { abort(); } +[[noreturn]] void throwLogicError(String const& msg) { abort(); } #endif // //////////////////////////////////////////////////////////////////