@@ -44,10 +44,22 @@ #if defined(__GNUC__) # define restrict __restrict__ #elif __STDC_VERSION__ < 199901L # define restrict #endif + +#if __STDC_VERSION__ >= 201112L +# ifdef OF_HAVE_STDNORETURN_H +# include +# else +# define noreturn _Noreturn +# endif +#elif defined(__GNUC__) +# define noreturn __attribute__((noreturn)) +#else +# define noreturn +#endif #if defined(OF_HAVE__THREAD_LOCAL) # define OF_HAVE_COMPILER_TLS # ifdef OF_HAVE_THREADS_H # include @@ -103,14 +115,14 @@ # endif #endif #if defined(__clang__) || __GCC_VERSION__ >= 406 # define OF_SENTINEL __attribute__((__sentinel__)) -# define OF_NO_RETURN __attribute__((__noreturn__)) +# define OF_METHOD_NORETURN __attribute__((__noreturn__)) #else # define OF_SENTINEL -# define OF_NO_RETURN +# define OF_METHOD_NORETURN #endif #if __has_attribute(__objc_requires_super__) # define OF_REQUIRES_SUPER __attribute__((__objc_requires_super__)) #else @@ -959,11 +971,11 @@ * @warning If you override this method, you must make sure that it never * returns. * * @param selector The selector not understood by the receiver */ -- (void)doesNotRecognizeSelector: (SEL)selector OF_NO_RETURN; +- (void)doesNotRecognizeSelector: (SEL)selector OF_METHOD_NORETURN; @end /*! * @protocol OFCopying OFObject.h ObjFW/OFObject.h *