[Lldb-commits] [lldb] r197775 - Fixed the AST importer to ensure that base classes

Sean Callanan scallanan at apple.com
Thu Dec 19 20:09:06 PST 2013


Author: spyffe
Date: Thu Dec 19 22:09:05 2013
New Revision: 197775

URL: http://llvm.org/viewvc/llvm-project?rev=197775&view=rev
Log:
Fixed the AST importer to ensure that base classes
of Objective-C classes are completed, and that
variables of Objective-C types have their types
completed when the variables are reported.

This fixes a long-standing issue where ivars did
not show up correctly on 32-bit OS X.

<rdar://problem/12184093> 

Modified:
    lldb/trunk/source/Expression/ClangASTSource.cpp
    lldb/trunk/source/Expression/ClangExpressionDeclMap.cpp

Modified: lldb/trunk/source/Expression/ClangASTSource.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/ClangASTSource.cpp?rev=197775&r1=197774&r2=197775&view=diff
==============================================================================
--- lldb/trunk/source/Expression/ClangASTSource.cpp (original)
+++ lldb/trunk/source/Expression/ClangASTSource.cpp Thu Dec 19 22:09:05 2013
@@ -318,6 +318,10 @@ ClangASTSource::CompleteType (clang::Obj
     
     m_ast_importer->CompleteObjCInterfaceDecl (interface_decl);
     
+    if (interface_decl->getSuperClass() &&
+        interface_decl->getSuperClass() != interface_decl)
+        CompleteType(interface_decl->getSuperClass());
+    
     if (log)
     {
         log->Printf("      [COID] After:");

Modified: lldb/trunk/source/Expression/ClangExpressionDeclMap.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/ClangExpressionDeclMap.cpp?rev=197775&r1=197774&r2=197775&view=diff
==============================================================================
--- lldb/trunk/source/Expression/ClangExpressionDeclMap.cpp (original)
+++ lldb/trunk/source/Expression/ClangExpressionDeclMap.cpp Thu Dec 19 22:09:05 2013
@@ -1605,6 +1605,8 @@ ClangExpressionDeclMap::AddOneVariable (
     {
         if (const TagType *tag_type = dyn_cast<TagType>(parser_type))
             CompleteType(tag_type->getDecl());
+        if (const ObjCObjectPointerType *objc_object_ptr_type = dyn_cast<ObjCObjectPointerType>(parser_type))
+            CompleteType(objc_object_ptr_type->getInterfaceDecl());
     }
     
     





More information about the lldb-commits mailing list