Skip to content

Commit f9c622a

Browse files
committed
Fixed several i386 Objective-C tests by completing objects, not their pointers.
llvm-svn: 282898
1 parent 768de2c commit f9c622a

File tree

1 file changed

+61
-50
lines changed

1 file changed

+61
-50
lines changed

lldb/source/Symbol/ClangASTContext.cpp

Lines changed: 61 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -4463,19 +4463,22 @@ ClangASTContext::GetNumMemberFunctions(lldb::opaque_compiler_type_t type) {
44634463
}
44644464
break;
44654465

4466-
case clang::Type::ObjCObjectPointer:
4467-
if (GetCompleteType(type)) {
4468-
const clang::ObjCObjectPointerType *objc_class_type =
4469-
qual_type->getAsObjCInterfacePointerType();
4470-
if (objc_class_type) {
4471-
clang::ObjCInterfaceDecl *class_interface_decl =
4472-
objc_class_type->getInterfaceDecl();
4473-
if (class_interface_decl)
4474-
num_functions = std::distance(class_interface_decl->meth_begin(),
4475-
class_interface_decl->meth_end());
4466+
case clang::Type::ObjCObjectPointer: {
4467+
const clang::ObjCObjectPointerType *objc_class_type =
4468+
qual_type->getAsObjCInterfacePointerType();
4469+
const clang::ObjCInterfaceType *objc_interface_type =
4470+
objc_class_type->getInterfaceType();
4471+
if (objc_interface_type &&
4472+
GetCompleteType((lldb::opaque_compiler_type_t)objc_interface_type)) {
4473+
clang::ObjCInterfaceDecl *class_interface_decl =
4474+
objc_interface_type->getDecl();
4475+
if (class_interface_decl) {
4476+
num_functions = std::distance(class_interface_decl->meth_begin(),
4477+
class_interface_decl->meth_end());
44764478
}
44774479
}
44784480
break;
4481+
}
44794482

44804483
case clang::Type::ObjCObject:
44814484
case clang::Type::ObjCInterface:
@@ -4568,34 +4571,36 @@ ClangASTContext::GetMemberFunctionAtIndex(lldb::opaque_compiler_type_t type,
45684571
}
45694572
break;
45704573

4571-
case clang::Type::ObjCObjectPointer:
4572-
if (GetCompleteType(type)) {
4573-
const clang::ObjCObjectPointerType *objc_class_type =
4574-
qual_type->getAsObjCInterfacePointerType();
4575-
if (objc_class_type) {
4576-
clang::ObjCInterfaceDecl *class_interface_decl =
4577-
objc_class_type->getInterfaceDecl();
4578-
if (class_interface_decl) {
4579-
auto method_iter = class_interface_decl->meth_begin();
4580-
auto method_end = class_interface_decl->meth_end();
4581-
if (idx <
4582-
static_cast<size_t>(std::distance(method_iter, method_end))) {
4583-
std::advance(method_iter, idx);
4584-
clang::ObjCMethodDecl *objc_method_decl =
4585-
method_iter->getCanonicalDecl();
4586-
if (objc_method_decl) {
4587-
clang_decl = CompilerDecl(this, objc_method_decl);
4588-
name = objc_method_decl->getSelector().getAsString();
4589-
if (objc_method_decl->isClassMethod())
4590-
kind = lldb::eMemberFunctionKindStaticMethod;
4591-
else
4592-
kind = lldb::eMemberFunctionKindInstanceMethod;
4593-
}
4574+
case clang::Type::ObjCObjectPointer: {
4575+
const clang::ObjCObjectPointerType *objc_class_type =
4576+
qual_type->getAsObjCInterfacePointerType();
4577+
const clang::ObjCInterfaceType *objc_interface_type =
4578+
objc_class_type->getInterfaceType();
4579+
if (objc_interface_type &&
4580+
GetCompleteType((lldb::opaque_compiler_type_t)objc_interface_type)) {
4581+
clang::ObjCInterfaceDecl *class_interface_decl =
4582+
objc_interface_type->getDecl();
4583+
if (class_interface_decl) {
4584+
auto method_iter = class_interface_decl->meth_begin();
4585+
auto method_end = class_interface_decl->meth_end();
4586+
if (idx <
4587+
static_cast<size_t>(std::distance(method_iter, method_end))) {
4588+
std::advance(method_iter, idx);
4589+
clang::ObjCMethodDecl *objc_method_decl =
4590+
method_iter->getCanonicalDecl();
4591+
if (objc_method_decl) {
4592+
clang_decl = CompilerDecl(this, objc_method_decl);
4593+
name = objc_method_decl->getSelector().getAsString();
4594+
if (objc_method_decl->isClassMethod())
4595+
kind = lldb::eMemberFunctionKindStaticMethod;
4596+
else
4597+
kind = lldb::eMemberFunctionKindInstanceMethod;
45944598
}
45954599
}
45964600
}
45974601
}
45984602
break;
4603+
}
45994604

46004605
case clang::Type::ObjCObject:
46014606
case clang::Type::ObjCInterface:
@@ -5629,19 +5634,21 @@ uint32_t ClangASTContext::GetNumFields(lldb::opaque_compiler_type_t type) {
56295634
.GetNumFields();
56305635
break;
56315636

5632-
case clang::Type::ObjCObjectPointer:
5633-
if (GetCompleteType(type)) {
5634-
const clang::ObjCObjectPointerType *objc_class_type =
5635-
qual_type->getAsObjCInterfacePointerType();
5636-
if (objc_class_type) {
5637-
clang::ObjCInterfaceDecl *class_interface_decl =
5638-
objc_class_type->getInterfaceDecl();
5639-
5640-
if (class_interface_decl)
5641-
count = class_interface_decl->ivar_size();
5637+
case clang::Type::ObjCObjectPointer: {
5638+
const clang::ObjCObjectPointerType *objc_class_type =
5639+
qual_type->getAsObjCInterfacePointerType();
5640+
const clang::ObjCInterfaceType *objc_interface_type =
5641+
objc_class_type->getInterfaceType();
5642+
if (objc_interface_type &&
5643+
GetCompleteType((lldb::opaque_compiler_type_t)objc_interface_type)) {
5644+
clang::ObjCInterfaceDecl *class_interface_decl =
5645+
objc_interface_type->getDecl();
5646+
if (class_interface_decl) {
5647+
count = class_interface_decl->ivar_size();
56425648
}
56435649
}
56445650
break;
5651+
}
56455652

56465653
case clang::Type::ObjCObject:
56475654
case clang::Type::ObjCInterface:
@@ -5774,20 +5781,24 @@ CompilerType ClangASTContext::GetFieldAtIndex(lldb::opaque_compiler_type_t type,
57745781
}
57755782
break;
57765783

5777-
case clang::Type::ObjCObjectPointer:
5778-
if (GetCompleteType(type)) {
5779-
const clang::ObjCObjectPointerType *objc_class_type =
5780-
qual_type->getAsObjCInterfacePointerType();
5781-
if (objc_class_type) {
5782-
clang::ObjCInterfaceDecl *class_interface_decl =
5783-
objc_class_type->getInterfaceDecl();
5784+
case clang::Type::ObjCObjectPointer: {
5785+
const clang::ObjCObjectPointerType *objc_class_type =
5786+
qual_type->getAsObjCInterfacePointerType();
5787+
const clang::ObjCInterfaceType *objc_interface_type =
5788+
objc_class_type->getInterfaceType();
5789+
if (objc_interface_type &&
5790+
GetCompleteType((lldb::opaque_compiler_type_t)objc_interface_type)) {
5791+
clang::ObjCInterfaceDecl *class_interface_decl =
5792+
objc_interface_type->getDecl();
5793+
if (class_interface_decl) {
57845794
return CompilerType(
57855795
this, GetObjCFieldAtIndex(getASTContext(), class_interface_decl,
57865796
idx, name, bit_offset_ptr,
57875797
bitfield_bit_size_ptr, is_bitfield_ptr));
57885798
}
57895799
}
57905800
break;
5801+
}
57915802

57925803
case clang::Type::ObjCObject:
57935804
case clang::Type::ObjCInterface:

0 commit comments

Comments
 (0)