[PATCH] D66270: [clang-tidy] Migrate objc-super-self to use isDerivedFrom 🚛
Stephane Moore via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Aug 15 19:28:11 PDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rL369081: [clang-tidy] Migrate objc-super-self to use isDerivedFrom 🚛 (authored by stephanemoore, committed by ).
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Changed prior to commit:
https://reviews.llvm.org/D66270?vs=215311&id=215528#toc
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D66270/new/
https://reviews.llvm.org/D66270
Files:
clang-tools-extra/trunk/clang-tidy/objc/SuperSelfCheck.cpp
Index: clang-tools-extra/trunk/clang-tidy/objc/SuperSelfCheck.cpp
===================================================================
--- clang-tools-extra/trunk/clang-tidy/objc/SuperSelfCheck.cpp
+++ clang-tools-extra/trunk/clang-tidy/objc/SuperSelfCheck.cpp
@@ -35,38 +35,25 @@
return Node.getMethodFamily() == OMF_init;
}
-/// \brief Matches Objective-C implementations of classes that directly or
-/// indirectly have a superclass matching \c InterfaceDecl.
+/// \brief Matches Objective-C implementations with interfaces that match
+/// \c Base.
///
-/// Note that a class is not considered to be a subclass of itself.
-///
-/// Example matches implementation declarations for Y and Z.
-/// (matcher = objcInterfaceDecl(isSubclassOf(hasName("X"))))
+/// Example matches implementation declarations for X.
+/// (matcher = objcImplementationDecl(hasInterface(hasName("X"))))
/// \code
/// @interface X
/// @end
-/// @interface Y : X
-/// @end
-/// @implementation Y // directly derived
+/// @implementation X
/// @end
-/// @interface Z : Y
-/// @end
-/// @implementation Z // indirectly derived
+/// @interface Y
+// @end
+/// @implementation Y
/// @end
/// \endcode
-AST_MATCHER_P(ObjCImplementationDecl, isSubclassOf,
- ast_matchers::internal::Matcher<ObjCInterfaceDecl>,
- InterfaceDecl) {
- // Check if any of the superclasses of the class match.
- for (const ObjCInterfaceDecl *SuperClass =
- Node.getClassInterface()->getSuperClass();
- SuperClass != nullptr; SuperClass = SuperClass->getSuperClass()) {
- if (InterfaceDecl.matches(*SuperClass, Finder, Builder))
- return true;
- }
-
- // No matches found.
- return false;
+AST_MATCHER_P(ObjCImplementationDecl, hasInterface,
+ ast_matchers::internal::Matcher<ObjCInterfaceDecl>, Base) {
+ const ObjCInterfaceDecl *InterfaceDecl = Node.getClassInterface();
+ return Base.matches(*InterfaceDecl, Finder, Builder);
}
/// \brief Matches Objective-C message expressions where the receiver is the
@@ -93,11 +80,11 @@
return;
Finder->addMatcher(
- objcMessageExpr(
- hasSelector("self"), isMessagingSuperInstance(),
- hasAncestor(objcMethodDecl(isInitializer(),
- hasDeclContext(objcImplementationDecl(
- isSubclassOf(hasName("NSObject")))))))
+ objcMessageExpr(hasSelector("self"), isMessagingSuperInstance(),
+ hasAncestor(objcMethodDecl(
+ isInitializer(),
+ hasDeclContext(objcImplementationDecl(hasInterface(
+ isDerivedFrom(hasName("NSObject"))))))))
.bind("message"),
this);
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D66270.215528.patch
Type: text/x-patch
Size: 2792 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190816/4232df73/attachment-0001.bin>
More information about the cfe-commits
mailing list