Skip to content

Commit dfa5d7e

Browse files
committed
Fix the MSRV and add the tests for MSRV
1 parent 4b478a5 commit dfa5d7e

File tree

4 files changed

+60
-6
lines changed

4 files changed

+60
-6
lines changed

clippy_lints/src/types.rs

+2
Original file line numberDiff line numberDiff line change
@@ -2968,4 +2968,6 @@ impl<'tcx> LateLintPass<'tcx> for PtrAsPtr {
29682968
}
29692969
}
29702970
}
2971+
2972+
extract_msrv_attr!(LateContext);
29712973
}

tests/ui/ptr_as_ptr.fixed

+20
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// run-rustfix
22

33
#![warn(clippy::ptr_as_ptr)]
4+
#![feature(custom_inner_attributes)]
45

56
fn main() {
67
let ptr: *const u32 = &42_u32;
@@ -28,3 +29,22 @@ fn main() {
2829
let _: *const i32 = ptr.cast();
2930
let _: *mut i32 = mut_ptr.cast();
3031
}
32+
33+
fn _msrv_1_37() {
34+
#![clippy::msrv = "1.37"]
35+
let ptr: *const u32 = &42_u32;
36+
let mut_ptr: *mut u32 = &mut 42_u32;
37+
38+
// `pointer::cast` was stabilized in 1.38. Do not lint this
39+
let _ = ptr as *const i32;
40+
let _ = mut_ptr as *mut i32;
41+
}
42+
43+
fn _msrv_1_38() {
44+
#![clippy::msrv = "1.38"]
45+
let ptr: *const u32 = &42_u32;
46+
let mut_ptr: *mut u32 = &mut 42_u32;
47+
48+
let _ = ptr.cast::<i32>();
49+
let _ = mut_ptr.cast::<i32>();
50+
}

tests/ui/ptr_as_ptr.rs

+20
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// run-rustfix
22

33
#![warn(clippy::ptr_as_ptr)]
4+
#![feature(custom_inner_attributes)]
45

56
fn main() {
67
let ptr: *const u32 = &42_u32;
@@ -28,3 +29,22 @@ fn main() {
2829
let _: *const i32 = ptr as *const _;
2930
let _: *mut i32 = mut_ptr as _;
3031
}
32+
33+
fn _msrv_1_37() {
34+
#![clippy::msrv = "1.37"]
35+
let ptr: *const u32 = &42_u32;
36+
let mut_ptr: *mut u32 = &mut 42_u32;
37+
38+
// `pointer::cast` was stabilized in 1.38. Do not lint this
39+
let _ = ptr as *const i32;
40+
let _ = mut_ptr as *mut i32;
41+
}
42+
43+
fn _msrv_1_38() {
44+
#![clippy::msrv = "1.38"]
45+
let ptr: *const u32 = &42_u32;
46+
let mut_ptr: *mut u32 = &mut 42_u32;
47+
48+
let _ = ptr as *const i32;
49+
let _ = mut_ptr as *mut i32;
50+
}

tests/ui/ptr_as_ptr.stderr

+18-6
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,46 @@
11
error: `as` casting between raw pointers without changing its mutability
2-
--> $DIR/ptr_as_ptr.rs:9:13
2+
--> $DIR/ptr_as_ptr.rs:10:13
33
|
44
LL | let _ = ptr as *const i32;
55
| ^^^^^^^^^^^^^^^^^ help: try `pointer::cast`, a safer alternative: `ptr.cast::<i32>()`
66
|
77
= note: `-D clippy::ptr-as-ptr` implied by `-D warnings`
88

99
error: `as` casting between raw pointers without changing its mutability
10-
--> $DIR/ptr_as_ptr.rs:10:13
10+
--> $DIR/ptr_as_ptr.rs:11:13
1111
|
1212
LL | let _ = mut_ptr as *mut i32;
1313
| ^^^^^^^^^^^^^^^^^^^ help: try `pointer::cast`, a safer alternative: `mut_ptr.cast::<i32>()`
1414

1515
error: `as` casting between raw pointers without changing its mutability
16-
--> $DIR/ptr_as_ptr.rs:15:17
16+
--> $DIR/ptr_as_ptr.rs:16:17
1717
|
1818
LL | let _ = *ptr_ptr as *const i32;
1919
| ^^^^^^^^^^^^^^^^^^^^^^ help: try `pointer::cast`, a safer alternative: `(*ptr_ptr).cast::<i32>()`
2020

2121
error: `as` casting between raw pointers without changing its mutability
22-
--> $DIR/ptr_as_ptr.rs:28:25
22+
--> $DIR/ptr_as_ptr.rs:29:25
2323
|
2424
LL | let _: *const i32 = ptr as *const _;
2525
| ^^^^^^^^^^^^^^^ help: try `pointer::cast`, a safer alternative: `ptr.cast()`
2626

2727
error: `as` casting between raw pointers without changing its mutability
28-
--> $DIR/ptr_as_ptr.rs:29:23
28+
--> $DIR/ptr_as_ptr.rs:30:23
2929
|
3030
LL | let _: *mut i32 = mut_ptr as _;
3131
| ^^^^^^^^^^^^ help: try `pointer::cast`, a safer alternative: `mut_ptr.cast()`
3232

33-
error: aborting due to 5 previous errors
33+
error: `as` casting between raw pointers without changing its mutability
34+
--> $DIR/ptr_as_ptr.rs:48:13
35+
|
36+
LL | let _ = ptr as *const i32;
37+
| ^^^^^^^^^^^^^^^^^ help: try `pointer::cast`, a safer alternative: `ptr.cast::<i32>()`
38+
39+
error: `as` casting between raw pointers without changing its mutability
40+
--> $DIR/ptr_as_ptr.rs:49:13
41+
|
42+
LL | let _ = mut_ptr as *mut i32;
43+
| ^^^^^^^^^^^^^^^^^^^ help: try `pointer::cast`, a safer alternative: `mut_ptr.cast::<i32>()`
44+
45+
error: aborting due to 7 previous errors
3446

0 commit comments

Comments
 (0)