diff options
5 files changed, 36 insertions, 0 deletions
diff --git a/lldb/include/lldb/Core/CXXFormatterFunctions.h b/lldb/include/lldb/Core/CXXFormatterFunctions.h index 7bd6ab58314..8cb2212a999 100644 --- a/lldb/include/lldb/Core/CXXFormatterFunctions.h +++ b/lldb/include/lldb/Core/CXXFormatterFunctions.h @@ -57,6 +57,9 @@ namespace lldb_private { bool NSStringSummaryProvider (ValueObject& valobj, Stream& stream); + bool + RuntimeSpecificDescriptionSummaryProvider (ValueObject& valobj, Stream& stream); + extern template bool NSDictionarySummaryProvider<true> (ValueObject&, Stream&) ; diff --git a/lldb/source/Core/CXXFormatterFunctions.cpp b/lldb/source/Core/CXXFormatterFunctions.cpp index f3a085ee8c2..e7603f359d7 100644 --- a/lldb/source/Core/CXXFormatterFunctions.cpp +++ b/lldb/source/Core/CXXFormatterFunctions.cpp @@ -767,6 +767,13 @@ lldb_private::formatters::NSStringSummaryProvider (ValueObject& valobj, Stream& } +bool +lldb_private::formatters::RuntimeSpecificDescriptionSummaryProvider (ValueObject& valobj, Stream& stream) +{ + stream.Printf("%s",valobj.GetObjectDescription()); + return true; +} + lldb_private::formatters::NSArrayMSyntheticFrontEnd::NSArrayMSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp) : SyntheticChildrenFrontEnd(*valobj_sp.get()), m_exe_ctx_ref(), diff --git a/lldb/source/Core/FormatManager.cpp b/lldb/source/Core/FormatManager.cpp index 0fcbcada02f..ef0e719a428 100644 --- a/lldb/source/Core/FormatManager.cpp +++ b/lldb/source/Core/FormatManager.cpp @@ -1129,6 +1129,11 @@ FormatManager::LoadObjCFormatters() AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNumberSummaryProvider, "NSNumber summary provider", ConstString("__NSCFNumber"), appkit_flags); AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNumberSummaryProvider, "NSNumber summary provider", ConstString("NSCFBoolean"), appkit_flags); AddCXXSummary(appkit_category_sp, lldb_private::formatters::NSNumberSummaryProvider, "NSNumber summary provider", ConstString("NSCFNumber"), appkit_flags); + + AddCXXSummary(appkit_category_sp, lldb_private::formatters::RuntimeSpecificDescriptionSummaryProvider, "NSDecimalNumber summary provider", ConstString("NSDecimalNumber"), appkit_flags); + AddCXXSummary(appkit_category_sp, lldb_private::formatters::RuntimeSpecificDescriptionSummaryProvider, "NSHost summary provider", ConstString("NSHost"), appkit_flags); + AddCXXSummary(appkit_category_sp, lldb_private::formatters::RuntimeSpecificDescriptionSummaryProvider, "NSTask summary provider", ConstString("NSTask"), appkit_flags); + AddCXXSummary(appkit_category_sp, lldb_private::formatters::RuntimeSpecificDescriptionSummaryProvider, "NSValue summary provider", ConstString("NSValue"), appkit_flags); AddScriptSummary(appkit_category_sp, "lldb.formatters.objc.NSSet.NSSet_SummaryProvider", ConstString("NSSet"), appkit_flags); AddScriptSummary(appkit_category_sp, "lldb.formatters.objc.NSSet.NSSet_SummaryProvider2", ConstString("CFSetRef"), appkit_flags); diff --git a/lldb/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py b/lldb/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py index ab629105062..6e59f597770 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py +++ b/lldb/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py @@ -229,6 +229,9 @@ class ObjCDataFormatterTestCase(TestBase): '(NSNumber *) num8_N = ',' @"0"', '(NSNumber *) num9 = ',' (short)-31616']) + self.expect('frame variable decimal_one', + substrs = ['(NSDecimalNumber *) decimal_one = 0x','1']) + self.expect('frame variable num_at1 num_at2 num_at3 num_at4', substrs = ['(NSNumber *) num_at1 = ',' (int)12', '(NSNumber *) num_at2 = ',' (int)-12', @@ -309,6 +312,15 @@ class ObjCDataFormatterTestCase(TestBase): self.expect('frame variable date1 date2', substrs = ['1985-04','2011-01']) + self.expect('frame variable localhost', + substrs = ['<NSHost ','> localhost ((','"127.0.0.1"']) + + self.expect('frame variable my_task', + substrs = ['<NS','Task: 0x']) + + self.expect('frame variable range_value', + substrs = ['NSRange: {4, 4}']) + # this test might fail if we hit the breakpoint late on December 31st of some given year # and midnight comes between hitting the breakpoint and running this line of code # hopefully the output will be revealing enough in that case :-) diff --git a/lldb/test/functionalities/data-formatter/data-formatter-objc/main.m b/lldb/test/functionalities/data-formatter/data-formatter-objc/main.m index aae6479da5f..eebe9f3fba3 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-objc/main.m +++ b/lldb/test/functionalities/data-formatter/data-formatter-objc/main.m @@ -158,6 +158,8 @@ int main (int argc, const char * argv[]) NSNumber* num_at3 = @12.5; NSNumber* num_at4 = @-12.5; + NSDecimalNumber* decimal_one = [NSDecimalNumber one]; + NSString *str0 = [num6 stringValue]; NSString *str1 = [NSString stringWithCString:"A rather short ASCII NSString object is here" encoding:NSASCIIStringEncoding]; @@ -582,12 +584,19 @@ int main (int argc, const char * argv[]) NSTimeZone *home_ns = [NSTimeZone timeZoneWithName:@"Europe/Rome"]; NSTimeZone *europe_ns = [NSTimeZone timeZoneWithAbbreviation:@"CET"]; + NSHost *localhost = [NSHost hostWithAddress:@"127.0.0.1"]; + + NSTask *my_task = [[NSTask alloc] init]; + CFGregorianUnits cf_greg_units = {1,3,5,12,5,7}; CFGregorianDate cf_greg_date = CFAbsoluteTimeGetGregorianDate(CFDateGetAbsoluteTime(date1), NULL); CFRange cf_range = {4,4}; NSPoint ns_point = {4,4}; NSRange ns_range = {4,4}; + + NSValue *range_value = [NSValue valueWithRange:ns_range]; + NSRect ns_rect = {{1,1},{5,5}}; NSRect* ns_rect_ptr = &ns_rect; NSRectArray ns_rect_arr = &ns_rect; |