[Lldb-commits] [lldb] [lldb] Add lookup by name to SBValue.child (PR #118814)

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Fri Dec 6 01:06:08 PST 2024


================
@@ -23,6 +23,13 @@ STRING_EXTENSION_OUTSIDE(SBValue)
                     if -count <= key < count:
                         key %= count
                         return self.sbvalue.GetChildAtIndex(key)
+                elif isinstance(key, str):
+                    if child := self.sbvalue.GetChildMemberWithName(key):
+                        return child
+                    # Support base classes, which are children but not members.
+                    for child in self.sbvalue:
+                        if child.name == key:
+                            return child
----------------
labath wrote:

I don't think this is a good idea, as it means every negative lookup could end up enumerating all children of the object -- and there could be millions of them. If you really want to support looking up base classes (*), I think it should be done by iterating through the base base classes.

* I actually think we shouldn't be providing extra functionality here -- at least unless GetChildMemberWithName supports that as well. I think the fact that `operator[](string)` is shorthand for `GetChildMemberWithName(string)` makes things easy to understand. I think it'd be confusing if one of them provided functionality which is not available in the other one. You'd also have to be very careful about handling data formatters -- they can provide synthetic children, but not "synthetic base classes".

https://github.com/llvm/llvm-project/pull/118814


More information about the lldb-commits mailing list