[Lldb-commits] [lldb] 490641f - [lldb] Add MSVC STL formatter for vector iterators (#217247)
via lldb-commits
lldb-commits at lists.llvm.org
Fri Aug 21 03:34:25 PDT 2026
Author: Daedie-git
Date: 2026-08-21T12:34:20+02:00
New Revision: 490641fad2db5ffd5829198b35990ed833b25325
URL: https://github.com/llvm/llvm-project/commit/490641fad2db5ffd5829198b35990ed833b25325
DIFF: https://github.com/llvm/llvm-project/commit/490641fad2db5ffd5829198b35990ed833b25325.diff
LOG: [lldb] Add MSVC STL formatter for vector iterators (#217247)
`std::_Vector_iterator` and `std::_Vector_const_iterator` store the
element pointer in `_Ptr`. Reuse the existing vector-iterator frontend
(same pattern as libc++ / libstdc++).
Tests: generic iterator suite's MSVC STL category (Windows).
Part of #24834
Assisted-by: Grok 4.6
Assisted-by: codex-5.6-high
---------
Co-authored-by: Bjorn Schobben <bjorn.schobben at aimsport.com>
Added:
Modified:
lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
lldb/source/Plugins/Language/CPlusPlus/MsvcStl.h
lldb/source/Plugins/Language/CPlusPlus/MsvcStlVector.cpp
lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/TestDataFormatterStdIterator.py
Removed:
################################################################################
diff --git a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
index 30050e0878e6e..cb6f9a04a0c55 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
@@ -2039,6 +2039,10 @@ static void LoadMsvcStlFormatters(lldb::TypeCategoryImplSP cpp_category_sp) {
"MSVC STL tree iterator summary",
"^std::_Tree(_const)?_iterator<.+>(( )?&)?$", stl_summary_flags,
true);
+ AddCXXSynthetic(
+ cpp_category_sp, MsvcStlVectorIteratorSyntheticFrontEndCreator,
+ "MSVC STL vector iterator synthetic children",
+ "^std::_Vector(_const)?_iterator<.+>(( )?&)?$", stl_synth_flags, true);
}
static void LoadSystemFormatters(lldb::TypeCategoryImplSP cpp_category_sp) {
diff --git a/lldb/source/Plugins/Language/CPlusPlus/MsvcStl.h b/lldb/source/Plugins/Language/CPlusPlus/MsvcStl.h
index 0bdd548dd99e3..7858a7d45b51e 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/MsvcStl.h
+++ b/lldb/source/Plugins/Language/CPlusPlus/MsvcStl.h
@@ -81,6 +81,9 @@ MsvcStlTupleSyntheticFrontEndCreator(CXXSyntheticChildren *,
bool IsMsvcStlVector(ValueObject &valobj);
lldb_private::SyntheticChildrenFrontEnd *
MsvcStlVectorSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp);
+SyntheticChildrenFrontEnd *
+MsvcStlVectorIteratorSyntheticFrontEndCreator(CXXSyntheticChildren *,
+ lldb::ValueObjectSP valobj_sp);
// MSVC STL std::list and std::forward_list
bool IsMsvcStlList(ValueObject &valobj);
diff --git a/lldb/source/Plugins/Language/CPlusPlus/MsvcStlVector.cpp b/lldb/source/Plugins/Language/CPlusPlus/MsvcStlVector.cpp
index 8ce1153c561a7..8e988465dff05 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/MsvcStlVector.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/MsvcStlVector.cpp
@@ -10,6 +10,7 @@
#include "lldb/DataFormatters/FormattersHelpers.h"
#include "lldb/DataFormatters/TypeSynthetic.h"
+#include "lldb/DataFormatters/VectorIterator.h"
#include "llvm/Support/ErrorExtras.h"
using namespace lldb;
@@ -17,6 +18,14 @@ using namespace lldb;
namespace lldb_private {
namespace formatters {
+SyntheticChildrenFrontEnd *
+MsvcStlVectorIteratorSyntheticFrontEndCreator(CXXSyntheticChildren *,
+ lldb::ValueObjectSP valobj_sp) {
+ return valobj_sp ? new VectorIteratorSyntheticFrontEnd(valobj_sp,
+ {ConstString("_Ptr")})
+ : nullptr;
+}
+
class MsvcStlVectorSyntheticFrontEnd : public SyntheticChildrenFrontEnd {
public:
MsvcStlVectorSyntheticFrontEnd(lldb::ValueObjectSP valobj_sp);
diff --git a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/TestDataFormatterStdIterator.py b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/TestDataFormatterStdIterator.py
index 56aaf4078f18e..56874a9dda500 100644
--- a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/TestDataFormatterStdIterator.py
+++ b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/iterator/TestDataFormatterStdIterator.py
@@ -77,3 +77,8 @@ def test_libcxx(self):
def test_libstdcxx(self):
self.build(dictionary={"USE_LIBSTDCPP": 1})
self.do_test()
+
+ @add_test_categories(["msvcstl"])
+ def test_msvcstl(self):
+ self.build()
+ self.do_test()
More information about the lldb-commits
mailing list