about summary refs log tree commit diff
path: root/src/etc/lldb_providers.py
diff options
context:
space:
mode:
authorMatt Brubeck <mbrubeck@limpet.net>2020-08-10 16:19:54 -0700
committerMatt Brubeck <mbrubeck@limpet.net>2020-09-08 17:24:23 -0700
commitebd15e790aceeaacb01bdd5c4361c5b4be2db237 (patch)
tree3d365e241eaf9911ffcfcbe51340583719d8869d /src/etc/lldb_providers.py
parent15ccdeb2248f697c3873a60eea538110ed5b2f8f (diff)
downloadrust-ebd15e790aceeaacb01bdd5c4361c5b4be2db237.tar.gz
rust-ebd15e790aceeaacb01bdd5c4361c5b4be2db237.zip
Implement HashSet in terms of hashbrown::HashSet
Diffstat (limited to 'src/etc/lldb_providers.py')
-rw-r--r--src/etc/lldb_providers.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/etc/lldb_providers.py b/src/etc/lldb_providers.py
index 19da75c35b4..64cb9837943 100644
--- a/src/etc/lldb_providers.py
+++ b/src/etc/lldb_providers.py
@@ -526,7 +526,7 @@ class StdHashMapSyntheticProvider:
 
     def update(self):
         # type: () -> None
-        table = self.valobj.GetChildMemberWithName("base").GetChildMemberWithName("table")
+        table = self.table()
         capacity = table.GetChildMemberWithName("bucket_mask").GetValueAsUnsigned() + 1
         ctrl = table.GetChildMemberWithName("ctrl").GetChildAtIndex(0)
 
@@ -552,6 +552,17 @@ class StdHashMapSyntheticProvider:
             if is_present:
                 self.valid_indices.append(idx)
 
+    def table(self):
+        # type: () -> SBValue
+        if self.show_values:
+            hashbrown_hashmap = self.valobj.GetChildMemberWithName("base")
+        else:
+            # BACKCOMPAT: rust 1.47
+            # HashSet wraps either std HashMap or hashbrown::HashSet, which both
+            # wrap hashbrown::HashMap, so either way we "unwrap" twice.
+            hashbrown_hashmap = self.valobj.GetChildAtIndex(0).GetChildAtIndex(0)
+        return hashbrown_hashmap.GetChildMemberWithName("table")
+
     def has_children(self):
         # type: () -> bool
         return True