summaryrefslogtreecommitdiffstats
path: root/clang/Sema/Sema.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2008-01-04 00:27:46 +0000
committerFariborz Jahanian <fjahanian@apple.com>2008-01-04 00:27:46 +0000
commit775d5d02af519f871a2bcc48c4aa529cc8f4e94e (patch)
treed9d4b0a9cdbb5861f05f50c08b94a95e3e2a07ec /clang/Sema/Sema.cpp
parent816dea2fc5e402dacb86a2e2879d2ac8ac4acffd (diff)
downloadbcm5719-llvm-775d5d02af519f871a2bcc48c4aa529cc8f4e94e.tar.gz
bcm5719-llvm-775d5d02af519f871a2bcc48c4aa529cc8f4e94e.zip
Patch to add semantics check for ObjC2's foreacn statement.
llvm-svn: 45561
Diffstat (limited to 'clang/Sema/Sema.cpp')
-rw-r--r--clang/Sema/Sema.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/clang/Sema/Sema.cpp b/clang/Sema/Sema.cpp
index bca3ec508bf..8f340db14e0 100644
--- a/clang/Sema/Sema.cpp
+++ b/clang/Sema/Sema.cpp
@@ -26,6 +26,20 @@ bool Sema::isBuiltinObjcType(TypedefDecl *TD) {
strcmp(typeName, "SEL") == 0 || strcmp(typeName, "Protocol") == 0;
}
+bool Sema::isObjcObjectPointerType(QualType type) const {
+ if (!type->isPointerType() && !type->isObjcQualifiedIdType())
+ return false;
+ if (type == Context.getObjcIdType() || type == Context.getObjcClassType() ||
+ type->isObjcQualifiedIdType())
+ return true;
+
+ while (type->isPointerType()) {
+ PointerType *pointerType = static_cast<PointerType*>(type.getTypePtr());
+ type = pointerType->getPointeeType();
+ }
+ return (type->isObjcInterfaceType() || type->isObjcQualifiedIdType());
+}
+
void Sema::ActOnTranslationUnitScope(SourceLocation Loc, Scope *S) {
TUScope = S;
if (PP.getLangOptions().ObjC1) {
OpenPOWER on IntegriCloud