[DataFormatters] Implement summary for __NSDictionary0.
Before the patch: (lldb) frame var emptyDictionary (__NSDictionary0 *) emptyDictionary = 0x0000000100304420 After: (lldb) frame var emptyDictionary (__NSDictionary0 *) emptyDictionary = 0x0000000100304420 0 key/value pairs There's nothing much else we can do, as this is always empty by definition. <rdar://problem/34806516> llvm-svn: 327587
This commit is contained in:
parent
5df2db1216
commit
8f2e86da36
|
@ -0,0 +1,3 @@
|
||||||
|
breakpoint set --file NSDict.m --line 8
|
||||||
|
run
|
||||||
|
frame var
|
|
@ -0,0 +1,9 @@
|
||||||
|
#include <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
NSDictionary *emptyDictionary = [[NSDictionary alloc] init];
|
||||||
|
NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionary];
|
||||||
|
NSDictionary *dictionary = @{ @"key": @{} };
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Test that foundation NSDictionary0 is formatted correctly (the summary).
|
||||||
|
# Foundation is only available on Darwin so just restrict the test to run there.
|
||||||
|
# REQUIRES: darwin
|
||||||
|
# RUN: %cc %p/Inputs/NSDict.m -framework Foundation -g -o %t && %lldb -b \
|
||||||
|
# RUN: -s %p/Inputs/NSDict.commands -- %t 2>&1 | FileCheck %s
|
||||||
|
|
||||||
|
# CHECK: (__NSDictionary0 *) emptyDictionary = {{.*}} 0 key/value pairs
|
|
@ -0,0 +1 @@
|
||||||
|
config.suffixes = ['.test']
|
|
@ -396,6 +396,7 @@ bool lldb_private::formatters::NSDictionarySummaryProvider(
|
||||||
static const ConstString g_DictionaryMLegacy("__NSDictionaryM_Legacy");
|
static const ConstString g_DictionaryMLegacy("__NSDictionaryM_Legacy");
|
||||||
static const ConstString g_DictionaryMImmutable("__NSDictionaryM_Immutable");
|
static const ConstString g_DictionaryMImmutable("__NSDictionaryM_Immutable");
|
||||||
static const ConstString g_Dictionary1("__NSSingleEntryDictionaryI");
|
static const ConstString g_Dictionary1("__NSSingleEntryDictionaryI");
|
||||||
|
static const ConstString g_Dictionary0("__NSDictionary0");
|
||||||
|
|
||||||
if (class_name.IsEmpty())
|
if (class_name.IsEmpty())
|
||||||
return false;
|
return false;
|
||||||
|
@ -423,6 +424,8 @@ bool lldb_private::formatters::NSDictionarySummaryProvider(
|
||||||
return false;
|
return false;
|
||||||
} else if (class_name == g_Dictionary1) {
|
} else if (class_name == g_Dictionary1) {
|
||||||
value = 1;
|
value = 1;
|
||||||
|
} else if (class_name == g_Dictionary0) {
|
||||||
|
value = 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
auto &map(NSDictionary_Additionals::GetAdditionalSummaries());
|
auto &map(NSDictionary_Additionals::GetAdditionalSummaries());
|
||||||
|
@ -481,6 +484,7 @@ lldb_private::formatters::NSDictionarySyntheticFrontEndCreator(
|
||||||
static const ConstString g_Dictionary1("__NSSingleEntryDictionaryI");
|
static const ConstString g_Dictionary1("__NSSingleEntryDictionaryI");
|
||||||
static const ConstString g_DictionaryImmutable("__NSDictionaryM_Immutable");
|
static const ConstString g_DictionaryImmutable("__NSDictionaryM_Immutable");
|
||||||
static const ConstString g_DictionaryMLegacy("__NSDictionaryM_Legacy");
|
static const ConstString g_DictionaryMLegacy("__NSDictionaryM_Legacy");
|
||||||
|
static const ConstString g_Dictionary0("__NSDictionary0");
|
||||||
|
|
||||||
if (class_name.IsEmpty())
|
if (class_name.IsEmpty())
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
Loading…
Reference in New Issue