mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-22 18:15:07 +03:00
Rollup merge of #55961 - tromey:Bug-55944-vecdeque, r=nikomatsakis
Fix VecDeque pretty-printer This fixes the VecDeque pretty-printer to handle cases where head < tail. Closes #55944
This commit is contained in:
@@ -293,15 +293,23 @@ class RustStdVecDequePrinter(object):
|
||||
def to_string(self):
|
||||
(tail, head, data_ptr, cap) = \
|
||||
rustpp.extract_tail_head_ptr_and_cap_from_std_vecdeque(self.__val)
|
||||
if head >= tail:
|
||||
size = head - tail
|
||||
else:
|
||||
size = cap + head - tail
|
||||
return (self.__val.type.get_unqualified_type_name() +
|
||||
("(len: %i, cap: %i)" % (head - tail, cap)))
|
||||
("(len: %i, cap: %i)" % (size, cap)))
|
||||
|
||||
def children(self):
|
||||
(tail, head, data_ptr, cap) = \
|
||||
rustpp.extract_tail_head_ptr_and_cap_from_std_vecdeque(self.__val)
|
||||
gdb_ptr = data_ptr.get_wrapped_value()
|
||||
for index in xrange(tail, head):
|
||||
yield (str(index), (gdb_ptr + index).dereference())
|
||||
if head >= tail:
|
||||
size = head - tail
|
||||
else:
|
||||
size = cap + head - tail
|
||||
for index in xrange(0, size):
|
||||
yield (str(index), (gdb_ptr + ((tail + index) % cap)).dereference())
|
||||
|
||||
|
||||
class RustStdBTreeSetPrinter(object):
|
||||
|
||||
@@ -28,6 +28,9 @@
|
||||
// gdb-command: print vec_deque
|
||||
// gdb-check:$3 = VecDeque<i32>(len: 3, cap: 8) = {5, 3, 7}
|
||||
|
||||
// gdb-command: print vec_deque2
|
||||
// gdb-check:$4 = VecDeque<i32>(len: 7, cap: 8) = {2, 3, 4, 5, 6, 7, 8}
|
||||
|
||||
#![allow(unused_variables)]
|
||||
use std::collections::BTreeSet;
|
||||
use std::collections::BTreeMap;
|
||||
@@ -54,6 +57,14 @@ fn main() {
|
||||
vec_deque.push_back(3);
|
||||
vec_deque.push_back(7);
|
||||
|
||||
// VecDeque where an element was popped.
|
||||
let mut vec_deque2 = VecDeque::new();
|
||||
for i in 1..8 {
|
||||
vec_deque2.push_back(i)
|
||||
}
|
||||
vec_deque2.pop_front();
|
||||
vec_deque2.push_back(8);
|
||||
|
||||
zzz(); // #break
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user