https://github.com/Michael137 updated 
https://github.com/llvm/llvm-project/pull/147139

>From 5835f9f8adfbbafba9fb3ecea9b339bd82b0ba19 Mon Sep 17 00:00:00 2001
From: Michael Buch <michaelbuc...@gmail.com>
Date: Sat, 5 Jul 2025 11:15:23 +0100
Subject: [PATCH 1/3] [lldb][test] Combine libstdc++ and libc++ tuple tests
 into generic test

This combines the libc++ and libstdc++ test cases. The main difference
was that the libstdcpp tests had some tuple indexing tests that libc++ didn't 
have.

Split out from https://github.com/llvm/llvm-project/pull/146740
---
 .../{libcxx => generic}/tuple/Makefile        |  1 -
 .../tuple/TestDataFormatterStdTuple.py        | 73 +++++++++++++++++++
 .../{libcxx => generic}/tuple/main.cpp        |  3 +-
 .../tuple/TestDataFormatterLibcxxTuple.py     | 45 ------------
 .../libstdcpp/tuple/Makefile                  |  5 --
 .../tuple/TestDataFormatterStdTuple.py        | 47 ------------
 .../libstdcpp/tuple/main.cpp                  |  9 ---
 7 files changed, 75 insertions(+), 108 deletions(-)
 rename lldb/test/API/functionalities/data-formatter/data-formatter-stl/{libcxx 
=> generic}/tuple/Makefile (75%)
 create mode 100644 
lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/tuple/TestDataFormatterStdTuple.py
 rename lldb/test/API/functionalities/data-formatter/data-formatter-stl/{libcxx 
=> generic}/tuple/main.cpp (80%)
 delete mode 100644 
lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/tuple/TestDataFormatterLibcxxTuple.py
 delete mode 100644 
lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/tuple/Makefile
 delete mode 100644 
lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/tuple/TestDataFormatterStdTuple.py
 delete mode 100644 
lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/tuple/main.cpp

diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/tuple/Makefile
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/tuple/Makefile
similarity index 75%
rename from 
lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/tuple/Makefile
rename to 
lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/tuple/Makefile
index 680e1abfbef58..99998b20bcb05 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/tuple/Makefile
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/tuple/Makefile
@@ -1,4 +1,3 @@
 CXX_SOURCES := main.cpp
 
-USE_LIBCPP := 1
 include Makefile.rules
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/tuple/TestDataFormatterStdTuple.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/tuple/TestDataFormatterStdTuple.py
new file mode 100644
index 0000000000000..9e019d328b6b3
--- /dev/null
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/tuple/TestDataFormatterStdTuple.py
@@ -0,0 +1,73 @@
+"""
+Test lldb data formatter subsystem.
+"""
+
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+
+class TestDataFormatterStdTuple(TestBase):
+    def setUp(self):
+        TestBase.setUp(self)
+        self.line = line_number("main.cpp", "// break here")
+        self.namespace = "std"
+
+    def do_test(self):
+        """Test that std::tuple is displayed correctly"""
+        lldbutil.run_to_source_breakpoint(
+            self, "// break here", lldb.SBFileSpec("main.cpp", False)
+        )
+
+        tuple_name = self.namespace + "::tuple"
+        self.expect("frame variable empty", substrs=[tuple_name, "size=0", 
"{}"])
+
+        self.expect(
+            "frame variable one_elt",
+            substrs=[tuple_name, "size=1", "{", "[0] = 47", "}"],
+        )
+
+        self.expect(
+            "frame variable three_elts",
+            substrs=[
+                tuple_name,
+                "size=3",
+                "{",
+                "[0] = 1",
+                "[1] = 47",
+                '[2] = "foo"',
+                "}",
+            ],
+        )
+
+        self.assertEqual(
+            1, frame.GetValueForVariablePath("one_elt[0]").GetValueAsUnsigned()
+        )
+        self.assertFalse(frame.GetValueForVariablePath("one_elt[1]").IsValid())
+
+        self.assertEqual(
+            '"foobar"', 
frame.GetValueForVariablePath("string_elt[0]").GetSummary()
+        )
+        
self.assertFalse(frame.GetValueForVariablePath("string_elt[1]").IsValid())
+
+        self.assertEqual(
+            1, 
frame.GetValueForVariablePath("three_elts[0]").GetValueAsUnsigned()
+        )
+        self.assertEqual(
+            '"baz"', 
frame.GetValueForVariablePath("three_elts[1]").GetSummary()
+        )
+        self.assertEqual(
+            2, 
frame.GetValueForVariablePath("three_elts[2]").GetValueAsUnsigned()
+        )
+        
self.assertFalse(frame.GetValueForVariablePath("three_elts[3]").IsValid())
+
+    @add_test_categories(["libc++"])
+    def test_libcxx(self):
+        self.build(dictionary={"USE_LIBCPP": 1})
+        self.do_test()
+
+    @add_test_categories(["libstdcxx"])
+    def test_libstdcxx(self):
+        self.build(dictionary={"USE_LIBSTDCPP": 1})
+        self.do_test()
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/tuple/main.cpp
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/tuple/main.cpp
similarity index 80%
rename from 
lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/tuple/main.cpp
rename to 
lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/tuple/main.cpp
index beb44cd960005..d49dbe8a5f1af 100644
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/tuple/main.cpp
+++ 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/tuple/main.cpp
@@ -1,9 +1,10 @@
-#include <tuple>
 #include <string>
+#include <tuple>
 
 int main() {
   std::tuple<> empty;
   std::tuple<int> one_elt{47};
+  std::tuple<std::string> string_elt{"foobar"};
   std::tuple<int, long, std::string> three_elts{1, 47l, "foo"};
   return 0; // break here
 }
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/tuple/TestDataFormatterLibcxxTuple.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/tuple/TestDataFormatterLibcxxTuple.py
deleted file mode 100644
index 5b6dfaf5e5d9d..0000000000000
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/tuple/TestDataFormatterLibcxxTuple.py
+++ /dev/null
@@ -1,45 +0,0 @@
-"""
-Test lldb data formatter subsystem.
-"""
-
-
-import lldb
-from lldbsuite.test.decorators import *
-from lldbsuite.test.lldbtest import *
-from lldbsuite.test import lldbutil
-
-
-class TestDataFormatterLibcxxTuple(TestBase):
-    def setUp(self):
-        TestBase.setUp(self)
-        self.line = line_number("main.cpp", "// break here")
-        self.namespace = "std"
-
-    @add_test_categories(["libc++"])
-    def test(self):
-        """Test that std::tuple is displayed correctly"""
-        self.build()
-        lldbutil.run_to_source_breakpoint(
-            self, "// break here", lldb.SBFileSpec("main.cpp", False)
-        )
-
-        tuple_name = self.namespace + "::tuple"
-        self.expect("frame variable empty", substrs=[tuple_name, "size=0", 
"{}"])
-
-        self.expect(
-            "frame variable one_elt",
-            substrs=[tuple_name, "size=1", "{", "[0] = 47", "}"],
-        )
-
-        self.expect(
-            "frame variable three_elts",
-            substrs=[
-                tuple_name,
-                "size=3",
-                "{",
-                "[0] = 1",
-                "[1] = 47",
-                '[2] = "foo"',
-                "}",
-            ],
-        )
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/tuple/Makefile
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/tuple/Makefile
deleted file mode 100644
index bf8e6b8703f36..0000000000000
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/tuple/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-CXX_SOURCES := main.cpp
-
-USE_LIBSTDCPP := 1
-
-include Makefile.rules
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/tuple/TestDataFormatterStdTuple.py
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/tuple/TestDataFormatterStdTuple.py
deleted file mode 100644
index 1433b5bc1acb8..0000000000000
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/tuple/TestDataFormatterStdTuple.py
+++ /dev/null
@@ -1,47 +0,0 @@
-"""
-Test lldb data formatter subsystem.
-"""
-
-
-import lldb
-from lldbsuite.test.decorators import *
-from lldbsuite.test.lldbtest import *
-from lldbsuite.test import lldbutil
-
-
-class StdTupleDataFormatterTestCase(TestBase):
-    @add_test_categories(["libstdcxx"])
-    @expectedFailureAll(bugnumber="llvm.org/pr50861", compiler="gcc")
-    def test_with_run_command(self):
-        self.build()
-        self.runCmd("file " + self.getBuildArtifact("a.out"), 
CURRENT_EXECUTABLE_SET)
-
-        lldbutil.run_break_set_by_source_regexp(self, "Set break point at this 
line.")
-        self.runCmd("run", RUN_SUCCEEDED)
-
-        # The stop reason of the thread should be breakpoint.
-        self.expect(
-            "thread list",
-            STOPPED_DUE_TO_BREAKPOINT,
-            substrs=["stopped", "stop reason = breakpoint"],
-        )
-
-        frame = self.frame()
-        self.assertTrue(frame.IsValid())
-
-        self.expect("frame variable ti", substrs=["[0] = 1"])
-        self.expect("frame variable ts", substrs=['[0] = "foobar"'])
-        self.expect("frame variable tt", substrs=["[0] = 1", '[1] = "baz"', 
"[2] = 2"])
-
-        self.assertEqual(1, 
frame.GetValueForVariablePath("ti[0]").GetValueAsUnsigned())
-        self.assertFalse(frame.GetValueForVariablePath("ti[1]").IsValid())
-
-        self.assertEqual(
-            '"foobar"', frame.GetValueForVariablePath("ts[0]").GetSummary()
-        )
-        self.assertFalse(frame.GetValueForVariablePath("ts[1]").IsValid())
-
-        self.assertEqual(1, 
frame.GetValueForVariablePath("tt[0]").GetValueAsUnsigned())
-        self.assertEqual('"baz"', 
frame.GetValueForVariablePath("tt[1]").GetSummary())
-        self.assertEqual(2, 
frame.GetValueForVariablePath("tt[2]").GetValueAsUnsigned())
-        self.assertFalse(frame.GetValueForVariablePath("tt[3]").IsValid())
diff --git 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/tuple/main.cpp
 
b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/tuple/main.cpp
deleted file mode 100644
index 7247742ee6bb5..0000000000000
--- 
a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libstdcpp/tuple/main.cpp
+++ /dev/null
@@ -1,9 +0,0 @@
-#include <memory>
-#include <string>
-
-int main() {
-  std::tuple<int> ti{1};
-  std::tuple<std::string> ts{"foobar"};
-  std::tuple<int, std::string, int> tt{1, "baz", 2};
-  return 0; // Set break point at this line.
-}

>From 03318bbe163aae22061b1512f875e80565a57c42 Mon Sep 17 00:00:00 2001
From: Michael Buch <michaelbuc...@gmail.com>
Date: Mon, 7 Jul 2025 09:09:23 +0100
Subject: [PATCH 2/3] fixup! add tuple container summary

---
 lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp 
b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
index 327ab3ab9edd5..242446b6d4ad2 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
@@ -1504,6 +1504,10 @@ static void 
LoadLibStdcppFormatters(lldb::TypeCategoryImplSP cpp_category_sp) {
                 "^std::((__debug::)?|(__cxx11::)?)list<.+>(( )?&)?$",
                 stl_summary_flags, true);
 
+  AddCXXSummary(cpp_category_sp, ContainerSizeSummaryProvider,
+                "libstdc++ std::tuple summary provider",
+                "^std::tuple<.+>$", stl_summary_flags, true);
+
   cpp_category_sp->AddTypeSummary(
       "^std::((__debug::)?|(__cxx11::)?)forward_list<.+>(( )?&)?$",
       eFormatterMatchRegex,

>From 0fd1f000032feba73e76b9c76ac4b50e488399e8 Mon Sep 17 00:00:00 2001
From: Michael Buch <michaelbuc...@gmail.com>
Date: Mon, 7 Jul 2025 09:09:33 +0100
Subject: [PATCH 3/3] fixup! clang-format

---
 lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp 
b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
index 242446b6d4ad2..2745d46006e92 100644
--- a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
+++ b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
@@ -1505,8 +1505,8 @@ static void 
LoadLibStdcppFormatters(lldb::TypeCategoryImplSP cpp_category_sp) {
                 stl_summary_flags, true);
 
   AddCXXSummary(cpp_category_sp, ContainerSizeSummaryProvider,
-                "libstdc++ std::tuple summary provider",
-                "^std::tuple<.+>$", stl_summary_flags, true);
+                "libstdc++ std::tuple summary provider", "^std::tuple<.+>$",
+                stl_summary_flags, true);
 
   cpp_category_sp->AddTypeSummary(
       "^std::((__debug::)?|(__cxx11::)?)forward_list<.+>(( )?&)?$",

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to