Author: aaronballman Date: Thu Apr 14 14:28:13 2016 New Revision: 266358 URL: http://llvm.org/viewvc/llvm-project?rev=266358&view=rev Log: Add support for type aliases to modernize-redundant-void-arg.cpp
Patch by Clement Courbet. Modified: clang-tools-extra/trunk/clang-tidy/modernize/RedundantVoidArgCheck.cpp clang-tools-extra/trunk/clang-tidy/modernize/RedundantVoidArgCheck.h clang-tools-extra/trunk/test/clang-tidy/modernize-redundant-void-arg.cpp Modified: clang-tools-extra/trunk/clang-tidy/modernize/RedundantVoidArgCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/RedundantVoidArgCheck.cpp?rev=266358&r1=266357&r2=266358&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/modernize/RedundantVoidArgCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/modernize/RedundantVoidArgCheck.cpp Thu Apr 14 14:28:13 2016 @@ -50,7 +50,7 @@ void RedundantVoidArgCheck::registerMatc unless(isExternC())) .bind(FunctionId), this); - Finder->addMatcher(typedefDecl().bind(TypedefId), this); + Finder->addMatcher(typedefNameDecl().bind(TypedefId), this); auto ParenFunctionType = parenType(innerType(functionType())); auto PointerToFunctionType = pointee(ParenFunctionType); auto FunctionOrMemberPointer = @@ -80,8 +80,9 @@ void RedundantVoidArgCheck::check(const const BoundNodes &Nodes = Result.Nodes; if (const auto *Function = Nodes.getNodeAs<FunctionDecl>(FunctionId)) { processFunctionDecl(Result, Function); - } else if (const auto *Typedef = Nodes.getNodeAs<TypedefDecl>(TypedefId)) { - processTypedefDecl(Result, Typedef); + } else if (const auto *TypedefName = + Nodes.getNodeAs<TypedefNameDecl>(TypedefId)) { + processTypedefNameDecl(Result, TypedefName); } else if (const auto *Member = Nodes.getNodeAs<FieldDecl>(FieldId)) { processFieldDecl(Result, Member); } else if (const auto *Var = Nodes.getNodeAs<VarDecl>(VarId)) { @@ -105,8 +106,8 @@ void RedundantVoidArgCheck::processFunct if (Function->isThisDeclarationADefinition()) { const Stmt *Body = Function->getBody(); SourceLocation Start = Function->getLocStart(); - SourceLocation End = Body ? Body->getLocStart().getLocWithOffset(-1) : - Function->getLocEnd(); + SourceLocation End = + Body ? Body->getLocStart().getLocWithOffset(-1) : Function->getLocEnd(); removeVoidArgumentTokens(Result, SourceRange(Start, End), "function definition"); } else { @@ -179,10 +180,13 @@ void RedundantVoidArgCheck::removeVoidTo diag(VoidLoc, Diagnostic) << FixItHint::CreateRemoval(VoidRange); } -void RedundantVoidArgCheck::processTypedefDecl( - const MatchFinder::MatchResult &Result, const TypedefDecl *Typedef) { - if (protoTypeHasNoParms(Typedef->getUnderlyingType())) { - removeVoidArgumentTokens(Result, Typedef->getSourceRange(), "typedef"); +void RedundantVoidArgCheck::processTypedefNameDecl( + const MatchFinder::MatchResult &Result, + const TypedefNameDecl *TypedefName) { + if (protoTypeHasNoParms(TypedefName->getUnderlyingType())) { + removeVoidArgumentTokens(Result, TypedefName->getSourceRange(), + isa<TypedefDecl>(TypedefName) ? "typedef" + : "type alias"); } } Modified: clang-tools-extra/trunk/clang-tidy/modernize/RedundantVoidArgCheck.h URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/RedundantVoidArgCheck.h?rev=266358&r1=266357&r2=266358&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/modernize/RedundantVoidArgCheck.h (original) +++ clang-tools-extra/trunk/clang-tidy/modernize/RedundantVoidArgCheck.h Thu Apr 14 14:28:13 2016 @@ -42,8 +42,9 @@ private: void processFunctionDecl(const ast_matchers::MatchFinder::MatchResult &Result, const FunctionDecl *Function); - void processTypedefDecl(const ast_matchers::MatchFinder::MatchResult &Result, - const TypedefDecl *Typedef); + void + processTypedefNameDecl(const ast_matchers::MatchFinder::MatchResult &Result, + const TypedefNameDecl *Typedef); void processFieldDecl(const ast_matchers::MatchFinder::MatchResult &Result, const FieldDecl *Member); Modified: clang-tools-extra/trunk/test/clang-tidy/modernize-redundant-void-arg.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-redundant-void-arg.cpp?rev=266358&r1=266357&r2=266358&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/modernize-redundant-void-arg.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/modernize-redundant-void-arg.cpp Thu Apr 14 14:28:13 2016 @@ -39,6 +39,12 @@ typedef int (*returns_fn_void_int_t(void // CHECK-MESSAGES: :[[@LINE-2]]:44: warning: {{.*}} in typedef // CHECK-FIXES: {{^}}typedef int (*returns_fn_void_int_t())();{{$}} +// Should work for type aliases as well as typedef. +using returns_fn_void_int_t2 = int (*(void))(void); +// CHECK-MESSAGES: :[[@LINE-1]]:39: warning: {{.*}} in type alias +// CHECK-MESSAGES: :[[@LINE-2]]:46: warning: {{.*}} in type alias +// CHECK-FIXES: {{^}}using returns_fn_void_int_t2 = int (*())();{{$}} + int (*returns_fn_void_int(void))(void) { // CHECK-MESSAGES: :[[@LINE-1]]:27: warning: {{.*}} in function definition // CHECK-MESSAGES: :[[@LINE-2]]:34: warning: {{.*}} in function definition _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits