1 // RUN: %check_clang_tidy %s readability-avoid-unconditional-preprocessor-if %t
2 
3 // CHECK-MESSAGES: :[[@LINE+1]]:2: warning: preprocessor condition is always 'false', consider removing both the condition and its contents [readability-avoid-unconditional-preprocessor-if]
4 #if 0
5 // some code
6 #endif
7 
8 // CHECK-MESSAGES: :[[@LINE+1]]:2: warning: preprocessor condition is always 'true', consider removing condition but leaving its contents [readability-avoid-unconditional-preprocessor-if]
9 #if 1
10 // some code
11 #endif
12 
13 #if test
14 
15 #endif
16 
17 // CHECK-MESSAGES: :[[@LINE+1]]:2: warning: preprocessor condition is always 'true', consider removing condition but leaving its contents [readability-avoid-unconditional-preprocessor-if]
18 #if 10>5
19 
20 #endif
21 
22 // CHECK-MESSAGES: :[[@LINE+1]]:2: warning: preprocessor condition is always 'false', consider removing both the condition and its contents [readability-avoid-unconditional-preprocessor-if]
23 #if 10<5
24 
25 #endif
26 
27 // CHECK-MESSAGES: :[[@LINE+1]]:2: warning: preprocessor condition is always 'true', consider removing condition but leaving its contents [readability-avoid-unconditional-preprocessor-if]
28 #if 10 > 5
29 // some code
30 #endif
31 
32 // CHECK-MESSAGES: :[[@LINE+1]]:2: warning: preprocessor condition is always 'false', consider removing both the condition and its contents [readability-avoid-unconditional-preprocessor-if]
33 #if 10 < 5
34 // some code
35 #endif
36 
37 // CHECK-MESSAGES: :[[@LINE+1]]:2: warning: preprocessor condition is always 'false', consider removing both the condition and its contents [readability-avoid-unconditional-preprocessor-if]
38 #if !(10 > \
39         5)
40 // some code
41 #endif
42 
43 // CHECK-MESSAGES: :[[@LINE+1]]:2: warning: preprocessor condition is always 'true', consider removing condition but leaving its contents [readability-avoid-unconditional-preprocessor-if]
44 #if !(10 < \
45         5)
46 // some code
47 #endif
48 
49 // CHECK-MESSAGES: :[[@LINE+1]]:2: warning: preprocessor condition is always 'true', consider removing condition but leaving its contents [readability-avoid-unconditional-preprocessor-if]
50 #if true
51 // some code
52 #endif
53 
54 // CHECK-MESSAGES: :[[@LINE+1]]:2: warning: preprocessor condition is always 'false', consider removing both the condition and its contents [readability-avoid-unconditional-preprocessor-if]
55 #if false
56 // some code
57 #endif
58 
59 #define MACRO
60 #ifdef MACRO
61 // some code
62 #endif
63 
64 #if !SOMETHING
65 #endif
66 
67 #if !( \
68      defined MACRO)
69 // some code
70 #endif
71 
72 
73 #if __has_include(<string_view>)
74 // some code
75 #endif
76 
77 #if __has_include(<string_view_not_exist>)
78 // some code
79 #endif
80 
81 #define DDD 17
82 #define EEE 18
83 
84 #if 10 > DDD
85 // some code
86 #endif
87 
88 #if 10 < DDD
89 // some code
90 #endif
91 
92 #if EEE > DDD
93 // some code
94 #endif
95