xref: /llvm-project/clang-tools-extra/test/clang-tidy/checkers/bugprone/Inputs/assert-side-effect/assert.h (revision 0d6d8a853a6ea29b5f461a475a8f8eb7e7ba18e2)
1 #pragma clang system_header
2 
3 int abort();
4 
5 #ifdef NDEBUG
6 #define assert(x) 1
7 #else
8 #define assert(x)                                                              \
9   if (!(x))                                                                    \
10   (void)abort()
11 #endif
12 
13 void print(...);
14 #define assert2(e) (__builtin_expect(!(e), 0) ?                                \
15                        print (#e, __FILE__, __LINE__) : (void)0)
16 
17 #ifdef NDEBUG
18 #define my_assert(x) 1
19 #else
20 #define my_assert(x)                                                           \
21   ((void)((x) ? 1 : abort()))
22 #endif
23 
24 #ifdef NDEBUG
25 #define not_my_assert(x) 1
26 #else
27 #define not_my_assert(x)                                                       \
28   if (!(x))                                                                    \
29   (void)abort()
30 #endif
31 
32 #define real_assert(x) ((void)((x) ? 1 : abort()))
33 #define wrap1(x) real_assert(x)
34 #define wrap2(x) wrap1(x)
35 #define convoluted_assert(x) wrap2(x)
36 
37 #define msvc_assert(expression) (void)(                                        \
38             (!!(expression)) ||                                                \
39             (abort(), 0)                                                       \
40         )
41