forked from OSchip/llvm-project
LanguageRuntime: Simplify NSException::GetSummary() output
Summary: Right now, NSException::GetSummary() has the following output: "name: $exception_name - reason: $exception_reason" It would be better to simplify the output by removing the name and only showing the exception's reason. This way, annotations would look nicer in the editor, and would be a shorter summary in the Variables Inspector. Accessing the exception's name can still be done by expanding the NSException object in the Variables Inspector. rdar://54770115 Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com> Subscribers: lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D71311 Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
This commit is contained in:
parent
348f22eac8
commit
2c91d5ba83
|
@ -24,11 +24,11 @@ class ObjCDataFormatterNSException(ObjCDataFormatterTestCase):
|
|||
'frame variable except0 except1 except2 except3',
|
||||
substrs=[
|
||||
'(NSException *) except0 = ',
|
||||
'name: @"TheGuyWhoHasNoName" - reason: @"cuz it\'s funny"',
|
||||
'@"First"',
|
||||
'(NSException *) except1 = ',
|
||||
'name: @"TheGuyWhoHasNoName~1" - reason: @"cuz it\'s funny"',
|
||||
'@"Second"',
|
||||
'(NSException *) except2 = ',
|
||||
'name: @"TheGuyWhoHasNoName`2" - reason: @"cuz it\'s funny"',
|
||||
' @"Third"',
|
||||
'(NSException *) except3 = ',
|
||||
'name: @"TheGuyWhoHasNoName/3" - reason: @"cuz it\'s funny"'
|
||||
' @"Fourth"'
|
||||
])
|
||||
|
|
|
@ -492,10 +492,10 @@ int main (int argc, const char * argv[])
|
|||
nsurl0 = [bundle bundleURL];
|
||||
}
|
||||
|
||||
NSException* except0 = [[NSException alloc] initWithName:@"TheGuyWhoHasNoName" reason:@"cuz it's funny" userInfo:nil];
|
||||
NSException* except1 = [[NSException alloc] initWithName:@"TheGuyWhoHasNoName~1" reason:@"cuz it's funny" userInfo:nil];
|
||||
NSException* except2 = [[NSException alloc] initWithName:@"TheGuyWhoHasNoName`2" reason:@"cuz it's funny" userInfo:nil];
|
||||
NSException* except3 = [[NSException alloc] initWithName:@"TheGuyWhoHasNoName/3" reason:@"cuz it's funny" userInfo:nil];
|
||||
NSException* except0 = [[NSException alloc] initWithName:@"TheGuyWhoHasNoName" reason:@"First" userInfo:nil];
|
||||
NSException* except1 = [[NSException alloc] initWithName:@"TheGuyWhoHasNoName~1" reason:@"Second" userInfo:nil];
|
||||
NSException* except2 = [[NSException alloc] initWithName:@"TheGuyWhoHasNoName`2" reason:@"Third" userInfo:nil];
|
||||
NSException* except3 = [[NSException alloc] initWithName:@"TheGuyWhoHasNoName/3" reason:@"Fourth" userInfo:nil];
|
||||
|
||||
NSURL *nsurl = [[NSURL alloc] initWithString:@"http://www.foo.bar"];
|
||||
NSURL *nsurl2 = [NSURL URLWithString:@"page.html" relativeToURL:nsurl];
|
||||
|
|
|
@ -30,7 +30,7 @@ class ObjCExceptionsTestCase(TestBase):
|
|||
|
||||
self.expect('thread exception', substrs=[
|
||||
'(NSException *) exception = ',
|
||||
'name: "ThrownException" - reason: "SomeReason"',
|
||||
'"SomeReason"',
|
||||
])
|
||||
|
||||
target = self.dbg.GetSelectedTarget()
|
||||
|
@ -62,7 +62,7 @@ class ObjCExceptionsTestCase(TestBase):
|
|||
'frame variable e1',
|
||||
substrs=[
|
||||
'(NSException *) e1 = ',
|
||||
'name: "ExceptionName" - reason: "SomeReason"'
|
||||
'"SomeReason"'
|
||||
])
|
||||
|
||||
self.expect(
|
||||
|
@ -78,7 +78,7 @@ class ObjCExceptionsTestCase(TestBase):
|
|||
e1 = frame.FindVariable("e1")
|
||||
self.assertTrue(e1)
|
||||
self.assertEqual(e1.type.name, "NSException *")
|
||||
self.assertEqual(e1.GetSummary(), 'name: "ExceptionName" - reason: "SomeReason"')
|
||||
self.assertEqual(e1.GetSummary(), '"SomeReason"')
|
||||
self.assertEqual(e1.GetChildMemberWithName("name").description, "ExceptionName")
|
||||
self.assertEqual(e1.GetChildMemberWithName("reason").description, "SomeReason")
|
||||
userInfo = e1.GetChildMemberWithName("userInfo").dynamic
|
||||
|
@ -91,7 +91,7 @@ class ObjCExceptionsTestCase(TestBase):
|
|||
'frame variable e2',
|
||||
substrs=[
|
||||
'(NSException *) e2 = ',
|
||||
'name: "ThrownException" - reason: "SomeReason"'
|
||||
'"SomeReason"'
|
||||
])
|
||||
|
||||
self.expect(
|
||||
|
@ -107,7 +107,7 @@ class ObjCExceptionsTestCase(TestBase):
|
|||
e2 = frame.FindVariable("e2")
|
||||
self.assertTrue(e2)
|
||||
self.assertEqual(e2.type.name, "NSException *")
|
||||
self.assertEqual(e2.GetSummary(), 'name: "ThrownException" - reason: "SomeReason"')
|
||||
self.assertEqual(e2.GetSummary(), '"SomeReason"')
|
||||
self.assertEqual(e2.GetChildMemberWithName("name").description, "ThrownException")
|
||||
self.assertEqual(e2.GetChildMemberWithName("reason").description, "SomeReason")
|
||||
userInfo = e2.GetChildMemberWithName("userInfo").dynamic
|
||||
|
@ -140,7 +140,7 @@ class ObjCExceptionsTestCase(TestBase):
|
|||
|
||||
self.expect('thread exception', substrs=[
|
||||
'(NSException *) exception = ',
|
||||
'name: "ThrownException" - reason: "SomeReason"',
|
||||
'"SomeReason"',
|
||||
'libobjc.A.dylib`objc_exception_throw',
|
||||
'a.out`foo', 'at main.mm:24',
|
||||
'a.out`rethrow', 'at main.mm:35',
|
||||
|
|
|
@ -98,21 +98,19 @@ static bool ExtractFields(ValueObject &valobj, ValueObjectSP *name_sp,
|
|||
|
||||
bool lldb_private::formatters::NSException_SummaryProvider(
|
||||
ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) {
|
||||
lldb::ValueObjectSP name_sp;
|
||||
lldb::ValueObjectSP reason_sp;
|
||||
if (!ExtractFields(valobj, &name_sp, &reason_sp, nullptr, nullptr))
|
||||
if (!ExtractFields(valobj, nullptr, &reason_sp, nullptr, nullptr))
|
||||
return false;
|
||||
|
||||
if (!name_sp || !reason_sp)
|
||||
if (!reason_sp) {
|
||||
stream.Printf("No reason");
|
||||
return false;
|
||||
}
|
||||
|
||||
StreamString name_str_summary;
|
||||
StreamString reason_str_summary;
|
||||
if (NSStringSummaryProvider(*name_sp, name_str_summary, options) &&
|
||||
NSStringSummaryProvider(*reason_sp, reason_str_summary, options) &&
|
||||
!name_str_summary.Empty() && !reason_str_summary.Empty()) {
|
||||
stream.Printf("name: %s - reason: %s", name_str_summary.GetData(),
|
||||
reason_str_summary.GetData());
|
||||
if (NSStringSummaryProvider(*reason_sp, reason_str_summary, options) &&
|
||||
!reason_str_summary.Empty()) {
|
||||
stream.Printf("%s", reason_str_summary.GetData());
|
||||
return true;
|
||||
} else
|
||||
return false;
|
||||
|
|
Loading…
Reference in New Issue