From f78c4ce55bc4c47625d0e780f38522938920e329 Mon Sep 17 00:00:00 2001 From: nerix Date: Tue, 22 Jul 2025 13:34:26 +0200 Subject: [LLDB] Add formatters for MSVC STL std::atomic (#149801) Adds synthetic children and a summary provider for `std::atomic` on MSVC's STL. This currently only supports DWARF because it relies on the template argument. Once there are PDB tests, this will probably use the return type of some method like `value()` because template types aren't available there. Towards #24834. --- .../source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp') diff --git a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp index 481fe61..1a101ce 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp @@ -1780,6 +1780,9 @@ static void LoadMsvcStlFormatters(lldb::TypeCategoryImplSP cpp_category_sp) { .SetDontShowValue(false) .SetShowMembersOneLiner(false) .SetHideItemNames(false); + SyntheticChildren::Flags stl_synth_flags; + stl_synth_flags.SetCascades(true).SetSkipPointers(false).SetSkipReferences( + false); using StringElementType = StringPrinter::StringElementType; @@ -1801,6 +1804,16 @@ static void LoadMsvcStlFormatters(lldb::TypeCategoryImplSP cpp_category_sp) { stl_summary_flags, MsvcStlStringSummaryProvider, "MSVC STL std::u32string summary provider")); + + stl_summary_flags.SetDontShowChildren(false); + + AddCXXSynthetic(cpp_category_sp, MsvcStlAtomicSyntheticFrontEndCreator, + "MSVC STL std::atomic synthetic children", + "^std::atomic<.+>$", stl_synth_flags, true); + + AddCXXSummary(cpp_category_sp, MsvcStlAtomicSummaryProvider, + "MSVC STL std::atomic summary provider", "^std::atomic<.+>$", + stl_summary_flags, true); } static void LoadSystemFormatters(lldb::TypeCategoryImplSP cpp_category_sp) { -- cgit v1.1