This revision was automatically updated to reflect the committed changes. Closed by commit rG506144da04b9: [lldb][DataFormatters] Support pretty printing std::string when built with… (authored by rupprecht).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D70517/new/ https://reviews.llvm.org/D70517 Files: lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/TestDataFormatterLibcxxString.py lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/main.cpp lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/TestDataFormatterStdString.py lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/main.cpp lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
Index: lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp =================================================================== --- lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp +++ lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp @@ -425,6 +425,13 @@ "std::__[[:alnum:]]+::char_traits<char>, " "std::__[[:alnum:]]+::allocator<char> >$"), stl_summary_flags, true); + AddCXXSummary(cpp_category_sp, + lldb_private::formatters::LibcxxStringSummaryProviderASCII, + "std::string summary provider", + ConstString("^std::__[[:alnum:]]+::basic_string<unsigned char, " + "std::__[[:alnum:]]+::char_traits<unsigned char>, " + "std::__[[:alnum:]]+::allocator<unsigned char> >$"), + stl_summary_flags, true); AddCXXSummary(cpp_category_sp, lldb_private::formatters::LibcxxStringSummaryProviderUTF16, @@ -723,6 +730,10 @@ ConstString("std::__cxx11::basic_string<char, std::char_traits<char>, " "std::allocator<char> >"), cxx11_string_summary_sp); + cpp_category_sp->GetTypeSummariesContainer()->Add( + ConstString("std::__cxx11::basic_string<unsigned char, std::char_traits<unsigned char>, " + "std::allocator<unsigned char> >"), + cxx11_string_summary_sp); // making sure we force-pick the summary for printing wstring (_M_p is a // wchar_t*) Index: lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/main.cpp =================================================================== --- lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/main.cpp +++ lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/main.cpp @@ -9,6 +9,7 @@ std::string empty(""); std::string q("hello world"); std::string Q("quite a long std::strin with lots of info inside it"); + std::basic_string<unsigned char> uchar(5, 'a'); S.assign(L"!!!!!"); // Set break point at this line. return 0; } Index: lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/TestDataFormatterStdString.py =================================================================== --- lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/TestDataFormatterStdString.py +++ lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libstdcpp/string/TestDataFormatterStdString.py @@ -59,26 +59,28 @@ var_empty = self.frame().FindVariable('empty') var_q = self.frame().FindVariable('q') var_Q = self.frame().FindVariable('Q') + var_uchar = self.frame().FindVariable('uchar') # TODO: This is currently broken - # self.assertTrue(var_wempty.GetSummary() == 'L""', "wempty summary wrong") - self.assertTrue( - var_s.GetSummary() == 'L"hello world! מזל טוב!"', + # self.assertEqual(var_wempty.GetSummary(), 'L""', "wempty summary wrong") + self.assertEqual( + var_s.GetSummary(), 'L"hello world! מזל טוב!"', "s summary wrong") - self.assertTrue(var_S.GetSummary() == 'L"!!!!"', "S summary wrong") - self.assertTrue( - var_mazeltov.GetSummary() == 'L"מזל טוב"', + self.assertEqual(var_S.GetSummary(), 'L"!!!!"', "S summary wrong") + self.assertEqual( + var_mazeltov.GetSummary(), 'L"מזל טוב"', "mazeltov summary wrong") - self.assertTrue(var_empty.GetSummary() == '""', "empty summary wrong") - self.assertTrue( - var_q.GetSummary() == '"hello world"', + self.assertEqual(var_empty.GetSummary(), '""', "empty summary wrong") + self.assertEqual( + var_q.GetSummary(), '"hello world"', "q summary wrong") - self.assertTrue( - var_Q.GetSummary() == '"quite a long std::strin with lots of info inside it"', + self.assertEqual( + var_Q.GetSummary(), '"quite a long std::strin with lots of info inside it"', "Q summary wrong") + self.assertEqual(var_uchar.GetSummary(), '"aaaaa"', "u summary wrong") self.runCmd("next") - self.assertTrue( - var_S.GetSummary() == 'L"!!!!!"', + self.assertEqual( + var_S.GetSummary(), 'L"!!!!!"', "new S summary wrong") Index: lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/main.cpp =================================================================== --- lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/main.cpp +++ lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/main.cpp @@ -16,6 +16,7 @@ std::u16string u16_empty(u""); std::u32string u32_string(U"🍄🍅🍆🍌"); std::u32string u32_empty(U""); + std::basic_string<unsigned char> uchar(5, 'a'); S.assign(L"!!!!!"); // Set break point at this line. return 0; } Index: lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/TestDataFormatterLibcxxString.py =================================================================== --- lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/TestDataFormatterLibcxxString.py +++ lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/TestDataFormatterLibcxxString.py @@ -74,8 +74,10 @@ '(%s::u16string) u16_empty = ""'%ns, '(%s::u32string) u32_string = U"🍄🍅🍆🍌"'%ns, # FIXME: This should have a 'U' prefix. - '(%s::u32string) u32_empty = ""'%ns -]) + '(%s::u32string) u32_empty = ""'%ns, + '(%s::basic_string<unsigned char, %s::char_traits<unsigned char>, ' + '%s::allocator<unsigned char> >) uchar = "aaaaa"'%(ns,ns,ns), + ]) self.runCmd("n") @@ -107,4 +109,8 @@ '(%s::string) IHaveEmbeddedZeros = "a\\0b\\0c\\0d"'%ns, '(%s::wstring) IHaveEmbeddedZerosToo = L"hello world!\\0てざ ル゜䋨ミ㠧槊 きゅへ狦穤襩 じゃ馩リョ 䤦監"'%ns, '(%s::u16string) u16_string = u"ß水氶"'%ns, - '(%s::u32string) u32_string = U"🍄🍅🍆🍌"'%ns]) + '(%s::u32string) u32_string = U"🍄🍅🍆🍌"'%ns, + '(%s::u32string) u32_empty = ""'%ns, + '(%s::basic_string<unsigned char, %s::char_traits<unsigned char>, ' + '%s::allocator<unsigned char> >) uchar = "aaaaa"'%(ns,ns,ns), + ])
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits