Author: davide Date: Wed Mar 14 16:09:36 2018 New Revision: 327587 URL: http://llvm.org/viewvc/llvm-project?rev=327587&view=rev Log: [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> Added: lldb/trunk/lit/DataFormatters/ lldb/trunk/lit/DataFormatters/Inputs/ lldb/trunk/lit/DataFormatters/Inputs/NSDict.commands lldb/trunk/lit/DataFormatters/Inputs/NSDict.m lldb/trunk/lit/DataFormatters/TestEmptyDictionary.test lldb/trunk/lit/DataFormatters/lit.local.cfg Modified: lldb/trunk/source/Plugins/Language/ObjC/NSDictionary.cpp Added: lldb/trunk/lit/DataFormatters/Inputs/NSDict.commands URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/DataFormatters/Inputs/NSDict.commands?rev=327587&view=auto ============================================================================== --- lldb/trunk/lit/DataFormatters/Inputs/NSDict.commands (added) +++ lldb/trunk/lit/DataFormatters/Inputs/NSDict.commands Wed Mar 14 16:09:36 2018 @@ -0,0 +1,3 @@ +breakpoint set --file NSDict.m --line 8 +run +frame var Added: lldb/trunk/lit/DataFormatters/Inputs/NSDict.m URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/DataFormatters/Inputs/NSDict.m?rev=327587&view=auto ============================================================================== --- lldb/trunk/lit/DataFormatters/Inputs/NSDict.m (added) +++ lldb/trunk/lit/DataFormatters/Inputs/NSDict.m Wed Mar 14 16:09:36 2018 @@ -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; +} Added: lldb/trunk/lit/DataFormatters/TestEmptyDictionary.test URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/DataFormatters/TestEmptyDictionary.test?rev=327587&view=auto ============================================================================== --- lldb/trunk/lit/DataFormatters/TestEmptyDictionary.test (added) +++ lldb/trunk/lit/DataFormatters/TestEmptyDictionary.test Wed Mar 14 16:09:36 2018 @@ -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 Added: lldb/trunk/lit/DataFormatters/lit.local.cfg URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/DataFormatters/lit.local.cfg?rev=327587&view=auto ============================================================================== --- lldb/trunk/lit/DataFormatters/lit.local.cfg (added) +++ lldb/trunk/lit/DataFormatters/lit.local.cfg Wed Mar 14 16:09:36 2018 @@ -0,0 +1 @@ +config.suffixes = ['.test'] Modified: lldb/trunk/source/Plugins/Language/ObjC/NSDictionary.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ObjC/NSDictionary.cpp?rev=327587&r1=327586&r2=327587&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Language/ObjC/NSDictionary.cpp (original) +++ lldb/trunk/source/Plugins/Language/ObjC/NSDictionary.cpp Wed Mar 14 16:09:36 2018 @@ -396,6 +396,7 @@ bool lldb_private::formatters::NSDiction static const ConstString g_DictionaryMLegacy("__NSDictionaryM_Legacy"); static const ConstString g_DictionaryMImmutable("__NSDictionaryM_Immutable"); static const ConstString g_Dictionary1("__NSSingleEntryDictionaryI"); + static const ConstString g_Dictionary0("__NSDictionary0"); if (class_name.IsEmpty()) return false; @@ -423,6 +424,8 @@ bool lldb_private::formatters::NSDiction return false; } else if (class_name == g_Dictionary1) { value = 1; + } else if (class_name == g_Dictionary0) { + value = 0; } else { auto &map(NSDictionary_Additionals::GetAdditionalSummaries()); @@ -481,6 +484,7 @@ lldb_private::formatters::NSDictionarySy static const ConstString g_Dictionary1("__NSSingleEntryDictionaryI"); static const ConstString g_DictionaryImmutable("__NSDictionaryM_Immutable"); static const ConstString g_DictionaryMLegacy("__NSDictionaryM_Legacy"); + static const ConstString g_Dictionary0("__NSDictionary0"); if (class_name.IsEmpty()) return nullptr; _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits