llvm/clang-tools-extra/test/clang-tidy/checkers/readability/avoid-unconditional-preprocessor-if.cpp

// RUN: %check_clang_tidy %s readability-avoid-unconditional-preprocessor-if %t

// CHECK-MESSAGES: :[[@LINE+1]]:2: warning: preprocessor condition is always 'false', consider removing both the condition and its contents [readability-avoid-unconditional-preprocessor-if]
#if 0
// some code
#endif

// CHECK-MESSAGES: :[[@LINE+1]]:2: warning: preprocessor condition is always 'true', consider removing condition but leaving its contents [readability-avoid-unconditional-preprocessor-if]
#if 1
// some code
#endif

#if test

#endif

// CHECK-MESSAGES: :[[@LINE+1]]:2: warning: preprocessor condition is always 'true', consider removing condition but leaving its contents [readability-avoid-unconditional-preprocessor-if]
#if 10>5

#endif

// CHECK-MESSAGES: :[[@LINE+1]]:2: warning: preprocessor condition is always 'false', consider removing both the condition and its contents [readability-avoid-unconditional-preprocessor-if]
#if 10<5

#endif

// CHECK-MESSAGES: :[[@LINE+1]]:2: warning: preprocessor condition is always 'true', consider removing condition but leaving its contents [readability-avoid-unconditional-preprocessor-if]
#if 10 > 5
// some code
#endif

// CHECK-MESSAGES: :[[@LINE+1]]:2: warning: preprocessor condition is always 'false', consider removing both the condition and its contents [readability-avoid-unconditional-preprocessor-if]
#if 10 < 5
// some code
#endif

// CHECK-MESSAGES: :[[@LINE+1]]:2: warning: preprocessor condition is always 'false', consider removing both the condition and its contents [readability-avoid-unconditional-preprocessor-if]
#if !(10 > \
        5)
// some code
#endif

// CHECK-MESSAGES: :[[@LINE+1]]:2: warning: preprocessor condition is always 'true', consider removing condition but leaving its contents [readability-avoid-unconditional-preprocessor-if]
#if !(10 < \
        5)
// some code
#endif

// CHECK-MESSAGES: :[[@LINE+1]]:2: warning: preprocessor condition is always 'true', consider removing condition but leaving its contents [readability-avoid-unconditional-preprocessor-if]
#if true
// some code
#endif

// CHECK-MESSAGES: :[[@LINE+1]]:2: warning: preprocessor condition is always 'false', consider removing both the condition and its contents [readability-avoid-unconditional-preprocessor-if]
#if false
// some code
#endif

#define MACRO
#ifdef MACRO
// some code
#endif

#if !SOMETHING
#endif

#if !( \
     defined MACRO)
// some code
#endif


#if __has_include(<string_view>)
// some code
#endif

#if __has_include(<string_view_not_exist>)
// some code
#endif

#define DDD 17
#define EEE 18

#if 10 > DDD
// some code
#endif

#if 10 < DDD
// some code
#endif

#if EEE > DDD
// some code
#endif