summaryrefslogtreecommitdiff
path: root/clang-tools-extra/test
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@vmiklos.hu>2019-01-11 07:59:47 +0000
committerMiklos Vajna <vmiklos@vmiklos.hu>2019-01-11 07:59:47 +0000
commitc18a877acb9c1f60e556ef0353ea642998fa2453 (patch)
tree120c899401d771628e555bcb182b355d45926150 /clang-tools-extra/test
parentb4d009e374cb758fd55d05b8b687b011dd01d06f (diff)
[clang-tidy] new check 'readability-redundant-preprocessor'
Finds potentially redundant preprocessor directives. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D54349
Diffstat (limited to 'clang-tools-extra/test')
-rw-r--r--clang-tools-extra/test/clang-tidy/readability-redundant-preprocessor-ifdef.cpp36
-rw-r--r--clang-tools-extra/test/clang-tidy/readability-redundant-preprocessor.cpp84
-rw-r--r--clang-tools-extra/test/clang-tidy/readability-redundant-preprocessor.h5
3 files changed, 125 insertions, 0 deletions
diff --git a/clang-tools-extra/test/clang-tidy/readability-redundant-preprocessor-ifdef.cpp b/clang-tools-extra/test/clang-tidy/readability-redundant-preprocessor-ifdef.cpp
new file mode 100644
index 00000000000..72b608b1c2c
--- /dev/null
+++ b/clang-tools-extra/test/clang-tidy/readability-redundant-preprocessor-ifdef.cpp
@@ -0,0 +1,36 @@
+// RUN: %check_clang_tidy %s readability-redundant-preprocessor %t -- -- -DFOO
+
+// Positive testing.
+#ifdef 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 #ifdef was here
+void f();
+#endif
+#endif
+
+// Positive testing of inverted condition.
+#ifdef 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 #ifdef was here
+void f2();
+#endif
+#endif
+
+// Negative testing.
+#ifdef BAR
+void g();
+#endif
+
+#ifdef FOO
+#ifdef BAR
+void h();
+#endif
+#endif
+
+#ifdef FOO
+#ifndef BAR
+void i();
+#endif
+#endif
diff --git a/clang-tools-extra/test/clang-tidy/readability-redundant-preprocessor.cpp b/clang-tools-extra/test/clang-tidy/readability-redundant-preprocessor.cpp
new file mode 100644
index 00000000000..6cffd8f4389
--- /dev/null
+++ b/clang-tools-extra/test/clang-tidy/readability-redundant-preprocessor.cpp
@@ -0,0 +1,84 @@
+// 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
diff --git a/clang-tools-extra/test/clang-tidy/readability-redundant-preprocessor.h b/clang-tools-extra/test/clang-tidy/readability-redundant-preprocessor.h
new file mode 100644
index 00000000000..dfe5f9733af
--- /dev/null
+++ b/clang-tools-extra/test/clang-tidy/readability-redundant-preprocessor.h
@@ -0,0 +1,5 @@
+#ifndef FOO
+#ifndef FOO // this would warn, but not in a header
+void f();
+#endif
+#endif