X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=folly%2FPortability.h;h=7b822cda2d60da1fe3849b32f4d7de09554d7ea8;hb=cd201c86411f960e6e63c8222a334cea5ed67768;hp=77df91642c4186037d8ece6cf6575884d96dfd22;hpb=388266e5f011284fa6ffb88c117bee39241fc763;p=folly.git diff --git a/folly/Portability.h b/folly/Portability.h index 77df9164..7b822cda 100644 --- a/folly/Portability.h +++ b/folly/Portability.h @@ -71,12 +71,19 @@ constexpr bool kHasUnalignedAccess = false; #endif // warn unused result +#if defined(__has_cpp_attribute) +#if __has_cpp_attribute(nodiscard) +#define FOLLY_NODISCARD [[nodiscard]] +#endif +#endif +#if !defined FOLLY_NODISCARD #if defined(_MSC_VER) && (_MSC_VER >= 1700) -#define FOLLY_WARN_UNUSED_RESULT _Check_return_ +#define FOLLY_NODISCARD _Check_return_ #elif defined(__clang__) || defined(__GNUC__) -#define FOLLY_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) +#define FOLLY_NODISCARD __attribute__((__warn_unused_result__)) #else -#define FOLLY_WARN_UNUSED_RESULT +#define FOLLY_NODISCARD +#endif #endif // target @@ -151,12 +158,10 @@ constexpr bool kIsSanitizeThread = false; #elif defined(__clang__) || defined(__GNUC__) # define FOLLY_PUSH_WARNING _Pragma("GCC diagnostic push") # define FOLLY_POP_WARNING _Pragma("GCC diagnostic pop") -#define FOLLY_GCC_DISABLE_WARNING_INTERNAL3(warningName) #warningName -#define FOLLY_GCC_DISABLE_WARNING_INTERNAL2(warningName) \ - FOLLY_GCC_DISABLE_WARNING_INTERNAL3(warningName) -#define FOLLY_GCC_DISABLE_WARNING(warningName) \ - _Pragma(FOLLY_GCC_DISABLE_WARNING_INTERNAL2(GCC diagnostic ignored \ - FOLLY_GCC_DISABLE_WARNING_INTERNAL3(-W##warningName))) +# define FOLLY_GCC_DISABLE_WARNING_INTERNAL2(warningName) #warningName +# define FOLLY_GCC_DISABLE_WARNING(warningName) \ + _Pragma( \ + FOLLY_GCC_DISABLE_WARNING_INTERNAL2(GCC diagnostic ignored warningName)) // Disable the MSVC warnings. # define FOLLY_MSVC_DISABLE_WARNING(warningNumber) #else @@ -168,8 +173,8 @@ constexpr bool kIsSanitizeThread = false; #ifdef HAVE_SHADOW_LOCAL_WARNINGS #define FOLLY_GCC_DISABLE_NEW_SHADOW_WARNINGS \ - FOLLY_GCC_DISABLE_WARNING(shadow-compatible-local) \ - FOLLY_GCC_DISABLE_WARNING(shadow-local) + FOLLY_GCC_DISABLE_WARNING("-Wshadow-compatible-local") \ + FOLLY_GCC_DISABLE_WARNING("-Wshadow-local") #else #define FOLLY_GCC_DISABLE_NEW_SHADOW_WARNINGS /* empty */ #endif @@ -333,6 +338,12 @@ using namespace FOLLY_GFLAGS_NAMESPACE; namespace folly { +#if __OBJC__ +constexpr auto kIsObjC = true; +#else +constexpr auto kIsObjC = false; +#endif + #if defined(__linux__) && !FOLLY_MOBILE constexpr auto kIsLinux = true; #else