diff options
| author | Idriss Riouak <riouakidriss@hotmail.it> | 2018-09-17 12:29:29 +0000 |
|---|---|---|
| committer | Idriss Riouak <riouakidriss@hotmail.it> | 2018-09-17 12:29:29 +0000 |
| commit | 09767acae1632bdce2604b11705149a9ea4c2825 (patch) | |
| tree | 767206978cf2b2726dc436f08bb4175c6f109ca5 /clang-tools-extra | |
| parent | 8a1c374b2e5250f90f0e534eac3afb7cbee7acc7 (diff) | |
| download | bcm5719-llvm-09767acae1632bdce2604b11705149a9ea4c2825.tar.gz bcm5719-llvm-09767acae1632bdce2604b11705149a9ea4c2825.zip | |
[Clang-Tidy: modernize] Fix for modernize-redundant-void-arg: complains about variable cast to void
Summary:
Hello, i would like to suggest a fix for one of the checks in clang-tidy.The bug was reported in https://bugs.llvm.org/show_bug.cgi?id=32575 where you can find more information.
For example:
```
template <typename T0>
struct S {
template <typename T>
void g() const {
int a;
(void)a;
}
};
void f() {
S<int>().g<int>();
}
```
this piece of code should not trigger any warning by the check modernize-redundant-void-arg but when we execute the following command
```
clang_tidy -checks=-*,modernize-redundant-void-arg test.cpp -- -std=c++11
```
we obtain the following warning:
/Users/eco419/Desktop/clang-tidy.project/void-redundand_2/test.cpp:6:6: warning: redundant void argument list in function declaration [modernize-redundant-void-arg]
(void)a;
^~~~
Reviewers: aaron.ballman, hokein, alexfh, JonasToth
Reviewed By: aaron.ballman, JonasToth
Subscribers: JonasToth, lebedev.ri, cfe-commits
Tags: #clang-tools-extra
Differential Revision: https://reviews.llvm.org/D52135
llvm-svn: 342388
Diffstat (limited to 'clang-tools-extra')
| -rw-r--r-- | clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.cpp | 2 | ||||
| -rw-r--r-- | clang-tools-extra/test/clang-tidy/modernize-redundant-void-arg.cpp | 61 |
2 files changed, 62 insertions, 1 deletions
diff --git a/clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.cpp b/clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.cpp index 51dc5a2cc40..ea49ab7bba3 100644 --- a/clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/RedundantVoidArgCheck.cpp @@ -49,7 +49,7 @@ void RedundantVoidArgCheck::registerMatchers(MatchFinder *Finder) { return; Finder->addMatcher(functionDecl(parameterCountIs(0), unless(isImplicit()), - unless(isExternC())) + unless(isInstantiated()), unless(isExternC())) .bind(FunctionId), this); Finder->addMatcher(typedefNameDecl().bind(TypedefId), this); diff --git a/clang-tools-extra/test/clang-tidy/modernize-redundant-void-arg.cpp b/clang-tools-extra/test/clang-tidy/modernize-redundant-void-arg.cpp index 750e5c1b293..453a4816af0 100644 --- a/clang-tools-extra/test/clang-tidy/modernize-redundant-void-arg.cpp +++ b/clang-tools-extra/test/clang-tidy/modernize-redundant-void-arg.cpp @@ -488,3 +488,64 @@ void lambda_expression_with_macro_test(){ // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: redundant void argument list in lambda expression [modernize-redundant-void-arg] // CHECK-FIXES: []() BODY; } + +struct S_1 { + void g_1(void) const { + // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: redundant void argument list in function definition [modernize-redundant-void-arg] + // CHECK-FIXES: void g_1() const { + int a; + (void)a; + } + + void g_2() const { + int a; + (void)a; + } +}; + +template <typename T0> +struct S_2 { + void g_1(void) const { + // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: redundant void argument list in function definition [modernize-redundant-void-arg] + // CHECK-FIXES: void g_1() const { + int a; + (void)a; + } + + void g_2() const { + int a; + (void)a; + } +}; + +template <typename T0> +struct S_3 { + template <typename T1> + void g_1(void) const { + // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: redundant void argument list in function definition [modernize-redundant-void-arg] + // CHECK-FIXES: void g_1() const { + int a; + (void)a; + } + template <typename T2> + void g_2() const { + int a; + (void)a; + } +}; + +template <typename T1> +void g_3(void) { + // CHECK-MESSAGES: :[[@LINE-1]]:10: warning: redundant void argument list in function definition [modernize-redundant-void-arg] + // CHECK-FIXES: void g_3(){ + int a; + (void)a; +} + +//Template instantiation +void f_testTemplate() { + S_1(); + S_2<int>(); + S_3<int>(); + g_3<int>(); +} |

