From 33d92f7b52500a1426637bdd19276b7ead1d6d19 Mon Sep 17 00:00:00 2001 From: Yuki Okushi Date: Sun, 17 May 2026 14:58:25 +0900 Subject: [PATCH] Add test for the case span is unavailable --- ...tic-mut-refs-interior-mutability-no-sugg.rs | 18 ++++++++++++++++++ ...mut-refs-interior-mutability-no-sugg.stderr | 13 +++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 tests/ui/lint/static-mut-refs-interior-mutability-no-sugg.rs create mode 100644 tests/ui/lint/static-mut-refs-interior-mutability-no-sugg.stderr diff --git a/tests/ui/lint/static-mut-refs-interior-mutability-no-sugg.rs b/tests/ui/lint/static-mut-refs-interior-mutability-no-sugg.rs new file mode 100644 index 000000000000..82c6b55a7623 --- /dev/null +++ b/tests/ui/lint/static-mut-refs-interior-mutability-no-sugg.rs @@ -0,0 +1,18 @@ +//@ edition:2024 +// Ensure that we don't make structured suggestions for interior mutability note +// when span is not available. + +use std::sync::Mutex; + +macro_rules! declare_mutex { + () => { + static mut MACRO_MUTEX: Mutex = Mutex::new(false); + }; +} + +declare_mutex!(); + +fn main() { + let _lock = unsafe { MACRO_MUTEX.lock().unwrap() }; + //~^ ERROR creating a shared reference to mutable static [static_mut_refs] +} diff --git a/tests/ui/lint/static-mut-refs-interior-mutability-no-sugg.stderr b/tests/ui/lint/static-mut-refs-interior-mutability-no-sugg.stderr new file mode 100644 index 000000000000..5ce69e1a14d8 --- /dev/null +++ b/tests/ui/lint/static-mut-refs-interior-mutability-no-sugg.stderr @@ -0,0 +1,13 @@ +error: creating a shared reference to mutable static + --> $DIR/static-mut-refs-interior-mutability-no-sugg.rs:16:26 + | +LL | let _lock = unsafe { MACRO_MUTEX.lock().unwrap() }; + | ^^^^^^^^^^^^^^^^^^ shared reference to mutable static + | + = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives + = help: use a type that relies on "interior mutability" instead; to read more on this, visit + = note: for more information, see + = note: `#[deny(static_mut_refs)]` (part of `#[deny(rust_2024_compatibility)]`) on by default + +error: aborting due to 1 previous error +