diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2008-01-04 00:27:46 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2008-01-04 00:27:46 +0000 |
commit | 775d5d02af519f871a2bcc48c4aa529cc8f4e94e (patch) | |
tree | d9d4b0a9cdbb5861f05f50c08b94a95e3e2a07ec /clang/Sema/Sema.cpp | |
parent | 816dea2fc5e402dacb86a2e2879d2ac8ac4acffd (diff) | |
download | bcm5719-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.cpp | 14 |
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) { |