|
18 | 18 | #include "catch_compiler_capabilities.h" |
19 | 19 |
|
20 | 20 |
|
| 21 | +#if !defined(CATCH_CONFIG_DISABLE_STRINGIFICATION) |
| 22 | +# define CATCH_INTERNAL_STRINGIFY(expr) #expr |
| 23 | +#else |
| 24 | +# define CATCH_INTERNAL_STRINGIFY(expr) "Disabled by CATCH_CONFIG_DISABLE_STRINGIFICATION" |
| 25 | +#endif |
| 26 | + |
21 | 27 | #if defined(CATCH_CONFIG_FAST_COMPILE) |
22 | 28 | /////////////////////////////////////////////////////////////////////////////// |
23 | 29 | // We can speedup compilation significantly by breaking into debugger lower in |
|
33 | 39 | // the exception before it propagates back up to the runner. |
34 | 40 | #define INTERNAL_CATCH_TEST_NO_TRY( macroName, resultDisposition, expr ) \ |
35 | 41 | do { \ |
36 | | - Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \ |
| 42 | + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(expr), resultDisposition ); \ |
37 | 43 | __catchResult.setExceptionGuard(); \ |
38 | 44 | CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ |
39 | 45 | ( __catchResult <= expr ).endExpression(); \ |
|
45 | 51 |
|
46 | 52 | #define INTERNAL_CHECK_THAT_NO_TRY( macroName, matcher, resultDisposition, arg ) \ |
47 | 53 | do { \ |
48 | | - Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #arg ", " #matcher, resultDisposition ); \ |
| 54 | + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(arg) ", " CATCH_INTERNAL_STRINGIFY(matcher), resultDisposition ); \ |
49 | 55 | __catchResult.setExceptionGuard(); \ |
50 | | - __catchResult.captureMatch( arg, matcher, #matcher ); \ |
| 56 | + __catchResult.captureMatch( arg, matcher, CATCH_INTERNAL_STRINGIFY(matcher) ); \ |
51 | 57 | __catchResult.unsetExceptionGuard(); \ |
52 | 58 | INTERNAL_CATCH_REACT( __catchResult ) \ |
53 | 59 | } while( Catch::alwaysFalse() ) |
|
67 | 73 | /////////////////////////////////////////////////////////////////////////////// |
68 | 74 | #define INTERNAL_CATCH_TEST( macroName, resultDisposition, expr ) \ |
69 | 75 | do { \ |
70 | | - Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \ |
| 76 | + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(expr), resultDisposition ); \ |
71 | 77 | try { \ |
72 | 78 | CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ |
73 | 79 | ( __catchResult <= expr ).endExpression(); \ |
|
93 | 99 | /////////////////////////////////////////////////////////////////////////////// |
94 | 100 | #define INTERNAL_CATCH_NO_THROW( macroName, resultDisposition, expr ) \ |
95 | 101 | do { \ |
96 | | - Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \ |
| 102 | + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(expr), resultDisposition ); \ |
97 | 103 | try { \ |
98 | 104 | static_cast<void>(expr); \ |
99 | 105 | __catchResult.captureResult( Catch::ResultWas::Ok ); \ |
|
107 | 113 | /////////////////////////////////////////////////////////////////////////////// |
108 | 114 | #define INTERNAL_CATCH_THROWS( macroName, resultDisposition, matcher, expr ) \ |
109 | 115 | do { \ |
110 | | - Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition, #matcher ); \ |
| 116 | + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(expr), resultDisposition, CATCH_INTERNAL_STRINGIFY(matcher) ); \ |
111 | 117 | if( __catchResult.allowThrows() ) \ |
112 | 118 | try { \ |
113 | 119 | static_cast<void>(expr); \ |
|
124 | 130 | /////////////////////////////////////////////////////////////////////////////// |
125 | 131 | #define INTERNAL_CATCH_THROWS_AS( macroName, exceptionType, resultDisposition, expr ) \ |
126 | 132 | do { \ |
127 | | - Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr ", " #exceptionType, resultDisposition ); \ |
| 133 | + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(expr) ", " CATCH_INTERNAL_STRINGIFY(exceptionType), resultDisposition ); \ |
128 | 134 | if( __catchResult.allowThrows() ) \ |
129 | 135 | try { \ |
130 | 136 | static_cast<void>(expr); \ |
|
168 | 174 | /////////////////////////////////////////////////////////////////////////////// |
169 | 175 | #define INTERNAL_CHECK_THAT( macroName, matcher, resultDisposition, arg ) \ |
170 | 176 | do { \ |
171 | | - Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #arg ", " #matcher, resultDisposition ); \ |
| 177 | + Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(arg) ", " CATCH_INTERNAL_STRINGIFY(matcher), resultDisposition ); \ |
172 | 178 | try { \ |
173 | | - __catchResult.captureMatch( arg, matcher, #matcher ); \ |
| 179 | + __catchResult.captureMatch( arg, matcher, CATCH_INTERNAL_STRINGIFY(matcher) ); \ |
174 | 180 | } catch( ... ) { \ |
175 | 181 | __catchResult.useActiveException( resultDisposition | Catch::ResultDisposition::ContinueOnFailure ); \ |
176 | 182 | } \ |
|
0 commit comments