diff --git a/src/etc/natvis/intrinsic.natvis b/src/etc/natvis/intrinsic.natvis
index 52e5d37c83fbd..558536fa613a5 100644
--- a/src/etc/natvis/intrinsic.natvis
+++ b/src/etc/natvis/intrinsic.natvis
@@ -1,8 +1,8 @@
- {data_ptr,[length]s8}
- data_ptr,[length]s8
+ {(char*)data_ptr,[length]s8}
+ (char*)data_ptr,[length]s8
- length
diff --git a/src/etc/natvis/liballoc.natvis b/src/etc/natvis/liballoc.natvis
index 9cc60fc7b47e5..d001f40fccbc7 100644
--- a/src/etc/natvis/liballoc.natvis
+++ b/src/etc/natvis/liballoc.natvis
@@ -48,6 +48,7 @@
- vec.len
- vec.buf.cap
+ {(char*)vec.buf.ptr.pointer,[vec.len]s8}
vec.len
@@ -57,22 +58,38 @@
+
{ptr.pointer->value}
ptr.pointer->value
+ - ptr.pointer->strong
+ - ptr.pointer->weak
+
+ {ptr.pointer->value}
+
+ ptr.pointer->value
+ - ptr.pointer->strong
+ - ptr.pointer->weak
+
+
+
{ptr.pointer->data}
ptr.pointer->data
+ - ptr.pointer->strong
+ - ptr.pointer->weak
{ptr.pointer->data}
ptr.pointer->data
+ - ptr.pointer->strong
+ - ptr.pointer->weak
diff --git a/src/etc/natvis/libcore.natvis b/src/etc/natvis/libcore.natvis
index c8196d5c713b2..fa8ee2d70bbab 100644
--- a/src/etc/natvis/libcore.natvis
+++ b/src/etc/natvis/libcore.natvis
@@ -1,23 +1,163 @@
-
- {{ Unique {pointer} }}
+
+ {value.value}
- - pointer
+ value.value
+
+
+
+ {value}
+
+ value
+
+
+
+ {value}
+
+ value
+
+
+
+ {value.value}
+
+ - "Unborrowed",sb
+ - "Immutably borrowed",sb
+ - "Mutably borrowed",sb
+ value.value
+
+
+
+ {value}
+
+ value
-
- {{ Shared {pointer} }}
+
+ {value}
- - pointer
+ value
+
+
+
+
+ {__0}
+
+
+ {__0}
+
+
+ {__0}
+
+
+ {__0}
+
+
+ {__0}
+
+
+ {__0}
+
+
+ {__0}
+
+
+ {__0}
+
+
+ {__0}
+
+
+ {__0}
+
+
+ {__0}
+
+
+ {__0}
+
+
+
+ {__0}
+
+
+
+ ({start}..{end})
+
+
+ ({start}..)
+
+
+ ({start}..={end})
+
+
+ (..{end})
+
+
+ (..={end})
+
+
+
+ Pin({(void*)pointer}: {pointer})
+
+ pointer
- {(void*) pointer}
+ NonNull({(void*) pointer}: {pointer})
+
+ pointer
+
+
+
+
+ Unique({(void*)pointer}: {pointer})
+
+ pointer
+
+
+
+
+ {(bool)v.value}
+
+
+ {v.value}
+
+
+ {v.value}
+
+
+ {v.value}
+
+
+ {v.value}
+
+
+ {v.value}
+
+
+ {v.value}
+
+
+ {v.value}
+
+
+ {v.value}
+
+
+ {v.value}
+
+
+ {v.value}
+
+
+
+ {secs,d}s {nanos,d}ns
- - *pointer
+ - secs,d
+ - nanos,d
-
\ No newline at end of file
+
diff --git a/src/etc/natvis/libstd.natvis b/src/etc/natvis/libstd.natvis
index 3ccd2e9c30ed5..c7be0167de9fd 100644
--- a/src/etc/natvis/libstd.natvis
+++ b/src/etc/natvis/libstd.natvis
@@ -74,9 +74,10 @@
- {inner.data_ptr,s}
+ {(char*)inner.data_ptr}
+ {(char*)inner.data_ptr}
inner.length
@@ -101,4 +102,19 @@
+
+
+ {(char*)inner.inner.bytes.buf.ptr.pointer,[inner.inner.bytes.len]}
+
+
+ {(char*)inner.inner.bytes.buf.ptr.pointer,[inner.inner.bytes.len]}
+
+
+ inner.inner.bytes.len
+ (char*)inner.inner.bytes.buf.ptr.pointer
+
+
+
+
+
diff --git a/src/test/debuginfo/duration-type.rs b/src/test/debuginfo/duration-type.rs
new file mode 100644
index 0000000000000..bc0266d644ec1
--- /dev/null
+++ b/src/test/debuginfo/duration-type.rs
@@ -0,0 +1,22 @@
+// only-cdb
+// compile-flags:-g
+
+// === CDB TESTS ==================================================================================
+
+// cdb-command: g
+
+// cdb-command: dx duration
+// cdb-check:duration : 5s 12ns [Type: core::time::Duration]
+// cdb-check: [] [Type: core::time::Duration]
+// cdb-check: seconds : 5 [Type: unsigned __int64]
+// cdb-check: nanoseconds : 12 [Type: unsigned int]
+
+use std::time::Duration;
+
+fn main() {
+ let duration = Duration::new(5, 12);
+
+ zzz(); // #break
+}
+
+fn zzz() { }
diff --git a/src/test/debuginfo/marker-types.rs b/src/test/debuginfo/marker-types.rs
new file mode 100644
index 0000000000000..f27a5d20c70db
--- /dev/null
+++ b/src/test/debuginfo/marker-types.rs
@@ -0,0 +1,49 @@
+// only-cdb
+// compile-flags:-g
+
+// === CDB TESTS ==================================================================================
+
+// cdb-command: g
+
+// cdb-command: dx nonnull
+// cdb-check:nonnull : NonNull(0x[...]: 0xc) [Type: core::ptr::non_null::NonNull]
+// cdb-check: [] [Type: core::ptr::non_null::NonNull]
+// cdb-check: 0xc [Type: unsigned int]
+
+// cdb-command: dx manuallydrop
+// cdb-check:manuallydrop : 12345 [Type: core::mem::manually_drop::ManuallyDrop]
+// cdb-check: [] [Type: core::mem::manually_drop::ManuallyDrop]
+
+// cdb-command: dx pin
+// cdb-check:pin : Pin(0x[...]: "this") [Type: core::pin::Pin >]
+// cdb-check: [] [Type: core::pin::Pin >]
+// cdb-check: [len] : 0x4 [Type: unsigned __int64]
+// cdb-check: [capacity] : 0x4 [Type: unsigned __int64]
+// cdb-check: [chars] : "this"
+
+// cdb-command: dx unique
+// cdb-check:unique : Unique(0x[...]: (0x2a, 4321)) [Type: core::ptr::unique::Unique >]
+// cdb-check: [] [Type: core::ptr::unique::Unique >]
+// cdb-check: [0] : 0x2a [Type: unsigned __int64]
+// cdb-check: [1] : 4321 [Type: int]
+
+#![feature(ptr_internals)]
+
+use std::mem::ManuallyDrop;
+use std::pin::Pin;
+use std::ptr::{NonNull, Unique};
+
+fn main() {
+ let nonnull: NonNull<_> = (&12u32).into();
+
+ let manuallydrop = ManuallyDrop::new(12345i32);
+
+ let mut s = "this".to_string();
+ let pin = Pin::new(&mut s);
+
+ let unique: Unique<_> = (&mut (42u64, 4321i32)).into();
+
+ zzz(); // #break
+}
+
+fn zzz() { }
diff --git a/src/test/debuginfo/mutable-locs.rs b/src/test/debuginfo/mutable-locs.rs
index 428a7e8d9c09b..688483e43e4db 100644
--- a/src/test/debuginfo/mutable-locs.rs
+++ b/src/test/debuginfo/mutable-locs.rs
@@ -9,26 +9,64 @@
// cdb-command: g
// cdb-command:dx static_c,d
-// cdb-check:static_c,d [Type: core::cell::Cell]
-// cdb-check: [...] value [Type: core::cell::UnsafeCell]
+// cdb-check:static_c,d : 10 [Type: core::cell::Cell]
+// cdb-check: [] [Type: core::cell::Cell]
// cdb-command: dx static_c.value,d
-// cdb-check:static_c.value,d [Type: core::cell::UnsafeCell]
-// cdb-check: [...] value : 10 [Type: int]
+// cdb-check:static_c.value,d : 10 [Type: core::cell::UnsafeCell]
+// cdb-check: [] [Type: core::cell::UnsafeCell]
// cdb-command: dx dynamic_c,d
-// cdb-check:dynamic_c,d [Type: core::cell::RefCell]
-// cdb-check: [...] borrow [Type: core::cell::Cell]
-// cdb-check: [...] value [Type: core::cell::UnsafeCell]
+// cdb-check:dynamic_c,d : 15 [Type: core::cell::RefCell]
+// cdb-check: [] [Type: core::cell::RefCell]
+// cdb-check: [Borrow state] : Unborrowed
// cdb-command: dx dynamic_c.value,d
-// cdb-check:dynamic_c.value,d [Type: core::cell::UnsafeCell]
-// cdb-check: [...] value : 15 [Type: int]
+// cdb-check:dynamic_c.value,d : 15 [Type: core::cell::UnsafeCell]
+// cdb-check: [] [Type: core::cell::UnsafeCell]
// cdb-command: dx b,d
-// cdb-check:b,d [Type: core::cell::RefMut]
-// cdb-check: [...] value : [...] : 42 [Type: int *]
-// cdb-check: [...] borrow [Type: core::cell::BorrowRefMut]
+// cdb-check:b,d : 42 [Type: core::cell::RefMut]
+// cdb-check: [] [Type: core::cell::RefMut]
+// cdb-check: 42 [Type: int]
+
+// cdb-command: g
+
+// cdb-command: dx dynamic_c,d
+// cdb-check:dynamic_c,d : 15 [Type: core::cell::RefCell]
+// cdb-check: [] [Type: core::cell::RefCell]
+// cdb-check: [Borrow state] : Immutably borrowed
+
+// cdb-command: dx r_borrow,d
+// cdb-check:r_borrow,d : 15 [Type: core::cell::Ref]
+// cdb-check: [] [Type: core::cell::Ref]
+// cdb-check: 15 [Type: int]
+
+// cdb-command: g
+
+// cdb-command: dx dynamic_c,d
+// cdb-check:dynamic_c,d : 15 [Type: core::cell::RefCell]
+// cdb-check: [] [Type: core::cell::RefCell]
+// cdb-check: [Borrow state] : Unborrowed
+
+// cdb-command: g
+
+// cdb-command: dx dynamic_c,d
+// cdb-check:dynamic_c,d : 15 [Type: core::cell::RefCell]
+// cdb-check: [] [Type: core::cell::RefCell]
+// cdb-check: [Borrow state] : Mutably borrowed
+
+// cdb-command: dx r_borrow_mut,d
+// cdb-check:r_borrow_mut,d : 15 [Type: core::cell::RefMut]
+// cdb-check: [] [Type: core::cell::RefMut]
+// cdb-check: 15 [Type: int]
+
+// cdb-command: g
+
+// cdb-command: dx dynamic_c,d
+// cdb-check:dynamic_c,d : 15 [Type: core::cell::RefCell]
+// cdb-check: [] [Type: core::cell::RefCell]
+// cdb-check: [Borrow state] : Unborrowed
#![allow(unused_variables)]
@@ -46,6 +84,21 @@ fn main() {
*b = 42;
zzz(); // #break
+
+ // Check that `RefCell`'s borrow state visualizes correctly
+ {
+ let r_borrow = dynamic_c.borrow();
+ zzz(); // #break
+ }
+
+ zzz(); // #break
+
+ {
+ let r_borrow_mut = dynamic_c.borrow_mut();
+ zzz(); // #break
+ }
+
+ zzz(); // #break
}
fn zzz() {()}
diff --git a/src/test/debuginfo/numeric-types.rs b/src/test/debuginfo/numeric-types.rs
new file mode 100644
index 0000000000000..2eae9239b6118
--- /dev/null
+++ b/src/test/debuginfo/numeric-types.rs
@@ -0,0 +1,206 @@
+// only-cdb
+// compile-flags:-g
+
+// Tests the visualizations for `NonZero{I,U}{8,16,32,64,128,size}`, `Wrapping` and
+// `Atomic{Bool,I8,I16,I32,I64,Isize,U8,U16,U32,U64,Usize}` located in `libcore.natvis`.
+
+// === CDB TESTS ==================================================================================
+// cdb-command: g
+
+// cdb-command: dx nz_i8
+// cdb-check:nz_i8 : 11 [Type: core::num::nonzero::NonZeroI8]
+// cdb-check: [] [Type: core::num::nonzero::NonZeroI8]
+
+// cdb-command: dx nz_i16
+// cdb-check:nz_i16 : 22 [Type: core::num::nonzero::NonZeroI16]
+// cdb-check: [] [Type: core::num::nonzero::NonZeroI16]
+
+// cdb-command: dx nz_i32
+// cdb-check:nz_i32 : 33 [Type: core::num::nonzero::NonZeroI32]
+// cdb-check: [] [Type: core::num::nonzero::NonZeroI32]
+
+// cdb-command: dx nz_i64
+// cdb-check:nz_i64 : 44 [Type: core::num::nonzero::NonZeroI64]
+// cdb-check: [] [Type: core::num::nonzero::NonZeroI64]
+
+// 128-bit integers don't seem to work in CDB
+// cdb-command: dx nz_i128
+// cdb-check: [] [Type: core::num::nonzero::NonZeroI128]
+
+// cdb-command: dx nz_isize
+// cdb-check:nz_isize : 66 [Type: core::num::nonzero::NonZeroIsize]
+// cdb-check: [] [Type: core::num::nonzero::NonZeroIsize]
+
+// cdb-command: dx nz_u8
+// cdb-check:nz_u8 : 0x4d [Type: core::num::nonzero::NonZeroU8]
+// cdb-check: [] [Type: core::num::nonzero::NonZeroU8]
+
+// cdb-command: dx nz_u16
+// cdb-check:nz_u16 : 0x58 [Type: core::num::nonzero::NonZeroU16]
+// cdb-check: [] [Type: core::num::nonzero::NonZeroU16]
+
+// cdb-command: dx nz_u32
+// cdb-check:nz_u32 : 0x63 [Type: core::num::nonzero::NonZeroU32]
+// cdb-check: [] [Type: core::num::nonzero::NonZeroU32]
+
+// cdb-command: dx nz_u64
+// cdb-check:nz_u64 : 0x64 [Type: core::num::nonzero::NonZeroU64]
+// cdb-check: [] [Type: core::num::nonzero::NonZeroU64]
+
+// 128-bit integers don't seem to work in CDB
+// cdb-command: dx nz_u128
+// cdb-check: [] [Type: core::num::nonzero::NonZeroU128]
+
+// cdb-command: dx nz_usize
+// cdb-check:nz_usize : 0x7a [Type: core::num::nonzero::NonZeroUsize]
+// cdb-check: [] [Type: core::num::nonzero::NonZeroUsize]
+
+// cdb-command: dx w_i8
+// cdb-check:w_i8 : 10 [Type: core::num::wrapping::Wrapping]
+// cdb-check: [] [Type: core::num::wrapping::Wrapping]
+
+// cdb-command: dx w_i16
+// cdb-check:w_i16 : 20 [Type: core::num::wrapping::Wrapping]
+// cdb-check: [] [Type: core::num::wrapping::Wrapping]
+
+// cdb-command: dx w_i32
+// cdb-check:w_i32 : 30 [Type: core::num::wrapping::Wrapping]
+// cdb-check: [] [Type: core::num::wrapping::Wrapping]
+
+// cdb-command: dx w_i64
+// cdb-check:w_i64 : 40 [Type: core::num::wrapping::Wrapping]
+// cdb-check: [] [Type: core::num::wrapping::Wrapping]
+
+// 128-bit integers don't seem to work in CDB
+// cdb-command: dx w_i128
+// cdb-check:w_i128 [Type: core::num::wrapping::Wrapping]
+// cdb-check: [] [Type: core::num::wrapping::Wrapping]
+
+// cdb-command: dx w_isize
+// cdb-check:w_isize : 60 [Type: core::num::wrapping::Wrapping]
+// cdb-check: [] [Type: core::num::wrapping::Wrapping]
+
+// cdb-command: dx w_u8
+// cdb-check:w_u8 : 0x46 [Type: core::num::wrapping::Wrapping]
+// cdb-check: [] [Type: core::num::wrapping::Wrapping]
+
+// cdb-command: dx w_u16
+// cdb-check:w_u16 : 0x50 [Type: core::num::wrapping::Wrapping]
+// cdb-check: [] [Type: core::num::wrapping::Wrapping]
+
+// cdb-command: dx w_u32
+// cdb-check:w_u32 : 0x5a [Type: core::num::wrapping::Wrapping]
+// cdb-check: [] [Type: core::num::wrapping::Wrapping]
+
+// cdb-command: dx w_u64
+// cdb-check:w_u64 : 0x64 [Type: core::num::wrapping::Wrapping]
+// cdb-check: [] [Type: core::num::wrapping::Wrapping]
+
+// 128-bit integers don't seem to work in CDB
+// cdb-command: dx w_u128
+// cdb-check:w_u128 [Type: core::num::wrapping::Wrapping]
+// cdb-check: [] [Type: core::num::wrapping::Wrapping]
+
+// cdb-command: dx w_usize
+// cdb-check:w_usize : 0x78 [Type: core::num::wrapping::Wrapping]
+// cdb-check: [] [Type: core::num::wrapping::Wrapping]
+
+// cdb-command: dx a_bool_t
+// cdb-check:a_bool_t : true [Type: core::sync::atomic::AtomicBool]
+// cdb-check: [] [Type: core::sync::atomic::AtomicBool]
+
+// cdb-command: dx a_bool_f
+// cdb-check:a_bool_f : false [Type: core::sync::atomic::AtomicBool]
+// cdb-check: [] [Type: core::sync::atomic::AtomicBool]
+
+// cdb-command: dx a_i8
+// cdb-check:a_i8 : 2 [Type: core::sync::atomic::AtomicI8]
+// cdb-check: [] [Type: core::sync::atomic::AtomicI8]
+
+// cdb-command: dx a_i16
+// cdb-check:a_i16 : 4 [Type: core::sync::atomic::AtomicI16]
+// cdb-check: [] [Type: core::sync::atomic::AtomicI16]
+
+// cdb-command: dx a_i32
+// cdb-check:a_i32 : 8 [Type: core::sync::atomic::AtomicI32]
+// cdb-check: [] [Type: core::sync::atomic::AtomicI32]
+
+// cdb-command: dx a_i64
+// cdb-check:a_i64 : 16 [Type: core::sync::atomic::AtomicI64]
+// cdb-check: [] [Type: core::sync::atomic::AtomicI64]
+
+// cdb-command: dx a_isize
+// cdb-check:a_isize : 32 [Type: core::sync::atomic::AtomicIsize]
+// cdb-check: [] [Type: core::sync::atomic::AtomicIsize]
+
+// cdb-command: dx a_u8
+// cdb-check:a_u8 : 0x40 [Type: core::sync::atomic::AtomicU8]
+// cdb-check: [] [Type: core::sync::atomic::AtomicU8]
+
+// cdb-command: dx a_u16
+// cdb-check:a_u16 : 0x80 [Type: core::sync::atomic::AtomicU16]
+// cdb-check: [] [Type: core::sync::atomic::AtomicU16]
+
+// cdb-command: dx a_u32
+// cdb-check:a_u32 : 0x100 [Type: core::sync::atomic::AtomicU32]
+// cdb-check: [] [Type: core::sync::atomic::AtomicU32]
+
+// cdb-command: dx a_u64
+// cdb-check:a_u64 : 0x200 [Type: core::sync::atomic::AtomicU64]
+// cdb-check: [] [Type: core::sync::atomic::AtomicU64]
+
+// cdb-command: dx a_usize
+// cdb-check:a_usize : 0x400 [Type: core::sync::atomic::AtomicUsize]
+// cdb-check: [] [Type: core::sync::atomic::AtomicUsize]
+
+use std::num::*;
+use std::sync::atomic::*;
+
+fn main() {
+ let nz_i8 = NonZeroI8::new(11).unwrap();
+ let nz_i16 = NonZeroI16::new(22).unwrap();
+ let nz_i32 = NonZeroI32::new(33).unwrap();
+ let nz_i64 = NonZeroI64::new(44).unwrap();
+ let nz_i128 = NonZeroI128::new(55).unwrap();
+ let nz_isize = NonZeroIsize::new(66).unwrap();
+
+ let nz_u8 = NonZeroU8::new(77).unwrap();
+ let nz_u16 = NonZeroU16::new(88).unwrap();
+ let nz_u32 = NonZeroU32::new(99).unwrap();
+ let nz_u64 = NonZeroU64::new(100).unwrap();
+ let nz_u128 = NonZeroU128::new(111).unwrap();
+ let nz_usize = NonZeroUsize::new(122).unwrap();
+
+ let w_i8 = Wrapping(10i8);
+ let w_i16 = Wrapping(20i16);
+ let w_i32 = Wrapping(30i32);
+ let w_i64 = Wrapping(40i64);
+ let w_i128 = Wrapping(50i128);
+ let w_isize = Wrapping(60isize);
+
+ let w_u8 = Wrapping(70u8);
+ let w_u16 = Wrapping(80u16);
+ let w_u32 = Wrapping(90u32);
+ let w_u64 = Wrapping(100u64);
+ let w_u128 = Wrapping(110u128);
+ let w_usize = Wrapping(120usize);
+
+ let a_bool_t = AtomicBool::new(true);
+ let a_bool_f = AtomicBool::new(false);
+
+ let a_i8 = AtomicI8::new(2);
+ let a_i16 = AtomicI16::new(4);
+ let a_i32 = AtomicI32::new(8);
+ let a_i64 = AtomicI64::new(16);
+ let a_isize = AtomicIsize::new(32);
+
+ let a_u8 = AtomicU8::new(64);
+ let a_u16 = AtomicU16::new(128);
+ let a_u32 = AtomicU32::new(256);
+ let a_u64 = AtomicU64::new(512);
+ let a_usize = AtomicUsize::new(1024);
+
+ zzz(); // #break
+}
+
+fn zzz() { }
diff --git a/src/test/debuginfo/pretty-std.rs b/src/test/debuginfo/pretty-std.rs
index 7ed76beb8c6d9..303f0114b1734 100644
--- a/src/test/debuginfo/pretty-std.rs
+++ b/src/test/debuginfo/pretty-std.rs
@@ -111,8 +111,9 @@
// cdb-check: [11] : 33 '!' [Type: char]
// cdb-command: dx os_string
-// cdb-check:os_string [Type: [...]::OsString]
-// NOTE: OsString doesn't have a .natvis entry yet.
+// cdb-check:os_string : "IAMA OS string 😃" [Type: std::ffi::os_str::OsString]
+// cdb-check: [] [Type: std::ffi::os_str::OsString]
+// cdb-check: [chars] : "IAMA OS string 😃"
// cdb-command: dx some
// cdb-check:some : Some [Type: enum$ >]
@@ -129,10 +130,24 @@
// NOTE: cdb fails to interpret debug info of Option enums on i686.
// cdb-check:some_string [Type: enum$, 1, [...], Some>]
+// cdb-command: dx linkedlist
+// cdb-check:linkedlist : { len=0x2 } [Type: alloc::collections::linked_list::LinkedList]
+// cdb-check: [] [Type: alloc::collections::linked_list::LinkedList]
+// cdb-check: [0x0] : 128 [Type: int]
+// cdb-check: [0x1] : 42 [Type: int]
+
+// cdb-command: dx vecdeque
+// cdb-check:vecdeque : { len=0x2 } [Type: alloc::collections::vec_deque::VecDeque]
+// cdb-check: [] [Type: alloc::collections::vec_deque::VecDeque]
+// cdb-check: [len] : 0x2
+// cdb-check: [capacity] : 0x8 [Type: unsigned __int64]
+// cdb-check: [0x0] : 90 [Type: int]
+// cdb-check: [0x1] : 20 [Type: int]
+
#![allow(unused_variables)]
+use std::collections::{LinkedList, VecDeque};
use std::ffi::OsString;
-
fn main() {
// &[]
@@ -156,6 +171,16 @@ fn main() {
let some_string = Some("IAMA optional string!".to_owned());
+ // LinkedList
+ let mut linkedlist = LinkedList::new();
+ linkedlist.push_back(42);
+ linkedlist.push_front(128);
+
+ // VecDeque
+ let mut vecdeque = VecDeque::new();
+ vecdeque.push_back(20);
+ vecdeque.push_front(90);
+
zzz(); // #break
}
diff --git a/src/test/debuginfo/range-types.rs b/src/test/debuginfo/range-types.rs
index c0288b6ba80e0..7362a50a03015 100644
--- a/src/test/debuginfo/range-types.rs
+++ b/src/test/debuginfo/range-types.rs
@@ -9,26 +9,27 @@
// cdb-command: g
// cdb-command: dx r1,d
-// cdb-check:r1,d [Type: core::ops::range::Range]
-// cdb-check: [...] start : 3 [Type: int]
-// cdb-check: [...] end : 5 [Type: int]
+// cdb-check:r1,d : (3..5) [Type: core::ops::range::Range]
+// cdb-check: [] [Type: core::ops::range::Range]
// cdb-command: dx r2,d
-// cdb-check:r2,d [Type: core::ops::range::RangeFrom]
-// cdb-check: [...] start : 2 [Type: int]
+// cdb-check:r2,d : (2..) [Type: core::ops::range::RangeFrom]
+// cdb-check: [] [Type: core::ops::range::RangeFrom]
// cdb-command: dx r3,d
-// cdb-check:r3,d [Type: core::ops::range::RangeInclusive]
-// cdb-check: [...] start : 1 [Type: int]
-// cdb-check: [...] end : 4 [Type: int]
-// cdb-check: [...] exhausted : false [Type: bool]
+// cdb-check:r3,d : (1..=4) [Type: core::ops::range::RangeInclusive]
+// cdb-check: [] [Type: core::ops::range::RangeInclusive]
// cdb-command: dx r4,d
-// cdb-check:r4,d [Type: core::ops::range::RangeToInclusive]
-// cdb-check: [...] end : 3 [Type: int]
+// cdb-check:r4,d : (..10) [Type: core::ops::range::RangeTo]
+// cdb-check: [] [Type: core::ops::range::RangeTo]
// cdb-command: dx r5,d
-// cdb-check:r5,d [Type: core::ops::range::RangeFull]
+// cdb-check:r5,d : (..=3) [Type: core::ops::range::RangeToInclusive]
+// cdb-check: [] [Type: core::ops::range::RangeToInclusive]
+
+// cdb-command: dx r6,d
+// cdb-check:r6,d [Type: core::ops::range::RangeFull]
#[allow(unused_variables)]
@@ -36,11 +37,12 @@ use std::ops::{Range, RangeFrom, RangeFull, RangeInclusive, RangeToInclusive};
fn main()
{
- let r1 = Range{start: 3, end: 5};
- let r2 = RangeFrom{start: 2};
- let r3 = RangeInclusive::new(1, 4);
- let r4 = RangeToInclusive{end: 3};
- let r5 = RangeFull{};
+ let r1 = (3..5);
+ let r2 = (2..);
+ let r3 = (1..=4);
+ let r4 = (..10);
+ let r5 = (..=3);
+ let r6 = (..);
zzz(); // #break
}
diff --git a/src/test/debuginfo/rc_arc.rs b/src/test/debuginfo/rc_arc.rs
index 6e558bd3c13aa..55cddf7c6c6b4 100644
--- a/src/test/debuginfo/rc_arc.rs
+++ b/src/test/debuginfo/rc_arc.rs
@@ -29,22 +29,39 @@
// cdb-command:dx r,d
// cdb-check:r,d : 42 [Type: alloc::rc::Rc]
+// cdb-check: [] [Type: alloc::rc::Rc]
+// cdb-check: [Reference count] : 2 [Type: core::cell::Cell]
+// cdb-check: [Weak reference count] : 2 [Type: core::cell::Cell]
// cdb-command:dx r1,d
// cdb-check:r1,d : 42 [Type: alloc::rc::Rc]
+// cdb-check: [] [Type: alloc::rc::Rc]
+// cdb-check: [Reference count] : 2 [Type: core::cell::Cell]
+// cdb-check: [Weak reference count] : 2 [Type: core::cell::Cell]
// cdb-command:dx w1,d
-// cdb-check:w1,d [Type: alloc::rc::Weak]
-// cdb-check: [...] ptr : [...] [Type: core::ptr::non_null::NonNull >]
+// cdb-check:w1,d : 42 [Type: alloc::rc::Weak]
+// cdb-check: [] [Type: alloc::rc::Weak]
+// cdb-check: [Reference count] : 2 [Type: core::cell::Cell]
+// cdb-check: [Weak reference count] : 2 [Type: core::cell::Cell]
// cdb-command:dx a,d
// cdb-check:a,d : 42 [Type: alloc::sync::Arc]
+// cdb-check: [] [Type: alloc::sync::Arc]
+// cdb-check: [Reference count] : 2 [Type: core::sync::atomic::AtomicUsize]
+// cdb-check: [Weak reference count] : 2 [Type: core::sync::atomic::AtomicUsize]
// cdb-command:dx a1,d
// cdb-check:a1,d : 42 [Type: alloc::sync::Arc]
+// cdb-check: [] [Type: alloc::sync::Arc]
+// cdb-check: [Reference count] : 2 [Type: core::sync::atomic::AtomicUsize]
+// cdb-check: [Weak reference count] : 2 [Type: core::sync::atomic::AtomicUsize]
// cdb-command:dx w2,d
// cdb-check:w2,d : 42 [Type: alloc::sync::Weak]
+// cdb-check: [] [Type: alloc::sync::Weak]
+// cdb-check: [Reference count] : 2 [Type: core::sync::atomic::AtomicUsize]
+// cdb-check: [Weak reference count] : 2 [Type: core::sync::atomic::AtomicUsize]
use std::rc::Rc;
use std::sync::Arc;
diff --git a/src/test/debuginfo/rwlock-read.rs b/src/test/debuginfo/rwlock-read.rs
index ac652c8ccf4cc..e1c10a4d37fc3 100644
--- a/src/test/debuginfo/rwlock-read.rs
+++ b/src/test/debuginfo/rwlock-read.rs
@@ -11,15 +11,15 @@
// cdb-command:dx l
// cdb-check:l [Type: std::sync::rwlock::RwLock]
// cdb-check: [...] poison [Type: std::sync::poison::Flag]
-// cdb-check: [...] data [Type: core::cell::UnsafeCell]
+// cdb-check: [...] data : 0 [Type: core::cell::UnsafeCell]
//
// cdb-command:dx r
// cdb-check:r [Type: std::sync::rwlock::RwLockReadGuard]
// cdb-check: [...] lock : [...] [Type: std::sync::rwlock::RwLock *]
//
// cdb-command:dx r.lock->data,d
-// cdb-check:r.lock->data,d [Type: core::cell::UnsafeCell]
-// cdb-check: [...] value : 0 [Type: int]
+// cdb-check:r.lock->data,d : 0 [Type: core::cell::UnsafeCell]
+// cdb-check: [] [Type: core::cell::UnsafeCell]
#[allow(unused_variables)]