// RUN: %check_clang_tidy %s readability-redundant-preprocessor %t -- -- -I %S // Positive testing. #ifndef FOO // CHECK-NOTES: [[@LINE+1]]:2: warning: nested redundant #ifndef; consider removing it [readability-redundant-preprocessor] #ifndef FOO // CHECK-NOTES: [[@LINE-3]]:2: note: previous #ifndef was here void f(); #endif #endif // Positive testing of inverted condition. #ifndef FOO // CHECK-NOTES: [[@LINE+1]]:2: warning: nested redundant #ifdef; consider removing it [readability-redundant-preprocessor] #ifdef FOO // CHECK-NOTES: [[@LINE-3]]:2: note: previous #ifndef was here void f2(); #endif #endif // Negative testing. #include "readability-redundant-preprocessor.h" #ifndef BAR void g(); #endif #ifndef FOO #ifndef BAR void h(); #endif #endif #ifndef FOO #ifdef BAR void i(); #endif #endif // Positive #if testing. #define FOO 4 #if FOO == 4 // CHECK-NOTES: [[@LINE+1]]:2: warning: nested redundant #if; consider removing it [readability-redundant-preprocessor] #if FOO == 4 // CHECK-NOTES: [[@LINE-3]]:2: note: previous #if was here void j(); #endif #endif #if FOO == 3 + 1 // CHECK-NOTES: [[@LINE+1]]:2: warning: nested redundant #if; consider removing it [readability-redundant-preprocessor] #if FOO == 3 + 1 // CHECK-NOTES: [[@LINE-3]]:2: note: previous #if was here void j(); #endif #endif #if FOO == \ 4 // CHECK-NOTES: [[@LINE+1]]:2: warning: nested redundant #if; consider removing it [readability-redundant-preprocessor] #if FOO == \ 4 // CHECK-NOTES: [[@LINE-5]]:2: note: previous #if was here void j(); #endif #endif // Negative #if testing. #define BAR 4 #if FOO == 4 #if BAR == 4 void k(); #endif #endif #if FOO == \ 4 #if BAR == \ 5 void k(); #endif #endif