diff options
| author | Matt Brubeck <mbrubeck@limpet.net> | 2020-08-10 16:19:54 -0700 |
|---|---|---|
| committer | Matt Brubeck <mbrubeck@limpet.net> | 2020-09-08 17:24:23 -0700 |
| commit | ebd15e790aceeaacb01bdd5c4361c5b4be2db237 (patch) | |
| tree | 3d365e241eaf9911ffcfcbe51340583719d8869d /src/etc/gdb_providers.py | |
| parent | 15ccdeb2248f697c3873a60eea538110ed5b2f8f (diff) | |
| download | rust-ebd15e790aceeaacb01bdd5c4361c5b4be2db237.tar.gz rust-ebd15e790aceeaacb01bdd5c4361c5b4be2db237.zip | |
Implement HashSet in terms of hashbrown::HashSet
Diffstat (limited to 'src/etc/gdb_providers.py')
| -rw-r--r-- | src/etc/gdb_providers.py | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/etc/gdb_providers.py b/src/etc/gdb_providers.py index 67f99ec4e40..bae51e6f9ee 100644 --- a/src/etc/gdb_providers.py +++ b/src/etc/gdb_providers.py @@ -347,7 +347,7 @@ class StdHashMapProvider: self.valobj = valobj self.show_values = show_values - table = self.valobj["base"]["table"] + table = self.table() capacity = int(table["bucket_mask"]) + 1 ctrl = table["ctrl"]["pointer"] @@ -368,6 +368,18 @@ class StdHashMapProvider: if is_presented: self.valid_indices.append(idx) + def table(self): + if self.show_values: + hashbrown_hashmap = self.valobj["base"] + elif self.valobj.type.fields()[0].name == "map": + # BACKCOMPAT: rust 1.47 + # HashSet wraps std::collections::HashMap, which wraps hashbrown::HashMap + hashbrown_hashmap = self.valobj["map"]["base"] + else: + # HashSet wraps hashbrown::HashSet, which wraps hashbrown::HashMap + hashbrown_hashmap = self.valobj["base"]["map"] + return hashbrown_hashmap["table"] + def to_string(self): if self.show_values: return "HashMap(size={})".format(self.size) |
