Index: source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp =================================================================== --- source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp +++ source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp @@ -656,7 +656,9 @@ .SetDontShowChildren(true) .SetHideItemNames(true) .SetShowMembersOneLiner(false); - + const TypeSummaryImpl::Flags char_flags = widechar_flags; + + AddCXXSummary(cpp_category_sp, lldb_private::formatters::CharSummaryProvider, "char summary provider", ConstString("char"), char_flags); AddCXXSummary(cpp_category_sp, lldb_private::formatters::Char16SummaryProvider, "char16_t summary provider", ConstString("char16_t"), widechar_flags); AddCXXSummary(cpp_category_sp, lldb_private::formatters::Char32SummaryProvider, "char32_t summary provider", ConstString("char32_t"), widechar_flags); AddCXXSummary(cpp_category_sp, lldb_private::formatters::WCharSummaryProvider, "wchar_t summary provider", ConstString("wchar_t"), widechar_flags); Index: source/Plugins/Language/CPlusPlus/CxxStringTypes.h =================================================================== --- source/Plugins/Language/CPlusPlus/CxxStringTypes.h +++ source/Plugins/Language/CPlusPlus/CxxStringTypes.h @@ -18,6 +18,9 @@ namespace formatters { bool + CharSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions&); + + bool Char16StringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); // char16_t* and unichar* bool Index: source/Plugins/Language/CPlusPlus/CxxStringTypes.cpp =================================================================== --- source/Plugins/Language/CPlusPlus/CxxStringTypes.cpp +++ source/Plugins/Language/CPlusPlus/CxxStringTypes.cpp @@ -131,6 +131,18 @@ } bool +lldb_private::formatters::CharSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions&) +{ + bool success; + int64_t code = valobj.GetValueAsSigned(0, &success); + if (!success) + return false; + + stream.Printf("%d %s", (int)code, valobj.GetValueAsCString()); + return true; +} + +bool lldb_private::formatters::Char16SummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions&) { DataExtractor data; Index: test/lang/cpp/wchar_t/TestCxxWCharT.py =================================================================== --- test/lang/cpp/wchar_t/TestCxxWCharT.py +++ test/lang/cpp/wchar_t/TestCxxWCharT.py @@ -37,6 +37,10 @@ if not process: self.fail("SBTarget.Launch() failed") + + # Check that summary for char type works + self.expect("frame variable c8", + substrs = ["(char) c8 = 104 'h'"]) # Check that we correctly report templates on wchar_t self.expect("frame variable foo_y", Index: test/lang/cpp/wchar_t/main.cpp =================================================================== --- test/lang/cpp/wchar_t/main.cpp +++ test/lang/cpp/wchar_t/main.cpp @@ -26,6 +26,7 @@ Foo foo_x('a'); Foo foo_y(L'a'); const wchar_t *mazeltov = L"מזל טוב"; + char c8 = 'h'; wchar_t *ws_NULL = nullptr; wchar_t *ws_empty = L""; wchar_t array[200], * array_source = L"Hey, I'm a super wchar_t string, éõñž";