Author: alexfh Date: Wed Jul 30 09:31:36 2014 New Revision: 214307 URL: http://llvm.org/viewvc/llvm-project?rev=214307&view=rev Log: Don't warn on NewCallback argument comments, as they are arguments for the function the callback points to.
Reviewers: djasper Reviewed By: djasper Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D4722 Modified: clang-tools-extra/trunk/clang-tidy/misc/ArgumentCommentCheck.cpp clang-tools-extra/trunk/test/clang-tidy/arg-comments.cpp Modified: clang-tools-extra/trunk/clang-tidy/misc/ArgumentCommentCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/ArgumentCommentCheck.cpp?rev=214307&r1=214306&r2=214307&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/misc/ArgumentCommentCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/misc/ArgumentCommentCheck.cpp Wed Jul 30 09:31:36 2014 @@ -8,9 +8,6 @@ //===----------------------------------------------------------------------===// #include "ArgumentCommentCheck.h" -#include "../ClangTidy.h" -#include "../ClangTidyModule.h" -#include "../ClangTidyModuleRegistry.h" #include "clang/AST/ASTContext.h" #include "clang/ASTMatchers/ASTMatchFinder.h" #include "clang/Lex/Lexer.h" @@ -25,7 +22,15 @@ ArgumentCommentCheck::ArgumentCommentChe : IdentRE("^(/\\* *)([_A-Za-z][_A-Za-z0-9]*)( *= *\\*/)$") {} void ArgumentCommentCheck::registerMatchers(MatchFinder *Finder) { - Finder->addMatcher(callExpr(unless(operatorCallExpr())).bind("expr"), this); + Finder->addMatcher( + callExpr(unless(operatorCallExpr()), + // NewCallback's arguments relate to the pointed function, don't + // check them against NewCallback's parameter names. + // FIXME: Make this configurable. + unless(hasDeclaration(functionDecl(anyOf( + hasName("NewCallback"), hasName("NewPermanentCallback")))))) + .bind("expr"), + this); Finder->addMatcher(constructExpr().bind("expr"), this); } Modified: clang-tools-extra/trunk/test/clang-tidy/arg-comments.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/arg-comments.cpp?rev=214307&r1=214306&r2=214307&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/arg-comments.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/arg-comments.cpp Wed Jul 30 09:31:36 2014 @@ -1,21 +1,29 @@ -// RUN: clang-tidy --checks='-*,misc-argument-comment' %s -- | FileCheck %s +// RUN: clang-tidy --checks='-*,misc-argument-comment' %s -- -std=c++11 | FileCheck %s -implicit-check-not='{{warning:|error:}}' // FIXME: clang-tidy should provide a -verify mode to make writing these checks // easier and more accurate. -// CHECK-NOT: warning - -void f(int x, int y); - void ffff(int xxxx, int yyyy); +void f(int x, int y); void g() { // CHECK: [[@LINE+5]]:5: warning: argument name 'y' in comment does not match parameter name 'x' - // CHECK: :8:12: note: 'x' declared here + // CHECK: :[[@LINE-3]]:12: note: 'x' declared here // CHECK: [[@LINE+3]]:14: warning: argument name 'z' in comment does not match parameter name 'y' - // CHECK: :8:19: note: 'y' declared here + // CHECK: :[[@LINE-5]]:19: note: 'y' declared here // CHECK-NOT: warning f(/*y=*/0, /*z=*/0); } -// CHECK-NOT: warning +struct Closure {}; + +template <typename T1, typename T2> +Closure *NewCallback(void (*f)(T1, T2), T1 arg1, T2 arg2) { return nullptr; } + +template <typename T1, typename T2> +Closure *NewPermanentCallback(void (*f)(T1, T2), T1 arg1, T2 arg2) { return nullptr; } + +void h() { + (void)NewCallback(&ffff, /*xxxx=*/11, /*yyyy=*/22); + (void)NewPermanentCallback(&ffff, /*xxxx=*/11, /*yyyy=*/22); +} _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
