Skip to content

Commit c153fc1

Browse files
Rollup merge of rust-lang#117556 - obeis:static-mut-ref-lint, r=davidtwco
Disallow reference to `static mut` and adding `static_mut_ref` lint Closes rust-lang#114447 r? `@scottmcm`
2 parents c84928e + 27e42ff commit c153fc1

File tree

5 files changed

+12
-0
lines changed

5 files changed

+12
-0
lines changed

panic_unwind/src/seh.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,8 @@ cfg_if::cfg_if! {
261261
}
262262
}
263263

264+
// FIXME: Use `SyncUnsafeCell` instead of allowing `static_mut_ref` lint
265+
#[cfg_attr(not(bootstrap), allow(static_mut_ref))]
264266
pub unsafe fn panic(data: Box<dyn Any + Send>) -> u32 {
265267
use core::intrinsics::atomic_store_seqcst;
266268

@@ -322,6 +324,8 @@ pub unsafe fn panic(data: Box<dyn Any + Send>) -> u32 {
322324
_CxxThrowException(throw_ptr, &mut THROW_INFO as *mut _ as *mut _);
323325
}
324326

327+
// FIXME: Use `SyncUnsafeCell` instead of allowing `static_mut_ref` lint
328+
#[cfg_attr(not(bootstrap), allow(static_mut_ref))]
325329
pub unsafe fn cleanup(payload: *mut u8) -> Box<dyn Any + Send> {
326330
// A null payload here means that we got here from the catch (...) of
327331
// __rust_try. This happens when a non-Rust foreign exception is caught.

std/src/panicking.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,8 @@ pub mod panic_count {
337337
#[doc(hidden)]
338338
#[cfg(not(feature = "panic_immediate_abort"))]
339339
#[unstable(feature = "update_panic_count", issue = "none")]
340+
// FIXME: Use `SyncUnsafeCell` instead of allowing `static_mut_ref` lint
341+
#[cfg_attr(not(bootstrap), allow(static_mut_ref))]
340342
pub mod panic_count {
341343
use crate::cell::Cell;
342344
use crate::sync::atomic::{AtomicUsize, Ordering};

std/src/sys/common/thread_local/fast_local.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ pub macro thread_local_inner {
1313
(@key $t:ty, const $init:expr) => {{
1414
#[inline]
1515
#[deny(unsafe_op_in_unsafe_fn)]
16+
// FIXME: Use `SyncUnsafeCell` instead of allowing `static_mut_ref` lint
17+
#[cfg_attr(not(bootstrap), allow(static_mut_ref))]
1618
unsafe fn __getit(
1719
_init: $crate::option::Option<&mut $crate::option::Option<$t>>,
1820
) -> $crate::option::Option<&'static $t> {

std/src/sys/common/thread_local/static_local.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ pub macro thread_local_inner {
1111
(@key $t:ty, const $init:expr) => {{
1212
#[inline] // see comments below
1313
#[deny(unsafe_op_in_unsafe_fn)]
14+
// FIXME: Use `SyncUnsafeCell` instead of allowing `static_mut_ref` lint
15+
#[cfg_attr(not(bootstrap), allow(static_mut_ref))]
1416
unsafe fn __getit(
1517
_init: $crate::option::Option<&mut $crate::option::Option<$t>>,
1618
) -> $crate::option::Option<&'static $t> {

std/src/thread/local.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,8 @@ impl<T: 'static> fmt::Debug for LocalKey<T> {
180180
#[stable(feature = "rust1", since = "1.0.0")]
181181
#[cfg_attr(not(test), rustc_diagnostic_item = "thread_local_macro")]
182182
#[allow_internal_unstable(thread_local_internals)]
183+
// FIXME: Use `SyncUnsafeCell` instead of allowing `static_mut_ref` lint
184+
#[cfg_attr(not(bootstrap), allow(static_mut_ref))]
183185
macro_rules! thread_local {
184186
// empty (base case for the recursion)
185187
() => {};

0 commit comments

Comments
 (0)