mirror of
https://github.com/fmtlib/fmt.git
synced 2026-02-15 06:39:58 +08:00
Suppress warning about missing noreturn attribute (#549)
Suppress warning about missing noreturn attribute
Adding `[[noreturn]]` to `report_unknown_type` suppresses the Clang/GCC `-Wmissing-noreturn` warning:
Clang outputs:
.../fmt/fmt/format.cc:294:74: warning:
function 'report_unknown_type' could be declared with
attribute 'noreturn' [-Wmissing-noreturn]
...code, const char *type) {
^
GCC outputs:
.../fmt/fmt/format.cc:294:74: warning: function might be candidate for
attribute 'noreturn' [-Wsuggest-attribute=noreturn]
...code, const char *type) {
^
Cherry-picked d16c4d.
This commit is contained in:
parent
eefdb379f9
commit
da439f2838
11
fmt/format.h
11
fmt/format.h
@ -137,6 +137,15 @@ typedef __int64 intmax_t;
|
|||||||
# define FMT_HAS_CPP_ATTRIBUTE(x) 0
|
# define FMT_HAS_CPP_ATTRIBUTE(x) 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Use the compiler's attribute noreturn.
|
||||||
|
#if defined(__MINGW32__) || defined(__MINGW64__)
|
||||||
|
# define FMT_NORETURN __attribute__((noreturn))
|
||||||
|
#elif FMT_HAS_CPP_ATTRIBUTE(noreturn)
|
||||||
|
# define FMT_NORETURN [[noreturn]]
|
||||||
|
#else
|
||||||
|
# define FMT_NORETURN
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef FMT_USE_RVALUE_REFERENCES
|
#ifndef FMT_USE_RVALUE_REFERENCES
|
||||||
// Don't use rvalue references when compiling with clang and an old libstdc++
|
// Don't use rvalue references when compiling with clang and an old libstdc++
|
||||||
// as the latter doesn't provide std::move.
|
// as the latter doesn't provide std::move.
|
||||||
@ -855,7 +864,7 @@ struct int_traits {
|
|||||||
std::numeric_limits<T>::digits <= 32, uint32_t, uint64_t>::type main_type;
|
std::numeric_limits<T>::digits <= 32, uint32_t, uint64_t>::type main_type;
|
||||||
};
|
};
|
||||||
|
|
||||||
FMT_API void report_unknown_type(char code, const char *type);
|
FMT_API FMT_NORETURN void report_unknown_type(char code, const char *type);
|
||||||
|
|
||||||
// Static data is placed in this class template to allow header-only
|
// Static data is placed in this class template to allow header-only
|
||||||
// configuration.
|
// configuration.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user