summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Kornienko <alexfh@google.com>2016-11-08 05:58:07 +0000
committerAlexander Kornienko <alexfh@google.com>2016-11-08 05:58:07 +0000
commit76e4315a0efdaad7cd57d6a1084173c82c2212f4 (patch)
tree29a3ee2ab6e9ea4f79c933cdbbbacb47e5dbe24e
parent171244fb7af5b3ac308238820578bbddd7bb1709 (diff)
downloadbcm5719-llvm-76e4315a0efdaad7cd57d6a1084173c82c2212f4.tar.gz
bcm5719-llvm-76e4315a0efdaad7cd57d6a1084173c82c2212f4.zip
[clang-tidy] Simplify matchers
llvm-svn: 286213
-rw-r--r--clang-tools-extra/clang-tidy/misc/NonCopyableObjects.cpp47
1 files changed, 11 insertions, 36 deletions
diff --git a/clang-tools-extra/clang-tidy/misc/NonCopyableObjects.cpp b/clang-tools-extra/clang-tidy/misc/NonCopyableObjects.cpp
index 8bc558f0495..de152754e3c 100644
--- a/clang-tools-extra/clang-tidy/misc/NonCopyableObjects.cpp
+++ b/clang-tools-extra/clang-tidy/misc/NonCopyableObjects.cpp
@@ -18,40 +18,6 @@ namespace clang {
namespace tidy {
namespace misc {
-namespace {
-// FIXME: it would be good to make a list that is also user-configurable so that
-// users can add their own elements to the list. However, it may require some
-// extra thought since POSIX types and FILE types are usable in different ways.
-bool isPOSIXTypeName(StringRef ClassName) {
- static const char *const TypeNames[] = {
- "::pthread_cond_t",
- "::pthread_mutex_t",
- "pthread_cond_t",
- "pthread_mutex_t"
- };
- return std::binary_search(std::begin(TypeNames), std::end(TypeNames),
- ClassName);
-}
-
-bool isFILETypeName(StringRef ClassName) {
- static const char *const TypeNames[] = {
- "::FILE",
- "FILE",
- "std::FILE"
- };
- return std::binary_search(std::begin(TypeNames), std::end(TypeNames),
- ClassName);
-}
-
-AST_MATCHER(NamedDecl, isFILEType) {
- return isFILETypeName(Node.getQualifiedNameAsString());
-}
-
-AST_MATCHER(NamedDecl, isPOSIXType) {
- return isPOSIXTypeName(Node.getQualifiedNameAsString());
-}
-} // namespace
-
void NonCopyableObjectsCheck::registerMatchers(MatchFinder *Finder) {
// There are two ways to get into trouble with objects like FILE *:
// dereferencing the pointer type to be a non-pointer type, and declaring
@@ -63,8 +29,17 @@ void NonCopyableObjectsCheck::registerMatchers(MatchFinder *Finder) {
// non-pointer variable or data member of the type, but it is not reasonable
// to dereference a pointer to the type, or declare a parameter of non-pointer
// type.
- auto BadFILEType = hasType(namedDecl(isFILEType()).bind("type_decl"));
- auto BadPOSIXType = hasType(namedDecl(isPOSIXType()).bind("type_decl"));
+ // FIXME: it would be good to make a list that is also user-configurable so
+ // that users can add their own elements to the list. However, it may require
+ // some extra thought since POSIX types and FILE types are usable in different
+ // ways.
+
+ auto BadFILEType = hasType(
+ namedDecl(hasAnyName("::FILE", "FILE", "std::FILE")).bind("type_decl"));
+ auto BadPOSIXType =
+ hasType(namedDecl(hasAnyName("::pthread_cond_t", "::pthread_mutex_t",
+ "pthread_cond_t", "pthread_mutex_t"))
+ .bind("type_decl"));
auto BadEitherType = anyOf(BadFILEType, BadPOSIXType);
Finder->addMatcher(
OpenPOWER on IntegriCloud