[Lldb-commits] [lldb] 40275a4 - [lldb][test] Add tests for formatting pointers to std::unordered_map
Michael Buch via lldb-commits
lldb-commits at lists.llvm.org
Wed Jul 2 03:21:24 PDT 2025
Author: Michael Buch
Date: 2025-07-02T11:21:02+01:00
New Revision: 40275a4ee31203b9ed014b0b830f456a1c267063
URL: https://github.com/llvm/llvm-project/commit/40275a4ee31203b9ed014b0b830f456a1c267063
DIFF: https://github.com/llvm/llvm-project/commit/40275a4ee31203b9ed014b0b830f456a1c267063.diff
LOG: [lldb][test] Add tests for formatting pointers to std::unordered_map
Ever since #143501 and #144517, these should pass.
Adds tests for https://github.com/llvm/llvm-project/issues/146040
Added:
Modified:
lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/unordered_map/TestDataFormatterLibccUnorderedMap.py
lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/unordered_map/main.cpp
Removed:
################################################################################
diff --git a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/unordered_map/TestDataFormatterLibccUnorderedMap.py b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/unordered_map/TestDataFormatterLibccUnorderedMap.py
index 2b1bd676a5b34..bf103aa78baba 100644
--- a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/unordered_map/TestDataFormatterLibccUnorderedMap.py
+++ b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/unordered_map/TestDataFormatterLibccUnorderedMap.py
@@ -9,21 +9,28 @@
class LibcxxUnorderedMapDataFormatterTestCase(TestBase):
- def check_reference(self, var_name: str, expected_type: str):
- self.expect_var_path(
- var_name,
- summary="size=1",
- type=expected_type,
- children=[
- ValueCheck(
- name="[0]",
- children=[
- ValueCheck(name="first", summary='"Hello"'),
- ValueCheck(name="second", summary='"World"'),
- ],
- ),
- ],
- )
+ def check_ptr_or_ref(self, var_name: str):
+ var = self.frame().FindVariable(var_name)
+ self.assertTrue(var)
+
+ pair = var.GetChildAtIndex(0)
+ self.assertTrue(pair)
+
+ self.assertEqual(pair.GetChildAtIndex(0).summary, '"Hello"')
+ self.assertEqual(pair.GetChildAtIndex(1).summary, '"World"')
+
+ def check_ptr_ptr(self, var_name: str):
+ var = self.frame().FindVariable(var_name)
+ self.assertTrue(var)
+
+ ptr = var.GetChildAtIndex(0)
+ self.assertTrue(ptr)
+
+ pair = ptr.GetChildAtIndex(0)
+ self.assertTrue(pair)
+
+ self.assertEqual(pair.GetChildAtIndex(0).summary, '"Hello"')
+ self.assertEqual(pair.GetChildAtIndex(1).summary, '"World"')
@add_test_categories(["libc++"])
def test_iterator_formatters(self):
@@ -84,12 +91,12 @@ def test_iterator_formatters(self):
lldbutil.continue_to_breakpoint(process, bkpt)
# Test references to std::unordered_map
- self.check_reference("ref1", "const StringMapT &")
- self.check_reference("ref2", "StringMapT &")
- self.check_reference("ref3", "StringMapTRef")
- self.check_reference("ref4", "const StringMapT &")
- self.check_reference("ref5", "const StringMapT &&")
- self.check_reference("ref6", "StringMapT &&")
+ self.check_ptr_or_ref("ref1")
+ self.check_ptr_or_ref("ref2")
+ self.check_ptr_or_ref("ref3")
+ self.check_ptr_or_ref("ref4")
+ self.check_ptr_or_ref("ref5")
+ self.check_ptr_or_ref("ref6")
# FIXME: we're getting this wrong.
self.expect_var_path(
@@ -97,3 +104,12 @@ def test_iterator_formatters(self):
summary="size=0",
type="const StringMapT *const &",
)
+
+ lldbutil.continue_to_breakpoint(process, bkpt)
+
+ self.check_ptr_or_ref("ptr1")
+ self.check_ptr_or_ref("ptr2")
+ self.check_ptr_or_ref("ptr3")
+ self.check_ptr_ptr("ptr4")
+ self.check_ptr_ptr("ptr5")
+ self.check_ptr_ptr("ptr6")
diff --git a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/unordered_map/main.cpp b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/unordered_map/main.cpp
index c581fded1ec5f..26cbb9476119d 100644
--- a/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/unordered_map/main.cpp
+++ b/lldb/test/API/functionalities/data-formatter/data-formatter-stl/libcxx/unordered_map/main.cpp
@@ -4,6 +4,7 @@
using StringMapT = std::unordered_map<std::string, std::string>;
using StringMapTRef = const StringMapT &;
+using StringMapTPtr = const StringMapT *;
static void check_references(const StringMapT &ref1, StringMapT &ref2,
StringMapTRef ref3, StringMapTRef &ref4,
@@ -12,6 +13,12 @@ static void check_references(const StringMapT &ref1, StringMapT &ref2,
std::printf("Break here");
}
+static void check_pointer(const StringMapT *ptr1, StringMapT *ptr2,
+ StringMapTPtr ptr3, StringMapTPtr *ptr4,
+ const StringMapT *const *ptr5, StringMapT **ptr6) {
+ std::printf("Break here");
+}
+
int main() {
StringMapT string_map;
{
@@ -35,6 +42,11 @@ int main() {
StringMapT tmp{{"Hello", "World"}};
check_references(tmp, tmp, tmp, tmp, StringMapT{tmp}, StringMapT{tmp},
&tmp);
+
+ StringMapT *tmp_ptr = &tmp;
+ const StringMapT *const_tmp_ptr = &tmp;
+ check_pointer(tmp_ptr, tmp_ptr, tmp_ptr, &const_tmp_ptr, &tmp_ptr,
+ &tmp_ptr);
}
return 0;
More information about the lldb-commits
mailing list