//@ ignore-windows-gnu: #128981
//@ compile-flags:-g

//@ min-cdb-version: 10.0.18317.1001
//@ ignore-backends: gcc

// === GDB TESTS ==================================================================================

//@ gdb-command:run

//@ gdb-command:print rc
//@ gdb-check:[...]$1 = Rc(strong=11, weak=1) = {value = 111, strong = 11, weak = 1}
//@ gdb-command:print arc
//@ gdb-check:[...]$2 = Arc(strong=21, weak=1) = {value = 222, strong = 21, weak = 1}

// === LLDB TESTS ==================================================================================

//@ lldb-command:run

//@ lldb-command:v rc
//@ lldb-check:[...] strong=11, weak=1 { value = 111 }
//@ lldb-command:v arc
//@ lldb-check:[...] strong=21, weak=1 { data = 222 }

// === CDB TESTS ==================================================================================

//@ cdb-command:g

//@ cdb-command:dx rc,d
//@ cdb-check:rc,d             : 111 [Type: alloc::rc::Rc<i32,alloc::alloc::Global>]
//@ cdb-check:    [Reference count] : 11 [Type: core::cell::Cell<usize>]
//@ cdb-check:    [Weak reference count] : 2 [Type: core::cell::Cell<usize>]

//@ cdb-command:dx weak_rc,d
//@ cdb-check:weak_rc,d        : 111 [Type: alloc::rc::Weak<i32,alloc::alloc::Global>]
//@ cdb-check:    [Reference count] : 11 [Type: core::cell::Cell<usize>]
//@ cdb-check:    [Weak reference count] : 2 [Type: core::cell::Cell<usize>]

//@ cdb-command:dx arc,d
//@ cdb-check:arc,d            : 222 [Type: alloc::sync::Arc<i32,alloc::alloc::Global>]
//@ cdb-check:    [Reference count] : 21 [Type: core::sync::atomic::Atomic<usize>]
//@ cdb-check:    [Weak reference count] : 2 [Type: core::sync::atomic::Atomic<usize>]

//@ cdb-command:dx weak_arc,d
//@ cdb-check:weak_arc,d       : 222 [Type: alloc::sync::Weak<i32,alloc::alloc::Global>]
//@ cdb-check:    [Reference count] : 21 [Type: core::sync::atomic::Atomic<usize>]
//@ cdb-check:    [Weak reference count] : 2 [Type: core::sync::atomic::Atomic<usize>]

//@ cdb-command:dx dyn_rc,d
//@ cdb-check:dyn_rc,d         [Type: alloc::rc::Rc<dyn$<core::fmt::Debug>,alloc::alloc::Global>]
//@ cdb-check:    [Reference count] : 31 [Type: core::cell::Cell<usize>]
//@ cdb-check:    [Weak reference count] : 2 [Type: core::cell::Cell<usize>]

//@ cdb-command:dx dyn_rc_weak,d
//@ cdb-check:dyn_rc_weak,d    [Type: alloc::rc::Weak<dyn$<core::fmt::Debug>,alloc::alloc::Global>]
//@ cdb-check:    [Reference count] : 31 [Type: core::cell::Cell<usize>]
//@ cdb-check:    [Weak reference count] : 2 [Type: core::cell::Cell<usize>]

//@ cdb-command:dx slice_rc,d
//@ cdb-check:slice_rc,d       : { len=3 } [Type: alloc::rc::Rc<slice2$<u32>,alloc::alloc::Global>]
//@ cdb-check:    [Length]         : 3 [Type: [...]]
//@ cdb-check:    [Reference count] : 41 [Type: core::cell::Cell<usize>]
//@ cdb-check:    [Weak reference count] : 2 [Type: core::cell::Cell<usize>]
//@ cdb-check:    [0]              : 1 [Type: u32]
//@ cdb-check:    [1]              : 2 [Type: u32]
//@ cdb-check:    [2]              : 3 [Type: u32]

//@ cdb-command:dx slice_rc_weak,d
//@ cdb-check:slice_rc_weak,d  : { len=3 } [Type: alloc::rc::Weak<slice2$<u32>,alloc::alloc::Global>]
//@ cdb-check:    [Length]         : 3 [Type: [...]]
//@ cdb-check:    [Reference count] : 41 [Type: core::cell::Cell<usize>]
//@ cdb-check:    [Weak reference count] : 2 [Type: core::cell::Cell<usize>]
//@ cdb-check:    [0]              : 1 [Type: u32]
//@ cdb-check:    [1]              : 2 [Type: u32]
//@ cdb-check:    [2]              : 3 [Type: u32]

//@ cdb-command:dx dyn_arc,d
//@ cdb-check:dyn_arc,d        [Type: alloc::sync::Arc<dyn$<core::fmt::Debug>,alloc::alloc::Global>]
//@ cdb-check:    [Reference count] : 51 [Type: core::sync::atomic::Atomic<usize>]
//@ cdb-check:    [Weak reference count] : 2 [Type: core::sync::atomic::Atomic<usize>]

//@ cdb-command:dx dyn_arc_weak,d
//@ cdb-check:dyn_arc_weak,d   [Type: alloc::sync::Weak<dyn$<core::fmt::Debug>,alloc::alloc::Global>]
//@ cdb-check:    [Reference count] : 51 [Type: core::sync::atomic::Atomic<usize>]
//@ cdb-check:    [Weak reference count] : 2 [Type: core::sync::atomic::Atomic<usize>]

//@ cdb-command:dx slice_arc,d
//@ cdb-check:slice_arc,d      : { len=3 } [Type: alloc::sync::Arc<slice2$<u32>,alloc::alloc::Global>]
//@ cdb-check:    [Length]         : 3 [Type: [...]]
//@ cdb-check:    [Reference count] : 61 [Type: core::sync::atomic::Atomic<usize>]
//@ cdb-check:    [Weak reference count] : 2 [Type: core::sync::atomic::Atomic<usize>]
//@ cdb-check:    [0]              : 4 [Type: u32]
//@ cdb-check:    [1]              : 5 [Type: u32]
//@ cdb-check:    [2]              : 6 [Type: u32]

//@ cdb-command:dx slice_arc_weak,d
//@ cdb-check:slice_arc_weak,d : { len=3 } [Type: alloc::sync::Weak<slice2$<u32>,alloc::alloc::Global>]
//@ cdb-check:    [Length]         : 3 [Type: [...]]
//@ cdb-check:    [Reference count] : 61 [Type: core::sync::atomic::Atomic<usize>]
//@ cdb-check:    [Weak reference count] : 2 [Type: core::sync::atomic::Atomic<usize>]
//@ cdb-check:    [0]              : 4 [Type: u32]
//@ cdb-check:    [1]              : 5 [Type: u32]
//@ cdb-check:    [2]              : 6 [Type: u32]

use std::fmt::Debug;
use std::rc::Rc;
use std::sync::Arc;

fn main() {
    let rc = Rc::new(111);
    inc_ref_count(&rc, 10);
    let weak_rc = Rc::downgrade(&rc);

    let arc = Arc::new(222);
    inc_ref_count(&arc, 20);
    let weak_arc = Arc::downgrade(&arc);

    let dyn_rc: Rc<dyn Debug> = Rc::new(333);
    inc_ref_count(&dyn_rc, 30);
    let dyn_rc_weak = Rc::downgrade(&dyn_rc);

    let slice_rc: Rc<[u32]> = Rc::from(vec![1, 2, 3]);
    inc_ref_count(&slice_rc, 40);
    let slice_rc_weak = Rc::downgrade(&slice_rc);

    let dyn_arc: Arc<dyn Debug> = Arc::new(444);
    inc_ref_count(&dyn_arc, 50);
    let dyn_arc_weak = Arc::downgrade(&dyn_arc);

    let slice_arc: Arc<[u32]> = Arc::from(vec![4, 5, 6]);
    inc_ref_count(&slice_arc, 60);
    let slice_arc_weak = Arc::downgrade(&slice_arc);

    zzz(); // #break
}

fn inc_ref_count<T: Clone>(rc: &T, count: usize) {
    for _ in 0..count {
        std::mem::forget(rc.clone());
    }
}

fn zzz() {
    ()
}
