]> git.lizzy.rs Git - rust.git/blob - tests/run-pass/pointers.rs
use compiletest_rs
[rust.git] / tests / run-pass / pointers.rs
1 #![feature(custom_attribute)]
2 #![allow(dead_code, unused_attributes)]
3
4 #[miri_run]
5 fn one_line_ref() -> i16 {
6     *&1
7 }
8
9 #[miri_run]
10 fn basic_ref() -> i16 {
11     let x = &1;
12     *x
13 }
14
15 #[miri_run]
16 fn basic_ref_mut() -> i16 {
17     let x = &mut 1;
18     *x += 2;
19     *x
20 }
21
22 #[miri_run]
23 fn basic_ref_mut_var() -> i16 {
24     let mut a = 1;
25     {
26         let x = &mut a;
27         *x += 2;
28     }
29     a
30 }
31
32 #[miri_run]
33 fn tuple_ref_mut() -> (i8, i8) {
34     let mut t = (10, 20);
35     {
36         let x = &mut t.1;
37         *x += 2;
38     }
39     t
40 }
41
42 #[miri_run]
43 fn match_ref_mut() -> i8 {
44     let mut t = (20, 22);
45     {
46         let mut opt = Some(&mut t);
47         match opt {
48             Some(&mut (ref mut x, ref mut y)) => *x += *y,
49             None => {},
50         }
51     }
52     t.0
53 }
54
55 #[miri_run]
56 fn dangling_pointer() -> *const i32 {
57     let b = Box::new(42);
58     &*b as *const i32
59 }
60
61 fn main() {}