From 66915785ddc76802a26745cce6cfb9c119197750 Mon Sep 17 00:00:00 2001 From: vitaut Date: Wed, 25 Mar 2015 07:24:26 -0700 Subject: [PATCH] Get rid of FMT_NORETURN because it breaks when FMT_EXCEPTIONS=0 --- format.cc | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/format.cc b/format.cc index ef1237a7..6f02a81d 100644 --- a/format.cc +++ b/format.cc @@ -66,26 +66,10 @@ using fmt::internal::Arg; #ifndef FMT_THROW # if FMT_EXCEPTIONS # define FMT_THROW(x) throw x +# define FMT_RETURN_AFTER_THROW(x) # else -# ifndef NDEBUG -# define FMT_THROW(x) assert(false && #x) -# elif defined _MSC_VER -# define FMT_THROW(x) __assume(0) -# elif defined __clang__ || FMT_GCC_VERSION >= 405 -# define FMT_THROW(x) __builtin_unreachable() -# else -# define FMT_THROW(x) std::abort() -# endif -# endif -#endif - -#ifndef FMT_NORETURN -# if defined __GNUC__ || defined __clang__ -# define FMT_NORETURN __attribute__((__noreturn__)) -# elif defined _MSC_VER -# define FMT_NORETURN __declspec(noreturn) -# else -# define FMT_NORETURN +# define FMT_THROW(x) assert(false) +# define FMT_RETURN_AFTER_THROW(x) return x # endif #endif @@ -307,9 +291,9 @@ class WidthHandler : public fmt::internal::ArgVisitor { public: explicit WidthHandler(fmt::FormatSpec &spec) : spec_(spec) {} - FMT_NORETURN unsigned visit_unhandled_arg() { FMT_THROW(fmt::FormatError("width is not integer")); + FMT_RETURN_AFTER_THROW(0); } template @@ -329,9 +313,9 @@ class WidthHandler : public fmt::internal::ArgVisitor { class PrecisionHandler : public fmt::internal::ArgVisitor { public: - FMT_NORETURN unsigned visit_unhandled_arg() { FMT_THROW(fmt::FormatError("precision is not integer")); + FMT_RETURN_AFTER_THROW(0); } template