]> git.lizzy.rs Git - rust.git/blob - src/test/ui/transmute/transmute-type-parameters.rs
Auto merge of #97870 - eggyal:inplace_fold_spec, r=wesleywiser
[rust.git] / src / test / ui / transmute / transmute-type-parameters.rs
1 // Tests that `transmute` cannot be called on type parameters.
2
3 use std::mem::transmute;
4
5 unsafe fn f<T>(x: T) {
6     let _: i32 = transmute(x);
7 //~^ ERROR cannot transmute between types of different sizes, or dependently-sized types
8 }
9
10 unsafe fn g<T>(x: (T, i32)) {
11     let _: i32 = transmute(x);
12 //~^ ERROR cannot transmute between types of different sizes, or dependently-sized types
13 }
14
15 unsafe fn h<T>(x: [T; 10]) {
16     let _: i32 = transmute(x);
17 //~^ ERROR cannot transmute between types of different sizes, or dependently-sized types
18 }
19
20 struct Bad<T> {
21     f: T,
22 }
23
24 unsafe fn i<T>(x: Bad<T>) {
25     let _: i32 = transmute(x);
26 //~^ ERROR cannot transmute between types of different sizes, or dependently-sized types
27 }
28
29 enum Worse<T> {
30     A(T),
31     B,
32 }
33
34 unsafe fn j<T>(x: Worse<T>) {
35     let _: i32 = transmute(x);
36 //~^ ERROR cannot transmute between types of different sizes, or dependently-sized types
37 }
38
39 unsafe fn k<T>(x: Option<T>) {
40     let _: i32 = transmute(x);
41 //~^ ERROR cannot transmute between types of different sizes, or dependently-sized types
42 }
43
44 fn main() {}