diff options
| author | bors <bors@rust-lang.org> | 2024-10-24 10:16:52 +0000 | 
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-10-24 10:16:52 +0000 | 
| commit | 5ae4d75effa366176dd75cd0d5662da26385cfc5 (patch) | |
| tree | 4c1befc815a8fa661455d48eb5a26e69c9ad1f5a /tests/ui/static/raw-ref-deref-without-unsafe.rs | |
| parent | 8aca4bab080b2c81065645fc070acca7a060f8a3 (diff) | |
| parent | 7c22f47e22335e44b14dcfb3dfd61a867f8f34ed (diff) | |
| download | rust-5ae4d75effa366176dd75cd0d5662da26385cfc5.tar.gz rust-5ae4d75effa366176dd75cd0d5662da26385cfc5.zip  | |
Auto merge of #132099 - matthiaskrgr:rollup-myi94r8, r=matthiaskrgr
Rollup of 5 pull requests Successful merges: - #129248 (Taking a raw ref (`&raw (const|mut)`) of a deref of pointer (`*ptr`) is always safe) - #131906 (rustdoc: adjust spacing and typography in header) - #132084 (Consider param-env candidates even if they have errors) - #132096 (Replace an FTP link in comments with an equivalent HTTPS link) - #132098 (rustc_feature::Features: explain what that 'Option<Symbol>' is about) r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'tests/ui/static/raw-ref-deref-without-unsafe.rs')
| -rw-r--r-- | tests/ui/static/raw-ref-deref-without-unsafe.rs | 7 | 
1 files changed, 3 insertions, 4 deletions
diff --git a/tests/ui/static/raw-ref-deref-without-unsafe.rs b/tests/ui/static/raw-ref-deref-without-unsafe.rs index 289e55b7638..97d08c815bf 100644 --- a/tests/ui/static/raw-ref-deref-without-unsafe.rs +++ b/tests/ui/static/raw-ref-deref-without-unsafe.rs @@ -1,15 +1,14 @@ use std::ptr; -// This code should remain unsafe because of the two unsafe operations here, -// even if in a hypothetical future we deem all &raw (const|mut) *ptr exprs safe. - static mut BYTE: u8 = 0; static mut BYTE_PTR: *mut u8 = ptr::addr_of_mut!(BYTE); + +// This code should remain unsafe because reading from a static mut is *always* unsafe. + // An unsafe static's ident is a place expression in its own right, so despite the above being safe // (it's fine to create raw refs to places!) the following derefs the ptr before creating its ref! static mut DEREF_BYTE_PTR: *mut u8 = ptr::addr_of_mut!(*BYTE_PTR); //~^ ERROR: use of mutable static -//~| ERROR: dereference of raw pointer fn main() { let _ = unsafe { DEREF_BYTE_PTR };  | 
