diff options
author | Greg Clayton <gclayton@apple.com> | 2010-07-29 20:06:32 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2010-07-29 20:06:32 +0000 |
commit | 5fb47cd53551e6b89fc3c5db74e7a383e655c79e (patch) | |
tree | a96e18352d655d82080d731f61700db22755deba /lldb/source | |
parent | 1bb9bc72b94ad55ed38a3b504bfad9e60a60b16e (diff) | |
download | bcm5719-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.cpp | 20 |
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; } |