summaryrefslogtreecommitdiffstats
path: root/tests/ui/transmute
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/transmute')
-rw-r--r--tests/ui/transmute/issue-115402-overflow-size.rs27
-rw-r--r--tests/ui/transmute/issue-115402-overflow-size.stderr33
2 files changed, 60 insertions, 0 deletions
diff --git a/tests/ui/transmute/issue-115402-overflow-size.rs b/tests/ui/transmute/issue-115402-overflow-size.rs
new file mode 100644
index 000000000..91168041e
--- /dev/null
+++ b/tests/ui/transmute/issue-115402-overflow-size.rs
@@ -0,0 +1,27 @@
+#![crate_type = "lib"]
+#![feature(transmutability)]
+mod assert {
+ use std::mem::BikeshedIntrinsicFrom;
+ struct Context;
+
+ pub fn is_maybe_transmutable<Src, Dst>()
+ where
+ Dst: BikeshedIntrinsicFrom<Src, Context>,
+ {
+ }
+}
+
+fn main() {
+ pub union Uninit {
+ a: [u8; usize::MAX],
+ }
+
+ #[repr(C)]
+ struct ExplicitlyPadded(Uninit);
+
+ assert::is_maybe_transmutable::<(), ExplicitlyPadded>();
+ //~^ ERROR `()` cannot be safely transmuted into `ExplicitlyPadded`
+
+ assert::is_maybe_transmutable::<ExplicitlyPadded, ()>();
+ //~^ ERROR `ExplicitlyPadded` cannot be safely transmuted into `()`
+}
diff --git a/tests/ui/transmute/issue-115402-overflow-size.stderr b/tests/ui/transmute/issue-115402-overflow-size.stderr
new file mode 100644
index 000000000..08d180f64
--- /dev/null
+++ b/tests/ui/transmute/issue-115402-overflow-size.stderr
@@ -0,0 +1,33 @@
+error[E0277]: `()` cannot be safely transmuted into `ExplicitlyPadded` in the defining scope of `assert::Context`
+ --> $DIR/issue-115402-overflow-size.rs:22:41
+ |
+LL | assert::is_maybe_transmutable::<(), ExplicitlyPadded>();
+ | ^^^^^^^^^^^^^^^^ values of the type `ExplicitlyPadded` are too big for the current architecture
+ |
+note: required by a bound in `is_maybe_transmutable`
+ --> $DIR/issue-115402-overflow-size.rs:9:14
+ |
+LL | pub fn is_maybe_transmutable<Src, Dst>()
+ | --------------------- required by a bound in this function
+LL | where
+LL | Dst: BikeshedIntrinsicFrom<Src, Context>,
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `is_maybe_transmutable`
+
+error[E0277]: `ExplicitlyPadded` cannot be safely transmuted into `()` in the defining scope of `assert::Context`
+ --> $DIR/issue-115402-overflow-size.rs:25:55
+ |
+LL | assert::is_maybe_transmutable::<ExplicitlyPadded, ()>();
+ | ^^ values of the type `ExplicitlyPadded` are too big for the current architecture
+ |
+note: required by a bound in `is_maybe_transmutable`
+ --> $DIR/issue-115402-overflow-size.rs:9:14
+ |
+LL | pub fn is_maybe_transmutable<Src, Dst>()
+ | --------------------- required by a bound in this function
+LL | where
+LL | Dst: BikeshedIntrinsicFrom<Src, Context>,
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `is_maybe_transmutable`
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0277`.