Skip to content

Commit 3d435d8

Browse files
author
Stein Somers
committed
Test and fix gdb pretty printing again
1 parent 37c945d commit 3d435d8

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

src/etc/gdb_rust_pretty_printing.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ def children(self):
374374
innermap = GdbValue(self.__val.get_wrapped_value()['map'])
375375
if innermap.get_wrapped_value()['length'] > 0:
376376
root = GdbValue(innermap.get_wrapped_value()['root'])
377-
type_name = str(root.type.ty.name).replace('core::option::Option<', '')[:-1]
377+
type_name = str(root.type.ty.name).replace('core::option::Option<', '', 1)[:-1]
378378
root = root.get_wrapped_value().cast(gdb.lookup_type(type_name))
379379
node_ptr = root['node']
380380
i = 0
@@ -398,7 +398,7 @@ def to_string(self):
398398
def children(self):
399399
if self.__val.get_wrapped_value()['length'] > 0:
400400
root = GdbValue(self.__val.get_wrapped_value()['root'])
401-
type_name = str(root.type.ty.name).replace('core::option::Option<', '')[:-1]
401+
type_name = str(root.type.ty.name).replace('core::option::Option<', '', 1)[:-1]
402402
root = root.get_wrapped_value().cast(gdb.lookup_type(type_name))
403403
node_ptr = root['node']
404404
i = 0

src/test/debuginfo/pretty-std-collections.rs

+15-4
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,19 @@
2626
// gdb-command: print empty_btree_map
2727
// gdb-check:$4 = BTreeMap<i32, u32>(len: 0)
2828

29+
// gdb-command: print option_btree_map
30+
// gdb-check:$5 = BTreeMap<bool, core::option::Option<bool>>(len: 2) = {[false] = [...], [true] = [...]}
31+
// (abbreviated because both values vary wildly over gdb versions and/or linux distributions)
32+
2933
// gdb-command: print nasty_btree_map
30-
// gdb-check:$5 = BTreeMap<i32, pretty_std_collections::MyLeafNode>(len: 1) = {[1] = pretty_std_collections::MyLeafNode (11)}
34+
// gdb-check:$6 = BTreeMap<i32, pretty_std_collections::MyLeafNode>(len: 15) = {[0] = pretty_std_collections::MyLeafNode (0), [...]}
35+
// (abbreviated because it's boring but we need enough elements to include internal nodes)
3136

3237
// gdb-command: print vec_deque
33-
// gdb-check:$6 = VecDeque<i32>(len: 3, cap: 8) = {5, 3, 7}
38+
// gdb-check:$7 = VecDeque<i32>(len: 3, cap: 8) = {5, 3, 7}
3439

3540
// gdb-command: print vec_deque2
36-
// gdb-check:$7 = VecDeque<i32>(len: 7, cap: 8) = {2, 3, 4, 5, 6, 7, 8}
41+
// gdb-check:$8 = VecDeque<i32>(len: 7, cap: 8) = {2, 3, 4, 5, 6, 7, 8}
3742

3843
#![allow(unused_variables)]
3944
use std::collections::BTreeMap;
@@ -59,8 +64,14 @@ fn main() {
5964

6065
let mut empty_btree_map: BTreeMap<i32, u32> = BTreeMap::new();
6166

67+
let mut option_btree_map: BTreeMap<bool, Option<bool>> = BTreeMap::new();
68+
option_btree_map.insert(false, None);
69+
option_btree_map.insert(true, Some(true));
70+
6271
let mut nasty_btree_map: BTreeMap<i32, MyLeafNode> = BTreeMap::new();
63-
nasty_btree_map.insert(1, MyLeafNode(11));
72+
for i in 0..15 {
73+
nasty_btree_map.insert(i, MyLeafNode(i));
74+
}
6475

6576
// VecDeque
6677
let mut vec_deque = VecDeque::new();

0 commit comments

Comments
 (0)