Emit error on intrinsic to fn ptr casts
This commit is contained in:
parent
9af17757be
commit
dd323f8a72
7 changed files with 57 additions and 0 deletions
15
src/test/ui/reify-intrinsic.rs
Normal file
15
src/test/ui/reify-intrinsic.rs
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
// check-fail
|
||||
|
||||
#![feature(intrinsics)]
|
||||
|
||||
fn a() {
|
||||
let _: unsafe extern "rust-intrinsic" fn(isize) -> usize = std::mem::transmute;
|
||||
//~^ ERROR cannot coerce
|
||||
}
|
||||
|
||||
fn b() {
|
||||
let _ = std::mem::transmute as unsafe extern "rust-intrinsic" fn(isize) -> usize;
|
||||
//~^ ERROR casting
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
22
src/test/ui/reify-intrinsic.stderr
Normal file
22
src/test/ui/reify-intrinsic.stderr
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
error[E0308]: cannot coerce intrinsics to function pointers
|
||||
--> $DIR/reify-intrinsic.rs:6:64
|
||||
|
|
||||
LL | let _: unsafe extern "rust-intrinsic" fn(isize) -> usize = std::mem::transmute;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
| |
|
||||
| cannot coerce intrinsics to function pointers
|
||||
| help: use parentheses to call this function: `std::mem::transmute(...)`
|
||||
|
|
||||
= note: expected type `unsafe extern "rust-intrinsic" fn(isize) -> usize`
|
||||
found type `unsafe extern "rust-intrinsic" fn(_) -> _ {std::intrinsics::transmute::<_, _>}`
|
||||
|
||||
error[E0606]: casting `unsafe extern "rust-intrinsic" fn(_) -> _ {std::intrinsics::transmute::<_, _>}` as `unsafe extern "rust-intrinsic" fn(isize) -> usize` is invalid
|
||||
--> $DIR/reify-intrinsic.rs:11:13
|
||||
|
|
||||
LL | let _ = std::mem::transmute as unsafe extern "rust-intrinsic" fn(isize) -> usize;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0308, E0606.
|
||||
For more information about an error, try `rustc --explain E0308`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue