https://github.com/mentlerd updated 
https://github.com/llvm/llvm-project/pull/210495

>From bca867faafed4d2fd1fb83b27f75133a73fbb3d2 Mon Sep 17 00:00:00 2001
From: mentlerd <[email protected]>
Date: Sat, 18 Jul 2026 09:16:27 +0200
Subject: [PATCH 1/3] Fix bad assumption about std::vectors SCP being
 implemented in C++

This is not necessarily true across all configurations, particularly
with gnu libstdc++
---
 .../TestSBValueSetTypeSyntheticOverride.py                 | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git 
a/lldb/test/API/python_api/sbvalue_set_type_synthetic_override/TestSBValueSetTypeSyntheticOverride.py
 
b/lldb/test/API/python_api/sbvalue_set_type_synthetic_override/TestSBValueSetTypeSyntheticOverride.py
index e5e8f29ba0e75..907d1af956219 100644
--- 
a/lldb/test/API/python_api/sbvalue_set_type_synthetic_override/TestSBValueSetTypeSyntheticOverride.py
+++ 
b/lldb/test/API/python_api/sbvalue_set_type_synthetic_override/TestSBValueSetTypeSyntheticOverride.py
@@ -18,8 +18,11 @@ def test(self):
 
         # CXX runtime synthetic can be overridden
         vec = frame.FindVariable("vec")
-        self.assertTrue(vec.IsSynthetic())
-        self.checkOverride(vec, before=None)
+
+        # GNU libstdc++'s std::vector doesn't have a CXXSyntheticChildren 
implementation
+        # Use the fact that GetTypeSynthetic() only returns scripted SCPs to 
filter
+        if vec.IsSynthetic() and vec.GetTypeSynthetic() is None:
+            self.checkOverride(vec, before=None)
 
         # Python synthetic can be overridden
         foo = frame.FindVariable("foo")

>From 137af5dd7caca7885a0a1fe9040bfdf7d0c29310 Mon Sep 17 00:00:00 2001
From: mentlerd <[email protected]>
Date: Sat, 18 Jul 2026 10:32:03 +0200
Subject: [PATCH 2/3] Do the even simpler thing and omit testing against CXX
 synths

This part of the test has a non-trivial expectation against the LLDB which it
tests: it wants std::vector to have a non-scripted synthetic child provider
implementation.
---
 .../TestSBValueSetTypeSyntheticOverride.py                | 8 --------
 1 file changed, 8 deletions(-)

diff --git 
a/lldb/test/API/python_api/sbvalue_set_type_synthetic_override/TestSBValueSetTypeSyntheticOverride.py
 
b/lldb/test/API/python_api/sbvalue_set_type_synthetic_override/TestSBValueSetTypeSyntheticOverride.py
index 907d1af956219..8f8d3374218b3 100644
--- 
a/lldb/test/API/python_api/sbvalue_set_type_synthetic_override/TestSBValueSetTypeSyntheticOverride.py
+++ 
b/lldb/test/API/python_api/sbvalue_set_type_synthetic_override/TestSBValueSetTypeSyntheticOverride.py
@@ -16,14 +16,6 @@ def test(self):
 
         frame = thread.GetFrameAtIndex(0)
 
-        # CXX runtime synthetic can be overridden
-        vec = frame.FindVariable("vec")
-
-        # GNU libstdc++'s std::vector doesn't have a CXXSyntheticChildren 
implementation
-        # Use the fact that GetTypeSynthetic() only returns scripted SCPs to 
filter
-        if vec.IsSynthetic() and vec.GetTypeSynthetic() is None:
-            self.checkOverride(vec, before=None)
-
         # Python synthetic can be overridden
         foo = frame.FindVariable("foo")
         self.assertTrue(foo.IsSynthetic())

>From b450978e9cd3b396cbb7ab5ced815aad2bf4d70a Mon Sep 17 00:00:00 2001
From: mentlerd <[email protected]>
Date: Sat, 18 Jul 2026 12:31:22 +0200
Subject: [PATCH 3/3] Skip checking the before implementation for std::vector

---
 .../TestSBValueSetTypeSyntheticOverride.py    | 26 ++++++++++++++-----
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git 
a/lldb/test/API/python_api/sbvalue_set_type_synthetic_override/TestSBValueSetTypeSyntheticOverride.py
 
b/lldb/test/API/python_api/sbvalue_set_type_synthetic_override/TestSBValueSetTypeSyntheticOverride.py
index 8f8d3374218b3..39f0243c63896 100644
--- 
a/lldb/test/API/python_api/sbvalue_set_type_synthetic_override/TestSBValueSetTypeSyntheticOverride.py
+++ 
b/lldb/test/API/python_api/sbvalue_set_type_synthetic_override/TestSBValueSetTypeSyntheticOverride.py
@@ -16,6 +16,17 @@ def test(self):
 
         frame = thread.GetFrameAtIndex(0)
 
+        # CXX runtime synthetic can be overridden
+        vec = frame.FindVariable("vec")
+        self.assertTrue(vec.IsSynthetic())
+
+        # On some platforms the synthetic child provider implementation of
+        # std::vector is not native, in other words it's scripted
+        #
+        # This test can't reliably tell the difference, so skip checking
+        # the 'before' implementation typename check
+        self.checkOverride(vec, before=None, skip_before_impl_check=True)
+
         # Python synthetic can be overridden
         foo = frame.FindVariable("foo")
         self.assertTrue(foo.IsSynthetic())
@@ -26,19 +37,20 @@ def test(self):
         self.assertFalse(bar.IsSynthetic())
         self.checkOverride(bar, before=None)
 
-    def checkOverride(self, value, before):
+    def checkOverride(self, value, before, skip_before_impl_check=False):
         foo = 
lldb.SBTypeSynthetic.CreateWithClassName(f"foo_bar_synths.FooSynthetic")
         bar = 
lldb.SBTypeSynthetic.CreateWithClassName(f"foo_bar_synths.BarSynthetic")
 
         # Target the static (non synthetic) ValueObject
         static = value.GetNonSyntheticValue()
 
-        impl_before = 
static.GetSyntheticValue().GetTypeSyntheticImplementation()
-        if not before:
-            self.assertIsNone(impl_before)
-        else:
-            self.assertIsNotNone(impl_before)
-            self.assertEqual(type(impl_before).__name__, before)
+        if not skip_before_impl_check:
+            impl_before = 
static.GetSyntheticValue().GetTypeSyntheticImplementation()
+            if not before:
+                self.assertIsNone(impl_before)
+            else:
+                self.assertIsNotNone(impl_before)
+                self.assertEqual(type(impl_before).__name__, before)
 
         static.SetTypeSynthetic(bar)
         self.assertEqual(static.GetTypeSynthetic(), bar)

_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to