diff options
author | Haojian Wu <hokein@google.com> | 2016-04-05 11:42:08 +0000 |
---|---|---|
committer | Haojian Wu <hokein@google.com> | 2016-04-05 11:42:08 +0000 |
commit | c253f8b06be7d8fe23cb08613fad439c01d51521 (patch) | |
tree | c73a300b4bc7c02e037f790fa17d1352d9e266e4 /clang-tools-extra/test/clang-tidy/readability-static-definition-in-anonymous-namespace.cpp | |
parent | 591ae468201532c6ce59826d10f596c6bba37a7b (diff) | |
download | bcm5719-llvm-c253f8b06be7d8fe23cb08613fad439c01d51521.tar.gz bcm5719-llvm-c253f8b06be7d8fe23cb08613fad439c01d51521.zip |
[clang-tidy] Add a check to detect static definitions in anonymous namespace.
Summary: Fixes PR26595
Reviewers: alexfh
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D18180
llvm-svn: 265384
Diffstat (limited to 'clang-tools-extra/test/clang-tidy/readability-static-definition-in-anonymous-namespace.cpp')
-rw-r--r-- | clang-tools-extra/test/clang-tidy/readability-static-definition-in-anonymous-namespace.cpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/clang-tools-extra/test/clang-tidy/readability-static-definition-in-anonymous-namespace.cpp b/clang-tools-extra/test/clang-tidy/readability-static-definition-in-anonymous-namespace.cpp new file mode 100644 index 00000000000..5c3c8c12d68 --- /dev/null +++ b/clang-tools-extra/test/clang-tidy/readability-static-definition-in-anonymous-namespace.cpp @@ -0,0 +1,49 @@ +// RUN: %check_clang_tidy %s readability-static-definition-in-anonymous-namespace %t + +namespace { + +int a = 1; +const int b = 1; +static int c = 1; +// CHECK-MESSAGES: :[[@LINE-1]]:12: warning: 'c' is a static definition in anonymous namespace; static is redundant here [readability-static-definition-in-anonymous-namespace] +// CHECK-FIXES: {{^}}int c = 1; +static const int d = 1; +// CHECK-MESSAGES: :[[@LINE-1]]:18: warning: 'd' is a static definition in anonymous namespace +// CHECK-FIXES: {{^}}const int d = 1; +const static int e = 1; +// CHECK-MESSAGES: :[[@LINE-1]]:18: warning: 'e' is a static definition in anonymous namespace +// CHECK-FIXES: {{^}}const int e = 1; + +void f() { + int a = 1; + static int b = 1; +} + +static int g() { +// CHECK-MESSAGES: :[[@LINE-1]]:12: warning: 'g' is a static definition in anonymous namespace +// CHECK-FIXES: {{^}}int g() { + return 1; +} + +#define DEFINE_STATIC static +// CHECK-FIXES: {{^}}#define DEFINE_STATIC static +DEFINE_STATIC int h = 1; +// CHECK-MESSAGES: :[[@LINE-1]]:19: warning: 'h' is a static definition in anonymous namespace +// CHECK-FIXES: {{^}}DEFINE_STATIC int h = 1; + +#define DEFINE_STATIC_VAR(x) static int x = 2 +// CHECK-FIXES: {{^}}#define DEFINE_STATIC_VAR(x) static int x = 2 +DEFINE_STATIC_VAR(i); +// CHECK-FIXES: {{^}}DEFINE_STATIC_VAR(i); + +} // namespace + +namespace N { + +int a = 1; +const int b = 1; +static int c = 1; +static const int d = 1; +const static int e = 1; + +} // namespace N |