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