forked from OSchip/llvm-project
[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
This commit is contained in:
parent
8a1c374b2e
commit
09767acae1
|
@ -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);
|
||||
|
|
|
@ -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>();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue