diff options
author | Carlos Galvez <carlosgalvezp@gmail.com> | 2022-12-02 12:48:16 +0000 |
---|---|---|
committer | Carlos Galvez <carlosgalvezp@gmail.com> | 2022-12-08 11:40:50 +0000 |
commit | 7fd8387917167d9cb4bab14a8548f0f78b0eaa79 (patch) | |
tree | ccf465561db4760ea49a3d7ddf130f29dc274447 /clang-tools-extra/clang-tidy/misc/UseAnonymousNamespaceCheck.cpp | |
parent | 19158eb7f06d7ed4a834a35a3afa6bda2685a05b (diff) | |
download | llvm-7fd8387917167d9cb4bab14a8548f0f78b0eaa79.zip llvm-7fd8387917167d9cb4bab14a8548f0f78b0eaa79.tar.gz llvm-7fd8387917167d9cb4bab14a8548f0f78b0eaa79.tar.bz2 |
[clang-tidy] Do not warn about redundant static in misc-use-anonymous-namespace
The same functionality is already implemented in the
readability-static-definition-in-anonymous-namespace
check, including automatic fixes.
Differential Revision: https://reviews.llvm.org/D139197
Diffstat (limited to 'clang-tools-extra/clang-tidy/misc/UseAnonymousNamespaceCheck.cpp')
-rw-r--r-- | clang-tools-extra/clang-tidy/misc/UseAnonymousNamespaceCheck.cpp | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/clang-tools-extra/clang-tidy/misc/UseAnonymousNamespaceCheck.cpp b/clang-tools-extra/clang-tidy/misc/UseAnonymousNamespaceCheck.cpp index 5632347..878cba3 100644 --- a/clang-tools-extra/clang-tidy/misc/UseAnonymousNamespaceCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/UseAnonymousNamespaceCheck.cpp @@ -25,36 +25,29 @@ AST_MATCHER(FunctionDecl, isMemberFunction) { return llvm::isa<CXXMethodDecl>(&Node); } AST_MATCHER(VarDecl, isStaticDataMember) { return Node.isStaticDataMember(); } -} // namespace -static bool isInAnonymousNamespace(const Decl *Decl) { - const DeclContext *DC = Decl->getDeclContext(); - if (DC && DC->isNamespace()) { - const auto *ND = llvm::cast<NamespaceDecl>(DC); - if (ND && ND->isAnonymousNamespace()) - return true; - } - return false; +AST_MATCHER(Decl, isInAnonymousNamespace) { + return Node.isInAnonymousNamespace(); } +} // namespace template <typename T> void UseAnonymousNamespaceCheck::processMatch(const T *MatchedDecl) { StringRef Type = llvm::isa<VarDecl>(MatchedDecl) ? "variable" : "function"; - if (isInAnonymousNamespace(MatchedDecl)) - diag(MatchedDecl->getLocation(), "%0 %1 declared 'static' in " - "anonymous namespace, remove 'static'") - << Type << MatchedDecl; - else - diag(MatchedDecl->getLocation(), - "%0 %1 declared 'static', move to anonymous namespace instead") - << Type << MatchedDecl; + diag(MatchedDecl->getLocation(), + "%0 %1 declared 'static', move to anonymous namespace instead") + << Type << MatchedDecl; } void UseAnonymousNamespaceCheck::registerMatchers(MatchFinder *Finder) { Finder->addMatcher( - functionDecl(isStatic(), unless(isMemberFunction())).bind("func"), this); + functionDecl(isStatic(), + unless(anyOf(isInAnonymousNamespace(), isMemberFunction()))) + .bind("func"), + this); Finder->addMatcher( - varDecl(isStatic(), unless(anyOf(isStaticLocal(), isStaticDataMember()))) + varDecl(isStatic(), unless(anyOf(isInAnonymousNamespace(), + isStaticLocal(), isStaticDataMember()))) .bind("var"), this); } |