mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 20:27:11 +01:00 
			
		
		
		
	Merge pull request #1791 from catchorg/dev-reorganize-warning-suppression
Rework how warning suppression in macros is done
This commit is contained in:
		| @@ -176,9 +176,10 @@ namespace Catch { | ||||
|  | ||||
|  | ||||
|             bootstrap_analysis analyse_samples(double confidence_level, int n_resamples, std::vector<double>::iterator first, std::vector<double>::iterator last) { | ||||
|                 CATCH_INTERNAL_START_WARNINGS_SUPPRESSION | ||||
|                 CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS | ||||
|                 static std::random_device entropy; | ||||
|                 CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS | ||||
|                 CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION | ||||
|  | ||||
|                 auto n = static_cast<int>(last - first); // seriously, one can't use integral types without hell in C++ | ||||
|  | ||||
|   | ||||
| @@ -43,9 +43,10 @@ | ||||
|     do { \ | ||||
|         Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(__VA_ARGS__), resultDisposition ); \ | ||||
|         INTERNAL_CATCH_TRY { \ | ||||
|             CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ | ||||
|             CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ | ||||
|             catchAssertionHandler.handleExpr( Catch::Decomposer() <= __VA_ARGS__ ); \ | ||||
|             CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS \ | ||||
|             CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \ | ||||
|         } INTERNAL_CATCH_CATCH( catchAssertionHandler ) \ | ||||
|         INTERNAL_CATCH_REACT( catchAssertionHandler ) \ | ||||
|     } while( (void)0, (false) && static_cast<bool>( !!(__VA_ARGS__) ) ) // the expression here is never evaluated at runtime but it forces the compiler to give it a look | ||||
|   | ||||
| @@ -43,38 +43,34 @@ | ||||
| #  define CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS | ||||
| #endif | ||||
|  | ||||
| #ifdef __clang__ | ||||
| // We have to avoid both ICC and Clang, because they try to mask themselves | ||||
| // as gcc, and we want only GCC in this block | ||||
| #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" ) | ||||
| #endif | ||||
|  | ||||
| #       define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ | ||||
|             _Pragma( "clang diagnostic push" ) \ | ||||
|             _Pragma( "clang diagnostic ignored \"-Wexit-time-destructors\"" ) \ | ||||
|             _Pragma( "clang diagnostic ignored \"-Wglobal-constructors\"") | ||||
| #       define CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS \ | ||||
|             _Pragma( "clang diagnostic pop" ) | ||||
| #if defined(__clang__) | ||||
|  | ||||
| #       define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ | ||||
|             _Pragma( "clang diagnostic push" ) \ | ||||
|             _Pragma( "clang diagnostic ignored \"-Wparentheses\"" ) | ||||
| #       define CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS \ | ||||
|             _Pragma( "clang diagnostic pop" ) | ||||
| #    define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma( "clang diagnostic push" ) | ||||
| #    define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION  _Pragma( "clang diagnostic pop" ) | ||||
|  | ||||
| #       define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS \ | ||||
|             _Pragma( "clang diagnostic push" ) \ | ||||
|             _Pragma( "clang diagnostic ignored \"-Wunused-variable\"" ) | ||||
| #       define CATCH_INTERNAL_UNSUPPRESS_UNUSED_WARNINGS \ | ||||
|             _Pragma( "clang diagnostic pop" ) | ||||
| #    define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ | ||||
|          _Pragma( "clang diagnostic ignored \"-Wexit-time-destructors\"" ) \ | ||||
|          _Pragma( "clang diagnostic ignored \"-Wglobal-constructors\"") | ||||
|  | ||||
| #       define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \ | ||||
|             _Pragma( "clang diagnostic push" ) \ | ||||
|             _Pragma( "clang diagnostic ignored \"-Wgnu-zero-variadic-macro-arguments\"" ) | ||||
| #       define CATCH_INTERNAL_UNSUPPRESS_ZERO_VARIADIC_WARNINGS \ | ||||
|             _Pragma( "clang diagnostic pop" ) | ||||
| #    define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ | ||||
|          _Pragma( "clang diagnostic ignored \"-Wparentheses\"" ) | ||||
|  | ||||
| #    define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS \ | ||||
|          _Pragma( "clang diagnostic ignored \"-Wunused-variable\"" ) | ||||
|  | ||||
| #    define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \ | ||||
|          _Pragma( "clang diagnostic ignored \"-Wgnu-zero-variadic-macro-arguments\"" ) | ||||
|  | ||||
| #    define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \ | ||||
|          _Pragma( "clang diagnostic ignored \"-Wunused-template\"" ) | ||||
|  | ||||
| #       define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \ | ||||
|             _Pragma( "clang diagnostic push" ) \ | ||||
|             _Pragma( "clang diagnostic ignored \"-Wunused-template\"" ) | ||||
| #       define CATCH_INTERNAL_UNSUPPRESS_UNUSED_TEMPLATE_WARNINGS \ | ||||
|             _Pragma( "clang diagnostic pop" ) | ||||
| #endif // __clang__ | ||||
|  | ||||
|  | ||||
| @@ -133,8 +129,10 @@ | ||||
|  | ||||
| //////////////////////////////////////////////////////////////////////////////// | ||||
| // Visual C++ | ||||
| #ifdef _MSC_VER | ||||
| #if defined(_MSC_VER) | ||||
|  | ||||
| #  define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION __pragma( warning(push) ) | ||||
| #  define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION  __pragma( warning(pop) ) | ||||
|  | ||||
| #  if _MSC_VER >= 1900 // Visual Studio 2015 or newer | ||||
| #    define CATCH_INTERNAL_CONFIG_CPP17_UNCAUGHT_EXCEPTIONS | ||||
| @@ -309,34 +307,37 @@ | ||||
| #  define CATCH_CONFIG_GLOBAL_NEXTAFTER | ||||
| #endif | ||||
|  | ||||
|  | ||||
| // Even if we do not think the compiler has that warning, we still have | ||||
| // to provide a macro that can be used by the code. | ||||
| #if !defined(CATCH_INTERNAL_START_WARNINGS_SUPPRESSION) | ||||
| #   define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION | ||||
| #endif | ||||
| #if !defined(CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION) | ||||
| #   define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION | ||||
| #endif | ||||
| #if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS) | ||||
| #   define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS | ||||
| #   define CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS | ||||
| #endif | ||||
| #if !defined(CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS) | ||||
| #   define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS | ||||
| #   define CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS | ||||
| #endif | ||||
| #if !defined(CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS) | ||||
| #   define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS | ||||
| #   define CATCH_INTERNAL_UNSUPPRESS_UNUSED_WARNINGS | ||||
| #endif | ||||
| #if !defined(CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS) | ||||
| #   define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS | ||||
| #   define CATCH_INTERNAL_UNSUPPRESS_ZERO_VARIADIC_WARNINGS | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #if defined(__APPLE__) && defined(__apple_build_version__) && (__clang_major__ < 10) | ||||
| #   undef CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS | ||||
| #   undef CATCH_INTERNAL_UNSUPPRESS_UNUSED_TEMPLATE_WARNINGS | ||||
| #elif defined(__clang__) && (__clang_major__ < 5) | ||||
| #   undef CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS | ||||
| #   undef CATCH_INTERNAL_UNSUPPRESS_UNUSED_TEMPLATE_WARNINGS | ||||
| #endif | ||||
|  | ||||
| #if !defined(CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS) | ||||
| #   define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS | ||||
| #   define CATCH_INTERNAL_UNSUPPRESS_UNUSED_TEMPLATE_WARNINGS | ||||
| #endif | ||||
|  | ||||
| #if defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) | ||||
|   | ||||
| @@ -73,9 +73,10 @@ namespace Catch { | ||||
| /////////////////////////////////////////////////////////////////////////////// | ||||
| #define INTERNAL_CATCH_TRANSLATE_EXCEPTION2( translatorName, signature ) \ | ||||
|     static std::string translatorName( signature ); \ | ||||
|     CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ | ||||
|     CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ | ||||
|     namespace{ Catch::ExceptionTranslatorRegistrar INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionRegistrar )( &translatorName ); } \ | ||||
|     CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS \ | ||||
|     CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \ | ||||
|     static std::string translatorName( signature ) | ||||
|  | ||||
| #define INTERNAL_CATCH_TRANSLATE_EXCEPTION( signature ) INTERNAL_CATCH_TRANSLATE_EXCEPTION2( INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionTranslator ), signature ) | ||||
|   | ||||
| @@ -58,14 +58,16 @@ namespace Catch { | ||||
| #if !defined(CATCH_CONFIG_DISABLE) | ||||
|  | ||||
| #define CATCH_REGISTER_REPORTER( name, reporterType ) \ | ||||
|     CATCH_INTERNAL_START_WARNINGS_SUPPRESSION         \ | ||||
|     CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS          \ | ||||
|     namespace{ Catch::ReporterRegistrar<reporterType> catch_internal_RegistrarFor##reporterType( name ); } \ | ||||
|     CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS | ||||
|     CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION | ||||
|  | ||||
| #define CATCH_REGISTER_LISTENER( listenerType ) \ | ||||
|     CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS   \ | ||||
|     CATCH_INTERNAL_START_WARNINGS_SUPPRESSION   \ | ||||
|     CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS    \ | ||||
|     namespace{ Catch::ListenerRegistrar<listenerType> catch_internal_RegistrarFor##listenerType; } \ | ||||
|     CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS | ||||
|     CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION | ||||
| #else // CATCH_CONFIG_DISABLE | ||||
|  | ||||
| #define CATCH_REGISTER_REPORTER(name, reporterType) | ||||
|   | ||||
| @@ -37,13 +37,15 @@ namespace Catch { | ||||
| } // end namespace Catch | ||||
|  | ||||
| #define INTERNAL_CATCH_SECTION( ... ) \ | ||||
|     CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ | ||||
|     CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS \ | ||||
|     if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, __VA_ARGS__ ) ) \ | ||||
|     CATCH_INTERNAL_UNSUPPRESS_UNUSED_WARNINGS | ||||
|     CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION | ||||
|  | ||||
| #define INTERNAL_CATCH_DYNAMIC_SECTION( ... ) \ | ||||
|     CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ | ||||
|     CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS \ | ||||
|     if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, (Catch::ReusableStringStream() << __VA_ARGS__).str() ) ) \ | ||||
|     CATCH_INTERNAL_UNSUPPRESS_UNUSED_WARNINGS | ||||
|     CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION | ||||
|  | ||||
| #endif // TWOBLUECUBES_CATCH_SECTION_H_INCLUDED | ||||
|   | ||||
| @@ -18,8 +18,9 @@ namespace Catch { | ||||
| } // end namespace Catch | ||||
|  | ||||
| #define CATCH_REGISTER_TAG_ALIAS( alias, spec ) \ | ||||
|     CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ | ||||
|     CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ | ||||
|     namespace{ Catch::RegistrarForTagAliases INTERNAL_CATCH_UNIQUE_NAME( AutoRegisterTagAlias )( alias, spec, CATCH_INTERNAL_LINEINFO ); } \ | ||||
|     CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS | ||||
|     CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION | ||||
|  | ||||
| #endif // TWOBLUECUBES_CATCH_TAG_ALIAS_AUTOREGISTRAR_H_INCLUDED | ||||
|   | ||||
| @@ -75,7 +75,7 @@ struct AutoReg : NonCopyable { | ||||
|     #else | ||||
|         #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION(Name, Tags, ...) \ | ||||
|             INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_NO_REGISTRATION_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, typename TestType, __VA_ARGS__ ) ) | ||||
|     #endif   | ||||
|     #endif | ||||
|  | ||||
|     #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR | ||||
|         #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG_NO_REGISTRATION(Name, Tags, Signature, ...) \ | ||||
| @@ -105,21 +105,24 @@ struct AutoReg : NonCopyable { | ||||
|     /////////////////////////////////////////////////////////////////////////////// | ||||
|     #define INTERNAL_CATCH_TESTCASE2( TestName, ... ) \ | ||||
|         static void TestName(); \ | ||||
|         CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ | ||||
|         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ | ||||
|         namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( &TestName ), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), Catch::NameAndTags{ __VA_ARGS__ } ); } /* NOLINT */ \ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS \ | ||||
|         CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \ | ||||
|         static void TestName() | ||||
|     #define INTERNAL_CATCH_TESTCASE( ... ) \ | ||||
|         INTERNAL_CATCH_TESTCASE2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), __VA_ARGS__ ) | ||||
|  | ||||
|     /////////////////////////////////////////////////////////////////////////////// | ||||
|     #define INTERNAL_CATCH_METHOD_AS_TEST_CASE( QualifiedMethod, ... ) \ | ||||
|         CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ | ||||
|         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ | ||||
|         namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( &QualifiedMethod ), CATCH_INTERNAL_LINEINFO, "&" #QualifiedMethod, Catch::NameAndTags{ __VA_ARGS__ } ); } /* NOLINT */ \ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS | ||||
|         CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION | ||||
|  | ||||
|     /////////////////////////////////////////////////////////////////////////////// | ||||
|     #define INTERNAL_CATCH_TEST_CASE_METHOD2( TestName, ClassName, ... )\ | ||||
|         CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ | ||||
|         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ | ||||
|         namespace{ \ | ||||
|             struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName) { \ | ||||
| @@ -127,19 +130,21 @@ struct AutoReg : NonCopyable { | ||||
|             }; \ | ||||
|             Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( Catch::makeTestInvoker( &TestName::test ), CATCH_INTERNAL_LINEINFO, #ClassName, Catch::NameAndTags{ __VA_ARGS__ } ); /* NOLINT */ \ | ||||
|         } \ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS \ | ||||
|         CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \ | ||||
|         void TestName::test() | ||||
|     #define INTERNAL_CATCH_TEST_CASE_METHOD( ClassName, ... ) \ | ||||
|         INTERNAL_CATCH_TEST_CASE_METHOD2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), ClassName, __VA_ARGS__ ) | ||||
|  | ||||
|     /////////////////////////////////////////////////////////////////////////////// | ||||
|     #define INTERNAL_CATCH_REGISTER_TESTCASE( Function, ... ) \ | ||||
|         CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ | ||||
|         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ | ||||
|         Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( Function ), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), Catch::NameAndTags{ __VA_ARGS__ } ); /* NOLINT */ \ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS | ||||
|         CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION | ||||
|  | ||||
|     /////////////////////////////////////////////////////////////////////////////// | ||||
|     #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_2(TestName, TestFunc, Name, Tags, Signature, ... )\ | ||||
|         CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ | ||||
|         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ | ||||
|         CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \ | ||||
|         CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \ | ||||
| @@ -164,9 +169,7 @@ struct AutoReg : NonCopyable { | ||||
|         }();\ | ||||
|         }\ | ||||
|         }\ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS \ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_ZERO_VARIADIC_WARNINGS \ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_UNUSED_TEMPLATE_WARNINGS \ | ||||
|         CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \ | ||||
|         INTERNAL_CATCH_DEFINE_SIG_TEST(TestFunc,INTERNAL_CATCH_REMOVE_PARENS(Signature)) | ||||
|  | ||||
| #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR | ||||
| @@ -175,7 +178,7 @@ struct AutoReg : NonCopyable { | ||||
| #else | ||||
|     #define INTERNAL_CATCH_TEMPLATE_TEST_CASE(Name, Tags, ...) \ | ||||
|         INTERNAL_CATCH_EXPAND_VARGS( INTERNAL_CATCH_TEMPLATE_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, typename TestType, __VA_ARGS__ ) ) | ||||
| #endif   | ||||
| #endif | ||||
|  | ||||
| #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR | ||||
|     #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG(Name, Tags, Signature, ...) \ | ||||
| @@ -186,9 +189,10 @@ struct AutoReg : NonCopyable { | ||||
| #endif | ||||
|  | ||||
|     #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2(TestName, TestFuncName, Name, Tags, Signature, TmplTypes, TypesList) \ | ||||
|         CATCH_INTERNAL_START_WARNINGS_SUPPRESSION                      \ | ||||
|         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS                      \ | ||||
|         CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS                \ | ||||
|         CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS                       \ | ||||
|         CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS              \ | ||||
|         template<typename TestType> static void TestFuncName();       \ | ||||
|         namespace {\ | ||||
|         namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName) {                                     \ | ||||
| @@ -213,9 +217,7 @@ struct AutoReg : NonCopyable { | ||||
|             }();                                                      \ | ||||
|         }                                                             \ | ||||
|         }                                                             \ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS                    \ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_ZERO_VARIADIC_WARNINGS              \ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_UNUSED_TEMPLATE_WARNINGS                     \ | ||||
|         CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION                       \ | ||||
|         template<typename TestType>                                   \ | ||||
|         static void TestFuncName() | ||||
|  | ||||
| @@ -236,6 +238,7 @@ struct AutoReg : NonCopyable { | ||||
| #endif | ||||
|  | ||||
|     #define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_2(TestName, TestFunc, Name, Tags, TmplList)\ | ||||
|         CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ | ||||
|         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ | ||||
|         CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \ | ||||
|         template<typename TestType> static void TestFunc();       \ | ||||
| @@ -255,10 +258,9 @@ struct AutoReg : NonCopyable { | ||||
|                 TestInit t;                                           \ | ||||
|                 t.reg_tests();                                        \ | ||||
|                 return 0;                                             \ | ||||
|             }();                                                        \ | ||||
|             }();                                                      \ | ||||
|         }}\ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS                    \ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_UNUSED_TEMPLATE_WARNINGS \ | ||||
|         CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION                       \ | ||||
|         template<typename TestType>                                   \ | ||||
|         static void TestFunc() | ||||
|  | ||||
| @@ -267,6 +269,7 @@ struct AutoReg : NonCopyable { | ||||
|  | ||||
|  | ||||
|     #define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( TestNameClass, TestName, ClassName, Name, Tags, Signature, ... ) \ | ||||
|         CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ | ||||
|         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ | ||||
|         CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \ | ||||
|         CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \ | ||||
| @@ -291,9 +294,7 @@ struct AutoReg : NonCopyable { | ||||
|         }();\ | ||||
|         }\ | ||||
|         }\ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS\ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_ZERO_VARIADIC_WARNINGS\ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_UNUSED_TEMPLATE_WARNINGS\ | ||||
|         CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \ | ||||
|         INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD(TestName, INTERNAL_CATCH_REMOVE_PARENS(Signature)) | ||||
|  | ||||
| #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR | ||||
| @@ -313,6 +314,7 @@ struct AutoReg : NonCopyable { | ||||
| #endif | ||||
|  | ||||
|     #define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2(TestNameClass, TestName, ClassName, Name, Tags, Signature, TmplTypes, TypesList)\ | ||||
|         CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ | ||||
|         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ | ||||
|         CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \ | ||||
|         CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \ | ||||
| @@ -343,9 +345,7 @@ struct AutoReg : NonCopyable { | ||||
|             }(); \ | ||||
|         }\ | ||||
|         }\ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS \ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_ZERO_VARIADIC_WARNINGS \ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_UNUSED_TEMPLATE_WARNINGS \ | ||||
|         CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \ | ||||
|         template<typename TestType> \ | ||||
|         void TestName<TestType>::test() | ||||
|  | ||||
| @@ -366,6 +366,7 @@ struct AutoReg : NonCopyable { | ||||
| #endif | ||||
|  | ||||
|     #define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD_2( TestNameClass, TestName, ClassName, Name, Tags, TmplList) \ | ||||
|         CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ | ||||
|         CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ | ||||
|         CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \ | ||||
|         template<typename TestType> \ | ||||
| @@ -390,8 +391,7 @@ struct AutoReg : NonCopyable { | ||||
|                 return 0;\ | ||||
|             }(); \ | ||||
|         }}\ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_GLOBALS_WARNINGS \ | ||||
|         CATCH_INTERNAL_UNSUPPRESS_UNUSED_TEMPLATE_WARNINGS \ | ||||
|         CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION \ | ||||
|         template<typename TestType> \ | ||||
|         void TestName<TestType>::test() | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Martin Hořeňovský
					Martin Hořeňovský