@@ -568,18 +568,22 @@ struct with_what_contains : private contains_substring {
568
568
# define WARNING_PUSH _Pragma (" clang diagnostic push" )
569
569
# define WARNING_POP _Pragma (" clang diagnostic pop" )
570
570
# define WARNING_DISABLE_PARENTHESES do {} while (0 )
571
+ # define WARNING_DISABLE_CONSTANT_COMPARISON do {} while (0 )
571
572
#elif defined(__GNUC__)
572
573
# define WARNING_PUSH _Pragma (" GCC diagnostic push" )
573
574
# define WARNING_POP _Pragma (" GCC diagnostic pop" )
574
575
# define WARNING_DISABLE_PARENTHESES _Pragma (" GCC diagnostic ignored \" -Wparentheses\" " )
576
+ # define WARNING_DISABLE_CONSTANT_COMPARISON do {} while (0 )
575
577
#elif defined(_MSC_VER)
576
- # define WARNING_PUSH do {} while ( 0 )
577
- # define WARNING_POP do {} while ( 0 )
578
+ # define WARNING_PUSH do {} _Pragma ( " warning(push) " )
579
+ # define WARNING_POP do {} _Pragma ( " warning(pop) " )
578
580
# define WARNING_DISABLE_PARENTHESES do {} while (0 )
581
+ # define WARNING_DISABLE_CONSTANT_COMPARISON _Pragma (" warning(disable: 4127)" )
579
582
#else
580
583
# define WARNING_PUSH do {} while (0 )
581
584
# define WARNING_POP do {} while (0 )
582
585
# define WARNING_DISABLE_PARENTHESES do {} while (0 )
586
+ # define WARNING_DISABLE_CONSTANT_COMPARISON do {} while (0 )
583
587
#endif
584
588
// clang-format on
585
589
@@ -596,31 +600,33 @@ struct with_what_contains : private contains_substring {
596
600
#define REQUIRE (EXP ) \
597
601
do { \
598
602
++CURRENT_CASE.tests ; \
603
+ WARNING_PUSH; \
604
+ WARNING_DISABLE_PARENTHESES; \
605
+ WARNING_DISABLE_CONSTANT_COMPARISON; \
599
606
if (!(EXP)) { \
600
- WARNING_PUSH; \
601
- WARNING_DISABLE_PARENTHESES; \
602
607
const auto EXP2 = TESTING_EXPR (EXP); \
603
- WARNING_POP; \
604
608
snatch::tests.print_failure (); \
605
609
snatch::tests.print_location (CURRENT_CASE, __FILE__, __LINE__); \
606
610
snatch::tests.print_details_expr (" REQUIRE" , #EXP, EXP2); \
607
611
throw snatch::impl::test_state::failed; \
608
612
} \
613
+ WARNING_POP; \
609
614
} while (0 )
610
615
611
616
#define CHECK (EXP ) \
612
617
do { \
613
618
++CURRENT_CASE.tests ; \
619
+ WARNING_PUSH; \
620
+ WARNING_DISABLE_PARENTHESES; \
621
+ WARNING_DISABLE_CONSTANT_COMPARISON; \
614
622
if (!(EXP)) { \
615
- WARNING_PUSH; \
616
- WARNING_DISABLE_PARENTHESES; \
617
623
const auto EXP2 = TESTING_EXPR (EXP); \
618
- WARNING_POP; \
619
624
snatch::tests.print_failure (); \
620
625
snatch::tests.print_location (CURRENT_CASE, __FILE__, __LINE__); \
621
626
snatch::tests.print_details_expr (" CHECK" , #EXP, EXP2); \
622
627
snatch::tests.set_state (CURRENT_CASE, snatch::impl::test_state::failed); \
623
628
} \
629
+ WARNING_POP; \
624
630
} while (0 )
625
631
626
632
#define FAIL (MESSAGE ) \
0 commit comments