Skip to content

Commit

Permalink
\open-source-parsers#964 Delete JSONCPP_NORETURN for [[noreturn]]
Browse files Browse the repository at this point in the history
This patch removes the custom JSONCPP_NORETURN macro in favor of the
C++11 standard [[noreturn]] attribute.
  • Loading branch information
baylesj committed Jul 11, 2019
1 parent 60ba071 commit 9ef812a
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 19 deletions.
17 changes: 2 additions & 15 deletions include/json/value.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,6 @@
#include <cpptl/forwards.h>
#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: <data member>: <type> needs to have dll-interface to
// be used by...
#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
Expand Down Expand Up @@ -89,9 +76,9 @@ class JSON_API LogicError : public Exception {
#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.
*/
Expand Down
8 changes: 4 additions & 4 deletions src/lib_json/json_value.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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

// //////////////////////////////////////////////////////////////////
Expand Down

0 comments on commit 9ef812a

Please sign in to comment.