Index: packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py =================================================================== --- packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py +++ packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/TestDataFormatterObjC.py @@ -225,7 +225,7 @@ def nscontainers_data_formatter_commands(self): self.expect( - 'frame variable newArray newDictionary newMutableDictionary cfarray_ref mutable_array_ref', + 'frame variable newArray newDictionary nscfDictionary newMutableDictionary cfarray_ref mutable_array_ref', substrs=[ '(NSArray *) newArray = ', '@"50 elements"', @@ -233,6 +233,10 @@ ' 12 key/value pairs', '(NSDictionary *) newMutableDictionary = ', ' 21 key/value pairs', + '(NSCFDictionary *) nscfDictionary = ', + ' 2 key/value pairs', + '(CFDictionaryRef *) nscfDictionary = ', + ' 3 key/value pairs', '(CFArrayRef) cfarray_ref = ', '@"3 elements"', '(CFMutableArrayRef) mutable_array_ref = ', Index: packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/main.m =================================================================== --- packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/main.m +++ packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-objc/main.m @@ -385,6 +385,11 @@ [newMutableDictionary setObject:@"foo" forKey:@"bar19"]; [newMutableDictionary setObject:@"foo" forKey:@"bar20"]; + id cfKeys[2] = { @"foo", @"bar", @"baz" }; + id cfValues[2] = { @"foo", @"bar", @"baz" }; + NSCFDictionary *nscfDictionary = CFBridgingRelease(CFDictionaryCreate(nil, (void *)cfKeys, (void *)cfValues, 2, nil, nil)); + CFDictionaryRef cfDictionaryRef = CFDictionaryCreate(nil, (void *)cfKeys, (void *)cfValues, 3, nil, nil); + NSAttributedString* attrString = [[NSAttributedString alloc] initWithString:@"hello world from foo" attributes:newDictionary]; [attrString isEqual:nil]; NSAttributedString* mutableAttrString = [[NSMutableAttributedString alloc] initWithString:@"hello world from foo" attributes:newDictionary]; Index: source/Plugins/Language/ObjC/NSDictionary.cpp =================================================================== --- source/Plugins/Language/ObjC/NSDictionary.cpp +++ source/Plugins/Language/ObjC/NSDictionary.cpp @@ -397,6 +397,7 @@ static const ConstString g_DictionaryMImmutable("__NSDictionaryM_Immutable"); static const ConstString g_Dictionary1("__NSSingleEntryDictionaryI"); static const ConstString g_Dictionary0("__NSDictionary0"); + static const ConstString g_DictionaryCF("__NSCFDictionary"); if (class_name.IsEmpty()) return false; @@ -408,7 +409,8 @@ if (error.Fail()) return false; value &= (is_64bit ? ~0xFC00000000000000UL : ~0xFC000000U); - } else if (class_name == g_DictionaryM || class_name == g_DictionaryMLegacy) { + } else if (class_name == g_DictionaryM || class_name == g_DictionaryMLegacy || + class_name == g_DictionaryCF) { AppleObjCRuntime *apple_runtime = llvm::dyn_cast_or_null(runtime); Status error;