stephanemoore created this revision. Herald added subscribers: cfe-commits, xazax.hun. Herald added a project: clang.
This migrates objc-forbidden-subclassing to `isDerivedFrom` as it now supports matching Objective-C interface declarations. Test Notes: Ran clang tools tests. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D66269 Files: clang-tools-extra/clang-tidy/objc/ForbiddenSubclassingCheck.cpp Index: clang-tools-extra/clang-tidy/objc/ForbiddenSubclassingCheck.cpp =================================================================== --- clang-tools-extra/clang-tidy/objc/ForbiddenSubclassingCheck.cpp +++ clang-tools-extra/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>(
Index: clang-tools-extra/clang-tidy/objc/ForbiddenSubclassingCheck.cpp =================================================================== --- clang-tools-extra/clang-tidy/objc/ForbiddenSubclassingCheck.cpp +++ clang-tools-extra/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>(
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits