[Lldb-commits] [lldb] r282898 - Fixed several i386 Objective-C tests by completing objects, not their pointers.

Sean Callanan via lldb-commits lldb-commits at lists.llvm.org
Fri Sep 30 11:44:44 PDT 2016


Author: spyffe
Date: Fri Sep 30 13:44:43 2016
New Revision: 282898

URL: http://llvm.org/viewvc/llvm-project?rev=282898&view=rev
Log:
Fixed several i386 Objective-C tests by completing objects, not their pointers.

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

Modified: lldb/trunk/source/Symbol/ClangASTContext.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Symbol/ClangASTContext.cpp?rev=282898&r1=282897&r2=282898&view=diff
==============================================================================
--- lldb/trunk/source/Symbol/ClangASTContext.cpp (original)
+++ lldb/trunk/source/Symbol/ClangASTContext.cpp Fri Sep 30 13:44:43 2016
@@ -4463,19 +4463,22 @@ ClangASTContext::GetNumMemberFunctions(l
       }
       break;
 
-    case clang::Type::ObjCObjectPointer:
-      if (GetCompleteType(type)) {
-        const clang::ObjCObjectPointerType *objc_class_type =
-            qual_type->getAsObjCInterfacePointerType();
-        if (objc_class_type) {
-          clang::ObjCInterfaceDecl *class_interface_decl =
-              objc_class_type->getInterfaceDecl();
-          if (class_interface_decl)
-            num_functions = std::distance(class_interface_decl->meth_begin(),
-                                          class_interface_decl->meth_end());
+    case clang::Type::ObjCObjectPointer: {
+      const clang::ObjCObjectPointerType *objc_class_type =
+          qual_type->getAsObjCInterfacePointerType();
+      const clang::ObjCInterfaceType *objc_interface_type =
+          objc_class_type->getInterfaceType();
+      if (objc_interface_type &&
+          GetCompleteType((lldb::opaque_compiler_type_t)objc_interface_type)) {
+        clang::ObjCInterfaceDecl *class_interface_decl =
+            objc_interface_type->getDecl();
+        if (class_interface_decl) {
+          num_functions = std::distance(class_interface_decl->meth_begin(),
+                                        class_interface_decl->meth_end());
         }
       }
       break;
+    }
 
     case clang::Type::ObjCObject:
     case clang::Type::ObjCInterface:
@@ -4568,34 +4571,36 @@ ClangASTContext::GetMemberFunctionAtInde
       }
       break;
 
-    case clang::Type::ObjCObjectPointer:
-      if (GetCompleteType(type)) {
-        const clang::ObjCObjectPointerType *objc_class_type =
-            qual_type->getAsObjCInterfacePointerType();
-        if (objc_class_type) {
-          clang::ObjCInterfaceDecl *class_interface_decl =
-              objc_class_type->getInterfaceDecl();
-          if (class_interface_decl) {
-            auto method_iter = class_interface_decl->meth_begin();
-            auto method_end = class_interface_decl->meth_end();
-            if (idx <
-                static_cast<size_t>(std::distance(method_iter, method_end))) {
-              std::advance(method_iter, idx);
-              clang::ObjCMethodDecl *objc_method_decl =
-                  method_iter->getCanonicalDecl();
-              if (objc_method_decl) {
-                clang_decl = CompilerDecl(this, objc_method_decl);
-                name = objc_method_decl->getSelector().getAsString();
-                if (objc_method_decl->isClassMethod())
-                  kind = lldb::eMemberFunctionKindStaticMethod;
-                else
-                  kind = lldb::eMemberFunctionKindInstanceMethod;
-              }
+    case clang::Type::ObjCObjectPointer: {
+      const clang::ObjCObjectPointerType *objc_class_type =
+          qual_type->getAsObjCInterfacePointerType();
+      const clang::ObjCInterfaceType *objc_interface_type =
+          objc_class_type->getInterfaceType();
+      if (objc_interface_type &&
+          GetCompleteType((lldb::opaque_compiler_type_t)objc_interface_type)) {
+        clang::ObjCInterfaceDecl *class_interface_decl =
+            objc_interface_type->getDecl();
+        if (class_interface_decl) {
+          auto method_iter = class_interface_decl->meth_begin();
+          auto method_end = class_interface_decl->meth_end();
+          if (idx <
+              static_cast<size_t>(std::distance(method_iter, method_end))) {
+            std::advance(method_iter, idx);
+            clang::ObjCMethodDecl *objc_method_decl =
+                method_iter->getCanonicalDecl();
+            if (objc_method_decl) {
+              clang_decl = CompilerDecl(this, objc_method_decl);
+              name = objc_method_decl->getSelector().getAsString();
+              if (objc_method_decl->isClassMethod())
+                kind = lldb::eMemberFunctionKindStaticMethod;
+              else
+                kind = lldb::eMemberFunctionKindInstanceMethod;
             }
           }
         }
       }
       break;
+    }
 
     case clang::Type::ObjCObject:
     case clang::Type::ObjCInterface:
@@ -5629,19 +5634,21 @@ uint32_t ClangASTContext::GetNumFields(l
                 .GetNumFields();
     break;
 
-  case clang::Type::ObjCObjectPointer:
-    if (GetCompleteType(type)) {
-      const clang::ObjCObjectPointerType *objc_class_type =
-          qual_type->getAsObjCInterfacePointerType();
-      if (objc_class_type) {
-        clang::ObjCInterfaceDecl *class_interface_decl =
-            objc_class_type->getInterfaceDecl();
-
-        if (class_interface_decl)
-          count = class_interface_decl->ivar_size();
+  case clang::Type::ObjCObjectPointer: {
+    const clang::ObjCObjectPointerType *objc_class_type =
+        qual_type->getAsObjCInterfacePointerType();
+    const clang::ObjCInterfaceType *objc_interface_type =
+        objc_class_type->getInterfaceType();
+    if (objc_interface_type &&
+        GetCompleteType((lldb::opaque_compiler_type_t)objc_interface_type)) {
+      clang::ObjCInterfaceDecl *class_interface_decl =
+          objc_interface_type->getDecl();
+      if (class_interface_decl) {
+        count = class_interface_decl->ivar_size();
       }
     }
     break;
+  }
 
   case clang::Type::ObjCObject:
   case clang::Type::ObjCInterface:
@@ -5774,13 +5781,16 @@ CompilerType ClangASTContext::GetFieldAt
     }
     break;
 
-  case clang::Type::ObjCObjectPointer:
-    if (GetCompleteType(type)) {
-      const clang::ObjCObjectPointerType *objc_class_type =
-          qual_type->getAsObjCInterfacePointerType();
-      if (objc_class_type) {
-        clang::ObjCInterfaceDecl *class_interface_decl =
-            objc_class_type->getInterfaceDecl();
+  case clang::Type::ObjCObjectPointer: {
+    const clang::ObjCObjectPointerType *objc_class_type =
+        qual_type->getAsObjCInterfacePointerType();
+    const clang::ObjCInterfaceType *objc_interface_type =
+        objc_class_type->getInterfaceType();
+    if (objc_interface_type &&
+        GetCompleteType((lldb::opaque_compiler_type_t)objc_interface_type)) {
+      clang::ObjCInterfaceDecl *class_interface_decl =
+          objc_interface_type->getDecl();
+      if (class_interface_decl) {
         return CompilerType(
             this, GetObjCFieldAtIndex(getASTContext(), class_interface_decl,
                                       idx, name, bit_offset_ptr,
@@ -5788,6 +5798,7 @@ CompilerType ClangASTContext::GetFieldAt
       }
     }
     break;
+  }
 
   case clang::Type::ObjCObject:
   case clang::Type::ObjCInterface:




More information about the lldb-commits mailing list