[clang-tidy] Migrate objc-forbidden-subclassing to use isDerivedFrom 🚛

Summary:
This migrates objc-forbidden-subclassing to `isDerivedFrom` as it now
supports matching Objective-C interface declarations.

Test Notes:
Ran clang tools tests.

Reviewers: aaron.ballman, gribozavr

Reviewed By: aaron.ballman

Subscribers: xazax.hun, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D66269

git-svn-id: https://llvm.org/svn/llvm-project/clang-tools-extra/trunk@369076 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/clang-tidy/objc/ForbiddenSubclassingCheck.cpp b/clang-tidy/objc/ForbiddenSubclassingCheck.cpp
index 6b8e795..0703bca 100644
--- a/clang-tidy/objc/ForbiddenSubclassingCheck.cpp
+++ b/clang-tidy/objc/ForbiddenSubclassingCheck.cpp
@@ -37,33 +37,6 @@
     "UITextInputMode;"
     "UIWebView";
 
-/// \brief Matches Objective-C classes that directly or indirectly
-/// have a superclass matching \c Base.
-///
-/// Note that a class is not considered to be a subclass of itself.
-///
-/// Example matches Y, Z
-/// (matcher = objcInterfaceDecl(hasName("X")))
-/// \code
-///   @interface X
-///   @end
-///   @interface Y : X  // directly derived
-///   @end
-///   @interface Z : Y  // indirectly derived
-///   @end
-/// \endcode
-AST_MATCHER_P(ObjCInterfaceDecl, isSubclassOf,
-              ast_matchers::internal::Matcher<ObjCInterfaceDecl>, Base) {
-  for (const auto *SuperClass = Node.getSuperClass();
-       SuperClass != nullptr;
-       SuperClass = SuperClass->getSuperClass()) {
-    if (Base.matches(*SuperClass, Finder, Builder)) {
-      return true;
-    }
-  }
-  return false;
-}
-
 } // namespace
 
 ForbiddenSubclassingCheck::ForbiddenSubclassingCheck(
@@ -82,7 +55,7 @@
 
   Finder->addMatcher(
       objcInterfaceDecl(
-          isSubclassOf(
+          isDerivedFrom(
               objcInterfaceDecl(
                   hasAnyName(
                       std::vector<StringRef>(