11#![warn(clippy::ref_as_ptr)]
22#![allow(clippy::unnecessary_mut_passed)]
33
4+ fn f<T>(_: T) {}
5+
46fn main() {
5- let _ = std::ptr::from_ref(&1u8);
6- let _ = std::ptr::from_ref::<u32>(&2u32);
7- let _ = std::ptr::from_ref::<f64>(&3.0f64);
7+ f( std::ptr::from_ref(&1u8) );
8+ f( std::ptr::from_ref::<u32>(&2u32) );
9+ f( std::ptr::from_ref::<f64>(&3.0f64) );
810
9- let _ = std::ptr::from_ref(&4) as *const f32;
10- let _ = std::ptr::from_ref::<f32>(&5.0f32) as *const u32;
11+ f( std::ptr::from_ref(&4) as *const f32) ;
12+ f( std::ptr::from_ref::<f32>(&5.0f32) as *const u32) ;
1113
12- let _ = std::ptr::from_ref(&mut 6u8);
13- let _ = std::ptr::from_ref::<u32>(&mut 7u32);
14- let _ = std::ptr::from_ref::<f64>(&mut 8.0f64);
14+ f( std::ptr::from_ref(&mut 6u8) );
15+ f( std::ptr::from_ref::<u32>(&mut 7u32) );
16+ f( std::ptr::from_ref::<f64>(&mut 8.0f64) );
1517
16- let _ = std::ptr::from_ref(&mut 9) as *const f32;
17- let _ = std::ptr::from_ref::<f32>(&mut 10.0f32) as *const u32;
18+ f( std::ptr::from_ref(&mut 9) as *const f32) ;
19+ f( std::ptr::from_ref::<f32>(&mut 10.0f32) as *const u32) ;
1820
19- let _ = std::ptr::from_mut(&mut 11u8);
20- let _ = std::ptr::from_mut::<u32>(&mut 12u32);
21- let _ = std::ptr::from_mut::<f64>(&mut 13.0f64);
21+ f( std::ptr::from_mut(&mut 11u8) );
22+ f( std::ptr::from_mut::<u32>(&mut 12u32) );
23+ f( std::ptr::from_mut::<f64>(&mut 13.0f64) );
2224
23- let _ = std::ptr::from_mut(&mut 14) as *const f32;
24- let _ = std::ptr::from_mut::<f32>(&mut 15.0f32) as *const u32;
25+ f( std::ptr::from_mut(&mut 14) as *const f32) ;
26+ f( std::ptr::from_mut::<f32>(&mut 15.0f32) as *const u32) ;
2527
26- let _ = std::ptr::from_ref(&1u8);
27- let _ = std::ptr::from_ref::<u32>(&2u32);
28- let _ = std::ptr::from_ref::<f64>(&3.0f64);
28+ f( std::ptr::from_ref(&1u8) );
29+ f( std::ptr::from_ref::<u32>(&2u32) );
30+ f( std::ptr::from_ref::<f64>(&3.0f64) );
2931
30- let _ = std::ptr::from_ref(&4) as *const f32;
31- let _ = std::ptr::from_ref::<f32>(&5.0f32) as *const u32;
32+ f( std::ptr::from_ref(&4) as *const f32) ;
33+ f( std::ptr::from_ref::<f32>(&5.0f32) as *const u32) ;
3234
3335 let val = 1;
34- let _ = std::ptr::from_ref(&val);
35- let _ = std::ptr::from_ref::<i32>(&val);
36+ f( std::ptr::from_ref(&val) );
37+ f( std::ptr::from_ref::<i32>(&val) );
3638
37- let _ = std::ptr::from_ref(&val) as *const f32;
38- let _ = std::ptr::from_ref::<i32>(&val) as *const f64;
39+ f( std::ptr::from_ref(&val) as *const f32) ;
40+ f( std::ptr::from_ref::<i32>(&val) as *const f64) ;
3941
4042 let mut val: u8 = 2;
41- let _ = std::ptr::from_mut::<u8>(&mut val);
42- let _ = std::ptr::from_mut(&mut val);
43+ f(std::ptr::from_mut::<u8>(&mut val));
44+ f(std::ptr::from_mut(&mut val));
45+
46+ f(std::ptr::from_ref::<u8>(&mut val));
47+ f(std::ptr::from_ref(&mut val));
4348
44- let _ = std::ptr::from_ref::<u8>(&mut val);
45- let _ = std::ptr::from_ref(&mut val);
49+ f( std::ptr::from_ref::<u8>(&mut val) as *const f64 );
50+ f::<*const Option<u8>>( std::ptr::from_ref(&mut val) as *const _ );
4651
47- let _ = std::ptr::from_ref::<u8>(&mut val) as *const f64;
48- let _: *const Option<u8> = std::ptr::from_ref(&mut val) as *const _;
52+ f(std::ptr::from_ref::<[usize; 7]>(&std::array::from_fn(|i| i * i)));
53+ f(std::ptr::from_ref::<[usize; 8]>(&mut std::array::from_fn(|i| i * i)));
54+ f(std::ptr::from_mut::<[usize; 9]>(&mut std::array::from_fn(|i| i * i)));
4955
50- let _ = std::ptr::from_ref::<[usize; 7]>(&std::array::from_fn(|i| i * i)) ;
51- let _ = std::ptr::from_ref::<[usize; 8]>( &mut std::array::from_fn(|i| i * i)) ;
52- let _ = std::ptr::from_mut::<[usize; 9]>(&mut std::array::from_fn(|i| i * i)) ;
56+ let _ = &String::new() as *const _ ;
57+ let _ = &mut String::new() as *mut _ ;
58+ const FOO: *const String = &String::new() as *const _ ;
5359}
5460
5561#[clippy::msrv = "1.75"]
@@ -58,27 +64,27 @@ fn _msrv_1_75() {
5864 let mut_val = &mut 42_i32;
5965
6066 // `std::ptr::from_{ref, mut}` was stabilized in 1.76. Do not lint this
61- let _ = val as *const i32;
62- let _ = mut_val as *mut i32;
67+ f( val as *const i32) ;
68+ f( mut_val as *mut i32) ;
6369}
6470
6571#[clippy::msrv = "1.76"]
6672fn _msrv_1_76() {
6773 let val = &42_i32;
6874 let mut_val = &mut 42_i32;
6975
70- let _ = std::ptr::from_ref::<i32>(val);
71- let _ = std::ptr::from_mut::<i32>(mut_val);
76+ f( std::ptr::from_ref::<i32>(val) );
77+ f( std::ptr::from_mut::<i32>(mut_val) );
7278}
7379
7480fn foo(val: &[u8]) {
75- let _ = std::ptr::from_ref(val);
76- let _ = std::ptr::from_ref::<[u8]>(val);
81+ f( std::ptr::from_ref(val) );
82+ f( std::ptr::from_ref::<[u8]>(val) );
7783}
7884
7985fn bar(val: &mut str) {
80- let _ = std::ptr::from_mut(val);
81- let _ = std::ptr::from_mut::<str>(val);
86+ f( std::ptr::from_mut(val) );
87+ f( std::ptr::from_mut::<str>(val) );
8288}
8389
8490struct X<'a>(&'a i32);
0 commit comments