]> git.lizzy.rs Git - rust.git/blob - tests/ui/invalid_ref.rs
4f04c5467d3fbb18ec3df8f2a5a77e041f27e8f3
[rust.git] / tests / ui / invalid_ref.rs
1 #![allow(unused)]
2 #![feature(core_intrinsics)]
3
4 extern crate core;
5 use std::intrinsics::{init, uninit};
6
7 fn main() {
8     let x = 1;
9     unsafe {
10         ref_to_zeroed_std(&x);
11         ref_to_zeroed_core(&x);
12         ref_to_zeroed_intr(&x);
13         ref_to_uninit_std(&x);
14         ref_to_uninit_core(&x);
15         ref_to_uninit_intr(&x);
16         some_ref();
17         std_zeroed_no_ref();
18         core_zeroed_no_ref();
19         intr_init_no_ref();
20     }
21 }
22
23 unsafe fn ref_to_zeroed_std<T: ?Sized>(t: &T) {
24     let ref_zero: &T = std::mem::zeroed(); // warning
25 }
26
27 unsafe fn ref_to_zeroed_core<T: ?Sized>(t: &T) {
28     let ref_zero: &T = core::mem::zeroed(); // warning
29 }
30
31 unsafe fn ref_to_zeroed_intr<T: ?Sized>(t: &T) {
32     let ref_zero: &T = std::intrinsics::init(); // warning
33 }
34
35 unsafe fn ref_to_uninit_std<T: ?Sized>(t: &T) {
36     let ref_uninit: &T = std::mem::uninitialized(); // warning
37 }
38
39 unsafe fn ref_to_uninit_core<T: ?Sized>(t: &T) {
40     let ref_uninit: &T = core::mem::uninitialized(); // warning
41 }
42
43 unsafe fn ref_to_uninit_intr<T: ?Sized>(t: &T) {
44     let ref_uninit: &T = std::intrinsics::uninit(); // warning
45 }
46
47 fn some_ref() {
48     let some_ref = &1;
49 }
50
51 unsafe fn std_zeroed_no_ref() {
52     let mem_zero: usize = std::mem::zeroed(); // no warning
53 }
54
55 unsafe fn core_zeroed_no_ref() {
56     let mem_zero: usize = core::mem::zeroed(); // no warning
57 }
58
59 unsafe fn intr_init_no_ref() {
60     let mem_zero: usize = std::intrinsics::init(); // no warning
61 }