diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-property/TestObjCProperty.py b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-property/TestObjCProperty.py --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-property/TestObjCProperty.py +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-property/TestObjCProperty.py @@ -110,6 +110,11 @@ self.assertTrue(backed_value.GetValueAsUnsigned(12345) == backing_value.GetValueAsUnsigned(23456)) + value_from_typedef = frame.EvaluateExpression("typedefd.backedInt", False) + self.assertTrue(value_from_typedef.GetError().Success()) + self.assertEqual(value_from_typedef.GetValueAsUnsigned(12345), + backing_value.GetValueAsUnsigned(23456)) + unbacked_value = frame.EvaluateExpression("mine.unbackedInt", False) unbacked_error = unbacked_value.GetError() self.assertTrue(unbacked_error.Success()) diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-property/main.m b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-property/main.m --- a/lldb/packages/Python/lldbsuite/test/lang/objc/objc-property/main.m +++ b/lldb/packages/Python/lldbsuite/test/lang/objc/objc-property/main.m @@ -87,10 +87,13 @@ } @end +typedef BaseClass TypedefBaseClass; + int main () { BaseClass *mine = [BaseClass baseClassWithBackedInt: 10 andUnbackedInt: 20]; + TypedefBaseClass *typedefd = mine; // Set a breakpoint here. int nonexistant = mine.nonexistantInt; diff --git a/lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp b/lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp --- a/lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp +++ b/lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp @@ -4259,8 +4259,7 @@ if (type) { clang::QualType qual_type(GetQualType(type)); - const clang::Type::TypeClass type_class = qual_type->getTypeClass(); - switch (type_class) { + switch (qual_type.getDesugaredType(getASTContext())->getTypeClass()) { case clang::Type::ObjCObject: case clang::Type::ObjCInterface: return GetType(getASTContext().getObjCObjectPointerType(qual_type));