about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume1.gomez@gmail.com>2023-10-06 12:01:23 +0200
committerGuillaume Gomez <guillaume1.gomez@gmail.com>2023-10-17 15:36:38 +0200
commit80a092c6dfa046780c930cf709680d5fb7121df0 (patch)
tree8a897693623b2a3ed9ea91171c5205d3734f5a7c
parentbc97f7d0c91649a7cdedbabde0edc9e33854f6a9 (diff)
downloadrust-80a092c6dfa046780c930cf709680d5fb7121df0.tar.gz
rust-80a092c6dfa046780c930cf709680d5fb7121df0.zip
Add test for `needless_pass_by_ref_mut` to ensure that the lint is not emitted if variable is used in an unsafe block or function
-rw-r--r--tests/ui/needless_pass_by_ref_mut.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/ui/needless_pass_by_ref_mut.rs b/tests/ui/needless_pass_by_ref_mut.rs
index 93f94b384af..7f642e53dfb 100644
--- a/tests/ui/needless_pass_by_ref_mut.rs
+++ b/tests/ui/needless_pass_by_ref_mut.rs
@@ -276,6 +276,18 @@ async fn _f(v: &mut Vec<()>) {
     _ = || || x;
 }
 
+struct Data<T: ?Sized> {
+    value: T,
+}
+// Unsafe functions should not warn.
+unsafe fn get_mut_unchecked<T>(ptr: &mut NonNull<Data<T>>) -> &mut T {
+    &mut (*ptr.as_ptr()).value
+}
+// Unsafe blocks should not warn.
+fn get_mut_unchecked2<T>(ptr: &mut NonNull<Data<T>>) -> &mut T {
+    unsafe { &mut (*ptr.as_ptr()).value }
+}
+
 fn main() {
     let mut u = 0;
     let mut v = vec![0];