[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