summaryrefslogtreecommitdiffstats
path: root/tests/ui/const-generics/transmute-fail.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/const-generics/transmute-fail.rs')
-rw-r--r--tests/ui/const-generics/transmute-fail.rs35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/ui/const-generics/transmute-fail.rs b/tests/ui/const-generics/transmute-fail.rs
new file mode 100644
index 000000000..d7bf1b47f
--- /dev/null
+++ b/tests/ui/const-generics/transmute-fail.rs
@@ -0,0 +1,35 @@
+#![feature(transmute_generic_consts)]
+#![feature(generic_const_exprs)]
+#![allow(incomplete_features)]
+
+fn foo<const W: usize, const H: usize>(v: [[u32;H+1]; W]) -> [[u32; W+1]; H] {
+ unsafe {
+ std::mem::transmute(v)
+ //~^ ERROR cannot transmute
+ }
+}
+
+fn bar<const W: bool, const H: usize>(v: [[u32; H]; W]) -> [[u32; W]; H] {
+ //~^ ERROR mismatched types
+ //~| ERROR mismatched types
+ unsafe {
+ std::mem::transmute(v)
+ //~^ ERROR cannot transmute between types
+ }
+}
+
+fn baz<const W: usize, const H: usize>(v: [[u32; H]; W]) -> [u32; W * H * H] {
+ unsafe {
+ std::mem::transmute(v)
+ //~^ ERROR cannot transmute
+ }
+}
+
+fn overflow(v: [[[u32; 8888888]; 9999999]; 777777777]) -> [[[u32; 9999999]; 777777777]; 8888888] {
+ unsafe {
+ std::mem::transmute(v)
+ //~^ ERROR cannot transmute
+ }
+}
+
+fn main() {}