mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-11-03 21:49:32 +01:00 
			
		
		
		
	made CHECK/ REQUIRE into block statements
Placed the contents of the macros into do{…}while(0) so they can be used as statements (e.g. after an if() with no braces).
Also means they now require the closing ;
			
			
This commit is contained in:
		@@ -684,20 +684,15 @@ inline bool isTrue
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
///////////////////////////////////////////////////////////////////////////////
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
#define INTERNAL_CATCH_TEST( expr, isNot, stopOnFailure, macroName ) \
 | 
					#define INTERNAL_CATCH_TEST( expr, isNot, stopOnFailure, macroName ) \
 | 
				
			||||||
    try \
 | 
					    do{ try{ \
 | 
				
			||||||
    { \
 | 
					 | 
				
			||||||
        INTERNAL_CATCH_ACCEPT_EXPR( ( Catch::ResultBuilder( __FILE__, __LINE__, macroName, #expr, isNot )->*expr ), stopOnFailure ); \
 | 
					        INTERNAL_CATCH_ACCEPT_EXPR( ( Catch::ResultBuilder( __FILE__, __LINE__, macroName, #expr, isNot )->*expr ), stopOnFailure ); \
 | 
				
			||||||
        if( Catch::isTrue( false ) ){ bool internal_catch_dummyResult = ( expr ); Catch::isTrue( internal_catch_dummyResult ); } \
 | 
					        if( Catch::isTrue( false ) ){ bool internal_catch_dummyResult = ( expr ); Catch::isTrue( internal_catch_dummyResult ); } \
 | 
				
			||||||
    } \
 | 
					    }catch( Catch::TestFailureException& ){ \
 | 
				
			||||||
    catch( Catch::TestFailureException& ) \
 | 
					 | 
				
			||||||
    { \
 | 
					 | 
				
			||||||
        throw; \
 | 
					        throw; \
 | 
				
			||||||
    } \
 | 
					    } catch( ... ){ \
 | 
				
			||||||
    catch( ... ) \
 | 
					 | 
				
			||||||
    { \
 | 
					 | 
				
			||||||
        INTERNAL_CATCH_ACCEPT_EXPR( ( Catch::ResultBuilder( __FILE__, __LINE__, macroName, #expr ) << Catch::Hub::getExceptionTranslatorRegistry().translateActiveException() ).setResultType( Catch::ResultWas::ThrewException ), false ); \
 | 
					        INTERNAL_CATCH_ACCEPT_EXPR( ( Catch::ResultBuilder( __FILE__, __LINE__, macroName, #expr ) << Catch::Hub::getExceptionTranslatorRegistry().translateActiveException() ).setResultType( Catch::ResultWas::ThrewException ), false ); \
 | 
				
			||||||
        throw; \
 | 
					        throw; \
 | 
				
			||||||
    }
 | 
					    }}while(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
///////////////////////////////////////////////////////////////////////////////
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
#define INTERNAL_CATCH_IF( expr, isNot, stopOnFailure, macroName ) \
 | 
					#define INTERNAL_CATCH_IF( expr, isNot, stopOnFailure, macroName ) \
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user