diff options
Diffstat (limited to 'clang-tools-extra/clang-tidy/google/StringReferenceMemberCheck.cpp')
-rw-r--r-- | clang-tools-extra/clang-tidy/google/StringReferenceMemberCheck.cpp | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/clang-tools-extra/clang-tidy/google/StringReferenceMemberCheck.cpp b/clang-tools-extra/clang-tidy/google/StringReferenceMemberCheck.cpp deleted file mode 100644 index f3a7bd99209..00000000000 --- a/clang-tools-extra/clang-tidy/google/StringReferenceMemberCheck.cpp +++ /dev/null @@ -1,51 +0,0 @@ -//===--- StringReferenceMemberCheck.cpp - clang-tidy ------------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "StringReferenceMemberCheck.h" -#include "clang/AST/ASTContext.h" -#include "clang/ASTMatchers/ASTMatchFinder.h" -#include "clang/ASTMatchers/ASTMatchers.h" - -using namespace clang::ast_matchers; - -namespace clang { -namespace tidy { -namespace google { -namespace runtime { - -void StringReferenceMemberCheck::registerMatchers( - ast_matchers::MatchFinder *Finder) { - // Only register the matchers for C++; the functionality currently does not - // provide any benefit to other languages, despite being benign. - if (!getLangOpts().CPlusPlus) - return; - - // Look for const references to std::string or ::string. - auto String = anyOf(namedDecl(hasName("::std::string")), - namedDecl(hasName("::string"))); - auto ConstString = qualType(isConstQualified(), hasDeclaration(String)); - - // Ignore members in template instantiations. - Finder->addMatcher( - fieldDecl(hasType(references(ConstString)), unless(isInstantiated())) - .bind("member"), - this); -} - -void StringReferenceMemberCheck::check(const MatchFinder::MatchResult &Result) { - const auto *Member = Result.Nodes.getNodeAs<FieldDecl>("member"); - diag(Member->getLocStart(), "const string& members are dangerous; it is much " - "better to use alternatives, such as pointers or " - "simple constants"); -} - -} // namespace runtime -} // namespace google -} // namespace tidy -} // namespace clang |