11 #include "clang/AST/ASTContext.h"
12 #include "clang/ASTMatchers/ASTMatchFinder.h"
14 using namespace clang::ast_matchers;
20 void VariadicFunctionDefCheck::registerMatchers(MatchFinder *
Finder) {
21 if (!getLangOpts().CPlusPlus)
27 functionDecl(isDefinition(), isVariadic(), unless(isExternC()))
32 void VariadicFunctionDefCheck::check(
const MatchFinder::MatchResult &Result) {
33 const auto *FD = Result.Nodes.getNodeAs<FunctionDecl>(
"func");
35 diag(FD->getLocation(),
36 "do not define a C-style variadic function; consider using a function "
37 "parameter pack or currying instead");
std::unique_ptr< ast_matchers::MatchFinder > Finder