| // Testing the display of Cell, RefCell, and RefMut in cdb. | |
| // cdb-only | |
| //@ min-cdb-version: 10.0.18317.1001 | |
| //@ compile-flags:-g | |
| // === CDB TESTS ================================================================================== | |
| //@ cdb-command: g | |
| //@ cdb-command:dx static_c,d | |
| //@ cdb-check:static_c,d : 10 [Type: core::cell::Cell<i32>] | |
| //@ cdb-check: [<Raw View>] [Type: core::cell::Cell<i32>] | |
| //@ cdb-command: dx static_c.value,d | |
| //@ cdb-check:static_c.value,d : 10 [Type: core::cell::UnsafeCell<i32>] | |
| //@ cdb-check: [<Raw View>] [Type: core::cell::UnsafeCell<i32>] | |
| //@ cdb-command: dx dynamic_c,d | |
| //@ cdb-check:dynamic_c,d : 15 [Type: core::cell::RefCell<i32>] | |
| //@ cdb-check: [<Raw View>] [Type: core::cell::RefCell<i32>] | |
| //@ cdb-check: [Borrow state] : Unborrowed | |
| //@ cdb-command: dx dynamic_c.value,d | |
| //@ cdb-check:dynamic_c.value,d : 15 [Type: core::cell::UnsafeCell<i32>] | |
| //@ cdb-check: [<Raw View>] [Type: core::cell::UnsafeCell<i32>] | |
| //@ cdb-command: dx b,d | |
| //@ cdb-check:b,d : 42 [Type: core::cell::RefMut<i32>] | |
| //@ cdb-check: [<Raw View>] [Type: core::cell::RefMut<i32>] | |
| //@ cdb-check: 42 [Type: int] | |
| //@ cdb-command: g | |
| //@ cdb-command: dx dynamic_c,d | |
| //@ cdb-check:dynamic_c,d : 15 [Type: core::cell::RefCell<i32>] | |
| //@ cdb-check: [<Raw View>] [Type: core::cell::RefCell<i32>] | |
| //@ cdb-check: [Borrow state] : Immutably borrowed | |
| //@ cdb-command: dx r_borrow,d | |
| //@ cdb-check:r_borrow,d : 15 [Type: core::cell::Ref<i32>] | |
| //@ cdb-check: [<Raw View>] [Type: core::cell::Ref<i32>] | |
| //@ cdb-check: 15 [Type: int] | |
| //@ cdb-command: g | |
| //@ cdb-command: dx dynamic_c,d | |
| //@ cdb-check:dynamic_c,d : 15 [Type: core::cell::RefCell<i32>] | |
| //@ cdb-check: [<Raw View>] [Type: core::cell::RefCell<i32>] | |
| //@ cdb-check: [Borrow state] : Unborrowed | |
| //@ cdb-command: g | |
| //@ cdb-command: dx dynamic_c,d | |
| //@ cdb-check:dynamic_c,d : 15 [Type: core::cell::RefCell<i32>] | |
| //@ cdb-check: [<Raw View>] [Type: core::cell::RefCell<i32>] | |
| //@ cdb-check: [Borrow state] : Mutably borrowed | |
| //@ cdb-command: dx r_borrow_mut,d | |
| //@ cdb-check:r_borrow_mut,d : 15 [Type: core::cell::RefMut<i32>] | |
| //@ cdb-check: [<Raw View>] [Type: core::cell::RefMut<i32>] | |
| //@ cdb-check: 15 [Type: int] | |
| //@ cdb-command: g | |
| //@ cdb-command: dx dynamic_c,d | |
| //@ cdb-check:dynamic_c,d : 15 [Type: core::cell::RefCell<i32>] | |
| //@ cdb-check: [<Raw View>] [Type: core::cell::RefCell<i32>] | |
| //@ cdb-check: [Borrow state] : Unborrowed | |
| #![allow(unused_variables)] | |
| use std::cell::{Cell, RefCell}; | |
| fn main() { | |
| let static_c = Cell::new(5); | |
| static_c.set(10); | |
| let dynamic_c = RefCell::new(5); | |
| dynamic_c.replace(15); | |
| let dynamic_c_0 = RefCell::new(15); | |
| let mut b = dynamic_c_0.borrow_mut(); | |
| *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() {()} |