From e9caeb7d0be334ae804cb7680083845af6463b3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ho=C5=99e=C5=88ovsk=C3=BD?= Date: Sat, 22 Feb 2020 15:03:18 +0100 Subject: [PATCH] Fix Wparentheses for GCC Sadly most versions still cannot properly handle the suppression via `_Pragma`, so it has to leak to the users when they use older GCC versions to compile their code --- src/catch2/catch_capture.hpp | 6 ++++++ src/catch2/catch_compiler_capabilities.h | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/src/catch2/catch_capture.hpp b/src/catch2/catch_capture.hpp index 3ecbab05..2b5cfa90 100644 --- a/src/catch2/catch_capture.hpp +++ b/src/catch2/catch_capture.hpp @@ -13,6 +13,12 @@ #include #include +// We need this suppression to leak, because it took until GCC 9 +// for the front end to handle local suppression via _Pragma properly +#if defined(__GNUC__) && !defined(__clang__) && !defined(__ICC) && __GNUC__ < 9 + #pragma GCC diagnostic ignored "-Wparentheses" +#endif + #if !defined(CATCH_CONFIG_DISABLE) #if !defined(CATCH_CONFIG_DISABLE_STRINGIFICATION) diff --git a/src/catch2/catch_compiler_capabilities.h b/src/catch2/catch_compiler_capabilities.h index b26e815f..2a2ad2b6 100644 --- a/src/catch2/catch_compiler_capabilities.h +++ b/src/catch2/catch_compiler_capabilities.h @@ -48,6 +48,11 @@ #if defined(__GNUC__) && !defined(__clang__) && !defined(__ICC) # define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma( "GCC diagnostic push" ) # define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION _Pragma( "GCC diagnostic pop" ) + +// This only works on GCC 9+. so we have to also add a global suppression of Wparentheses +// for older versions of GCC. +# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ + _Pragma( "GCC diagnostic ignored \"-Wparentheses\"" ) #endif #if defined(__clang__)