diff --git a/src/test/ui/intrinsic_ice.rs b/src/test/ui/intrinsic_ice.rs new file mode 100644 index 0000000000000..7dbe03830ed78 --- /dev/null +++ b/src/test/ui/intrinsic_ice.rs @@ -0,0 +1,9 @@ +// Test for https://github.com/rust-lang/rust/issues/34123 +// ICE: intrinsic .. being reified + +#![feature(intrinsics)] + +fn main(){ + let transmute = std::intrinsics::transmute; + let assign: unsafe extern "rust-intrinsic" fn(*const i32) -> *mut i32 = transmute; +} diff --git a/src/test/ui/intrinsic_ice.stderr b/src/test/ui/intrinsic_ice.stderr new file mode 100644 index 0000000000000..9132ceeda5a16 --- /dev/null +++ b/src/test/ui/intrinsic_ice.stderr @@ -0,0 +1,18 @@ +error[E0308]: cannot coerce intrinsics to function pointers + --> intrinsic_ice.rs:8:77 + | +L | let assign: unsafe extern "rust-intrinsic" fn(*const i32) -> *mut i32 = transmute; + | --------------------------------------------------------- ^^^^^^^^^ cannot coerce intrinsics to function pointers + | | + | expected due to this + | + = note: expected fn pointer `unsafe extern "rust-intrinsic" fn(*const i32) -> *mut i32` + found fn item `unsafe extern "rust-intrinsic" fn(_) -> _ {transmute::<_, _>}` +help: use parentheses to call this function + | +L | let assign: unsafe extern "rust-intrinsic" fn(*const i32) -> *mut i32 = transmute(...); + | ^^^^^ + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0308`.