diff options
author | Miklos Vajna <vmiklos@vmiklos.hu> | 2019-01-11 07:59:47 +0000 |
---|---|---|
committer | Miklos Vajna <vmiklos@vmiklos.hu> | 2019-01-11 07:59:47 +0000 |
commit | c18a877acb9c1f60e556ef0353ea642998fa2453 (patch) | |
tree | 120c899401d771628e555bcb182b355d45926150 /clang-tools-extra/test | |
parent | b4d009e374cb758fd55d05b8b687b011dd01d06f (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')
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 |