rust/tests/run-pass/std.rs
2016-05-09 20:08:37 -06:00

42 lines
796 B
Rust

#![feature(custom_attribute, box_syntax)]
#![allow(dead_code, unused_attributes)]
use std::cell::{Cell, RefCell};
use std::rc::Rc;
use std::sync::Arc;
#[miri_run]
fn rc_cell() -> Rc<Cell<i32>> {
let r = Rc::new(Cell::new(42));
let x = r.get();
r.set(x + x);
r
}
// TODO(solson): also requires destructors to run for the second borrow to work
// TODO(solson): needs StructWrappedNullablePointer support
// #[miri_run]
// fn rc_refcell() -> i32 {
// let r = Rc::new(RefCell::new(42));
// *r.borrow_mut() += 10;
// let x = *r.borrow();
// x
// }
#[miri_run]
fn arc() -> Arc<i32> {
let a = Arc::new(42);
a
}
#[miri_run]
fn true_assert() {
assert_eq!(1, 1);
}
#[miri_run]
fn main() {
assert_eq!(*arc(), 42);
assert_eq!(rc_cell().get(), 84);
}