summaryrefslogtreecommitdiffstats
path: root/lldb/source
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2010-07-29 20:06:32 +0000
committerGreg Clayton <gclayton@apple.com>2010-07-29 20:06:32 +0000
commit5fb47cd53551e6b89fc3c5db74e7a383e655c79e (patch)
treea96e18352d655d82080d731f61700db22755deba /lldb/source
parent1bb9bc72b94ad55ed38a3b504bfad9e60a60b16e (diff)
downloadbcm5719-llvm-5fb47cd53551e6b89fc3c5db74e7a383e655c79e.tar.gz
bcm5719-llvm-5fb47cd53551e6b89fc3c5db74e7a383e655c79e.zip
Fixed "void *ClangASTContext::CreatePointerType (void *clang_type);" to return objective C pointers for clang::Type::TypeClass types that are "clang::Type::ObjCObject" and "clang::Type::ObjCInterface" .
llvm-svn: 109795
Diffstat (limited to 'lldb/source')
-rw-r--r--lldb/source/Symbol/ClangASTContext.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/lldb/source/Symbol/ClangASTContext.cpp b/lldb/source/Symbol/ClangASTContext.cpp
index 52235dab240..ecc58722f14 100644
--- a/lldb/source/Symbol/ClangASTContext.cpp
+++ b/lldb/source/Symbol/ClangASTContext.cpp
@@ -2594,7 +2594,25 @@ void *
ClangASTContext::CreatePointerType (void *clang_type)
{
if (clang_type)
- return getASTContext()->getPointerType(QualType::getFromOpaquePtr(clang_type)).getAsOpaquePtr();
+ {
+ QualType qual_type (QualType::getFromOpaquePtr(clang_type));
+
+ switch (qual_type->getTypeClass())
+ {
+ case clang::Type::ObjCObject:
+ case clang::Type::ObjCInterface:
+ // TODO: find out if I need to make a pointer or objc pointer for "clang::Type::ObjCObjectPointer" types
+ //case clang::Type::ObjCObjectPointer:
+ return getASTContext()->getObjCObjectPointerType(qual_type).getAsOpaquePtr();
+
+ // TODO: can we detect if this type is a block type?
+// case clang::Type::BlockType:
+// return getASTContext()->getBlockPointerType(qual_type).getAsOpaquePtr();
+
+ default:
+ return getASTContext()->getPointerType(qual_type).getAsOpaquePtr();
+ }
+ }
return NULL;
}
OpenPOWER on IntegriCloud