]> git.proxmox.com Git - rustc.git/blame - src/test/compile-fail/issue-27060.rs
New upstream version 1.24.1+dfsg1
[rustc.git] / src / test / compile-fail / issue-27060.rs
CommitLineData
ff7c6d11
XL
1// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
2// file at the top-level directory of this distribution and at
3// http://rust-lang.org/COPYRIGHT.
4//
5// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8// option. This file may not be copied, modified, or distributed
9// except according to those terms.
10
11#[repr(packed)]
12pub struct Good {
13 data: &'static u32,
14 data2: [&'static u32; 2],
15 aligned: [u8; 32],
16}
17
18#[repr(packed)]
19pub struct JustArray {
20 array: [u32]
21}
22
23#[deny(safe_packed_borrows)]
24fn main() {
25 let good = Good {
26 data: &0,
27 data2: [&0, &0],
28 aligned: [0; 32]
29 };
30
31 unsafe {
32 let _ = &good.data; // ok
33 let _ = &good.data2[0]; // ok
34 }
35
36 let _ = &good.data; //~ ERROR borrow of packed field requires unsafe
37 //~| hard error
38 let _ = &good.data2[0]; //~ ERROR borrow of packed field requires unsafe
39 //~| hard error
40 let _ = &*good.data; // ok, behind a pointer
41 let _ = &good.aligned; // ok, has align 1
42 let _ = &good.aligned[2]; // ok, has align 1
43}