summaryrefslogtreecommitdiffstats
path: root/lib/AST/NSAPI.cpp
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2015-09-06 18:36:24 +0000
committerdim <dim@FreeBSD.org>2015-09-06 18:36:24 +0000
commit4238dc458ed9a048965af111b979fd51d288f22c (patch)
tree3d3ed1e1987dbe6444294b1b4e249814b97b97a5 /lib/AST/NSAPI.cpp
parent6416b56f5a3923c6c264b46365e16718ccabf081 (diff)
downloadFreeBSD-src-4238dc458ed9a048965af111b979fd51d288f22c.zip
FreeBSD-src-4238dc458ed9a048965af111b979fd51d288f22c.tar.gz
Import clang 3.7.0 release (r246257).
Diffstat (limited to 'lib/AST/NSAPI.cpp')
-rw-r--r--lib/AST/NSAPI.cpp22
1 files changed, 21 insertions, 1 deletions
diff --git a/lib/AST/NSAPI.cpp b/lib/AST/NSAPI.cpp
index a9b10ed..c9264d5 100644
--- a/lib/AST/NSAPI.cpp
+++ b/lib/AST/NSAPI.cpp
@@ -9,6 +9,7 @@
#include "clang/AST/NSAPI.h"
#include "clang/AST/ASTContext.h"
+#include "clang/AST/DeclObjC.h"
#include "clang/AST/Expr.h"
#include "llvm/ADT/StringSwitch.h"
@@ -29,7 +30,6 @@ IdentifierInfo *NSAPI::getNSClassId(NSClassIdKindKind K) const {
"NSMutableDictionary",
"NSNumber",
"NSMutableSet",
- "NSCountedSet",
"NSMutableOrderedSet",
"NSValue"
};
@@ -511,6 +511,26 @@ bool NSAPI::isMacroDefined(StringRef Id) const {
return Ctx.Idents.get(Id).hasMacroDefinition();
}
+bool NSAPI::isSubclassOfNSClass(ObjCInterfaceDecl *InterfaceDecl,
+ NSClassIdKindKind NSClassKind) const {
+ if (!InterfaceDecl) {
+ return false;
+ }
+
+ IdentifierInfo *NSClassID = getNSClassId(NSClassKind);
+
+ bool IsSubclass = false;
+ do {
+ IsSubclass = NSClassID == InterfaceDecl->getIdentifier();
+
+ if (IsSubclass) {
+ break;
+ }
+ } while ((InterfaceDecl = InterfaceDecl->getSuperClass()));
+
+ return IsSubclass;
+}
+
bool NSAPI::isObjCTypedef(QualType T,
StringRef name, IdentifierInfo *&II) const {
if (!Ctx.getLangOpts().ObjC1)
OpenPOWER on IntegriCloud