[Lldb-commits] [lldb] r116181 - in /lldb/trunk/source/Symbol: ClangASTContext.cpp ClangASTType.cpp Type.cpp

Greg Clayton gclayton at apple.com
Sun Oct 10 19:25:35 PDT 2010


Author: gclayton
Date: Sun Oct 10 21:25:34 2010
New Revision: 116181

URL: http://llvm.org/viewvc/llvm-project?rev=116181&view=rev
Log:
Fixed an issue where objc types weren't ever getting fully resolved (beyond
forward declarations).


Modified:
    lldb/trunk/source/Symbol/ClangASTContext.cpp
    lldb/trunk/source/Symbol/ClangASTType.cpp
    lldb/trunk/source/Symbol/Type.cpp

Modified: lldb/trunk/source/Symbol/ClangASTContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/ClangASTContext.cpp?rev=116181&r1=116180&r2=116181&view=diff
==============================================================================
--- lldb/trunk/source/Symbol/ClangASTContext.cpp (original)
+++ lldb/trunk/source/Symbol/ClangASTContext.cpp Sun Oct 10 21:25:34 2010
@@ -784,7 +784,7 @@
 
     if (language == eLanguageTypeObjC)
     {
-        bool isForwardDecl = false;
+        bool isForwardDecl = true;
         bool isInternal = false;
         return CreateObjCClass (name, decl_ctx, isForwardDecl, isInternal);
     }

Modified: lldb/trunk/source/Symbol/ClangASTType.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/ClangASTType.cpp?rev=116181&r1=116180&r2=116181&view=diff
==============================================================================
--- lldb/trunk/source/Symbol/ClangASTType.cpp (original)
+++ lldb/trunk/source/Symbol/ClangASTType.cpp Sun Oct 10 21:25:34 2010
@@ -825,6 +825,16 @@
             return tag_decl->getDefinition() != NULL;
         return false;
     }
+    else
+    {
+        clang::ObjCObjectType *objc_class_type = dyn_cast<clang::ObjCObjectType>(qual_type);
+        if (objc_class_type)
+        {
+            clang::ObjCInterfaceDecl *class_interface_decl = objc_class_type->getInterface();
+            if (class_interface_decl->isForwardDecl())
+                return false;
+        }
+    }
     return true;
 }
 

Modified: lldb/trunk/source/Symbol/Type.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/Type.cpp?rev=116181&r1=116180&r2=116181&view=diff
==============================================================================
--- lldb/trunk/source/Symbol/Type.cpp (original)
+++ lldb/trunk/source/Symbol/Type.cpp Sun Oct 10 21:25:34 2010
@@ -529,15 +529,14 @@
             // definition.
             m_symbol_file->ResolveClangOpaqueTypeDefinition (m_clang_qual_type);
         }
-        else
-        {
-            // If we have an encoding type, then we need to make sure it is 
-            // resolved appropriately
-            Type *encoding_type = GetEncodingType ();
-            if (encoding_type != NULL)
-                encoding_type->ResolveClangType (forward_decl_is_ok);
-        }
     }
+    
+    // If we have an encoding type, then we need to make sure it is 
+    // resolved appropriately
+    Type *encoding_type = GetEncodingType ();
+    if (encoding_type != NULL)
+        encoding_type->ResolveClangType (forward_decl_is_ok);
+
 //    if (g_depth > 0)
 //        --g_depth;
     return m_clang_qual_type != NULL;





More information about the lldb-commits mailing list