[clang-tools-extra] r286213 - [clang-tidy] Simplify matchers

Alexander Kornienko via cfe-commits cfe-commits at lists.llvm.org
Mon Nov 7 21:58:08 PST 2016


Author: alexfh
Date: Mon Nov  7 23:58:07 2016
New Revision: 286213

URL: http://llvm.org/viewvc/llvm-project?rev=286213&view=rev
Log:
[clang-tidy] Simplify matchers

Modified:
    clang-tools-extra/trunk/clang-tidy/misc/NonCopyableObjects.cpp

Modified: clang-tools-extra/trunk/clang-tidy/misc/NonCopyableObjects.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/NonCopyableObjects.cpp?rev=286213&r1=286212&r2=286213&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/misc/NonCopyableObjects.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/misc/NonCopyableObjects.cpp Mon Nov  7 23:58:07 2016
@@ -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::registerMa
   // 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(




More information about the cfe-commits mailing list