summaryrefslogtreecommitdiffstats
path: root/tests/ui/layout
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/layout')
-rw-r--r--tests/ui/layout/cannot-transmute-unnormalizable-type.rs22
-rw-r--r--tests/ui/layout/cannot-transmute-unnormalizable-type.stderr19
2 files changed, 41 insertions, 0 deletions
diff --git a/tests/ui/layout/cannot-transmute-unnormalizable-type.rs b/tests/ui/layout/cannot-transmute-unnormalizable-type.rs
new file mode 100644
index 000000000..d2b6e1d8e
--- /dev/null
+++ b/tests/ui/layout/cannot-transmute-unnormalizable-type.rs
@@ -0,0 +1,22 @@
+trait Trait {
+ type RefTarget;
+}
+
+impl Trait for ()
+where
+ Missing: Trait,
+ //~^ ERROR cannot find type `Missing` in this scope
+{
+ type RefTarget = ();
+}
+
+struct Other {
+ data: <() as Trait>::RefTarget,
+}
+
+fn main() {
+ unsafe {
+ std::mem::transmute::<Option<()>, Option<&Other>>(None);
+ //~^ ERROR cannot transmute between types of different sizes, or dependently-sized types
+ }
+}
diff --git a/tests/ui/layout/cannot-transmute-unnormalizable-type.stderr b/tests/ui/layout/cannot-transmute-unnormalizable-type.stderr
new file mode 100644
index 000000000..dd5119318
--- /dev/null
+++ b/tests/ui/layout/cannot-transmute-unnormalizable-type.stderr
@@ -0,0 +1,19 @@
+error[E0412]: cannot find type `Missing` in this scope
+ --> $DIR/cannot-transmute-unnormalizable-type.rs:7:5
+ |
+LL | Missing: Trait,
+ | ^^^^^^^ not found in this scope
+
+error[E0512]: cannot transmute between types of different sizes, or dependently-sized types
+ --> $DIR/cannot-transmute-unnormalizable-type.rs:19:9
+ |
+LL | std::mem::transmute::<Option<()>, Option<&Other>>(None);
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ |
+ = note: source type: `Option<()>` (8 bits)
+ = note: target type: `Option<&Other>` (unable to determine layout for `Other` because `<() as Trait>::RefTarget` cannot be normalized)
+
+error: aborting due to 2 previous errors
+
+Some errors have detailed explanations: E0412, E0512.
+For more information about an error, try `rustc --explain E0412`.