summaryrefslogtreecommitdiffstats
path: root/src/test/ui/transmutability/arrays
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
commit218caa410aa38c29984be31a5229b9fa717560ee (patch)
treec54bd55eeb6e4c508940a30e94c0032fbd45d677 /src/test/ui/transmutability/arrays
parentReleasing progress-linux version 1.67.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-218caa410aa38c29984be31a5229b9fa717560ee.tar.xz
rustc-218caa410aa38c29984be31a5229b9fa717560ee.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/ui/transmutability/arrays')
-rw-r--r--src/test/ui/transmutability/arrays/issue-103783-array-length.rs24
-rw-r--r--src/test/ui/transmutability/arrays/issue-103783-array-length.stderr9
-rw-r--r--src/test/ui/transmutability/arrays/should_have_correct_length.rs44
-rw-r--r--src/test/ui/transmutability/arrays/should_inherit_alignment.rs60
-rw-r--r--src/test/ui/transmutability/arrays/should_require_well_defined_layout.rs66
-rw-r--r--src/test/ui/transmutability/arrays/should_require_well_defined_layout.stderr135
6 files changed, 0 insertions, 338 deletions
diff --git a/src/test/ui/transmutability/arrays/issue-103783-array-length.rs b/src/test/ui/transmutability/arrays/issue-103783-array-length.rs
deleted file mode 100644
index cb36e539e..000000000
--- a/src/test/ui/transmutability/arrays/issue-103783-array-length.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-#![crate_type = "lib"]
-#![feature(transmutability)]
-#![allow(dead_code)]
-
-mod assert {
- use std::mem::{Assume, BikeshedIntrinsicFrom};
- pub struct Context;
-
- pub fn is_maybe_transmutable<Src, Dst>()
- where
- Dst: BikeshedIntrinsicFrom<
- Src,
- Context,
- { Assume { alignment: true, lifetimes: true, safety: true, validity: true } },
- >,
- {
- }
-}
-
-fn test() {
- type NaughtyLenArray = [u32; 3.14159]; //~ ERROR mismatched types
- type JustUnit = ();
- assert::is_maybe_transmutable::<JustUnit, NaughtyLenArray>();
-}
diff --git a/src/test/ui/transmutability/arrays/issue-103783-array-length.stderr b/src/test/ui/transmutability/arrays/issue-103783-array-length.stderr
deleted file mode 100644
index 37774c59e..000000000
--- a/src/test/ui/transmutability/arrays/issue-103783-array-length.stderr
+++ /dev/null
@@ -1,9 +0,0 @@
-error[E0308]: mismatched types
- --> $DIR/issue-103783-array-length.rs:21:34
- |
-LL | type NaughtyLenArray = [u32; 3.14159];
- | ^^^^^^^ expected `usize`, found floating-point number
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/transmutability/arrays/should_have_correct_length.rs b/src/test/ui/transmutability/arrays/should_have_correct_length.rs
deleted file mode 100644
index 353797d0c..000000000
--- a/src/test/ui/transmutability/arrays/should_have_correct_length.rs
+++ /dev/null
@@ -1,44 +0,0 @@
-// check-pass
-//! An array must have the correct length.
-
-#![crate_type = "lib"]
-#![feature(transmutability)]
-#![allow(dead_code, incomplete_features, non_camel_case_types)]
-
-mod assert {
- use std::mem::{Assume, BikeshedIntrinsicFrom};
- pub struct Context;
-
- pub fn is_maybe_transmutable<Src, Dst>()
- where
- Dst: BikeshedIntrinsicFrom<Src, Context, { Assume::SAFETY.and(Assume::VALIDITY) }>
- {}
-}
-
-fn should_have_len_0() {
- type Array = [u8; 0];
- #[repr(C)] struct Struct();
- assert::is_maybe_transmutable::<Array, Struct>();
- assert::is_maybe_transmutable::<Struct, Array>();
-}
-
-fn should_have_len_1() {
- type Array = [u8; 1];
- #[repr(C)] struct Struct(u8);
- assert::is_maybe_transmutable::<Array, Struct>();
- assert::is_maybe_transmutable::<Struct, Array>();
-}
-
-fn should_have_len_2() {
- type Array = [u8; 2];
- #[repr(C)] struct Struct(u8, u8);
- assert::is_maybe_transmutable::<Array, Struct>();
- assert::is_maybe_transmutable::<Struct, Array>();
-}
-
-fn should_have_len_3() {
- type Array = [u8; 3];
- #[repr(C)] struct Struct(u8, u8, u8);
- assert::is_maybe_transmutable::<Array, Struct>();
- assert::is_maybe_transmutable::<Struct, Array>();
-}
diff --git a/src/test/ui/transmutability/arrays/should_inherit_alignment.rs b/src/test/ui/transmutability/arrays/should_inherit_alignment.rs
deleted file mode 100644
index b00e5c7e4..000000000
--- a/src/test/ui/transmutability/arrays/should_inherit_alignment.rs
+++ /dev/null
@@ -1,60 +0,0 @@
-// check-pass
-//! An array must inherit the alignment of its inner type.
-
-#![crate_type = "lib"]
-#![feature(transmutability)]
-#![allow(dead_code, incomplete_features, non_camel_case_types)]
-
-mod assert {
- use std::mem::{Assume, BikeshedIntrinsicFrom};
- pub struct Context;
-
- pub fn is_maybe_transmutable<Src, Dst>()
- where
- Dst: BikeshedIntrinsicFrom<Src, Context, {
- Assume::ALIGNMENT
- .and(Assume::LIFETIMES)
- .and(Assume::SAFETY)
- .and(Assume::VALIDITY)
- }>
- {}
-}
-
-#[derive(Clone, Copy)] #[repr(u8)] enum Ox00 { V = 0x00 }
-#[derive(Clone, Copy)] #[repr(u8)] enum Ox01 { V = 0x01 }
-#[derive(Clone, Copy)] #[repr(u8)] enum OxFF { V = 0xFF }
-
-#[repr(C)]
-union Uninit {
- a: (),
- b: OxFF,
-}
-
-#[repr(C, align(2))] struct align_2(Ox00);
-
-fn len_0() {
- #[repr(C)] struct ImplicitlyPadded([align_2; 0], Ox01);
- #[repr(C)] struct ExplicitlyPadded(Ox01, Uninit);
-
- #[repr(C)] struct Struct();
- assert::is_maybe_transmutable::<ImplicitlyPadded, ExplicitlyPadded>();
- assert::is_maybe_transmutable::<ExplicitlyPadded, ImplicitlyPadded>();
-}
-
-fn len_1() {
- #[repr(C)] struct ImplicitlyPadded([align_2; 1], Ox01);
- #[repr(C)] struct ExplicitlyPadded(Ox00, Uninit, Ox01, Uninit);
-
- #[repr(C)] struct Struct();
- assert::is_maybe_transmutable::<ImplicitlyPadded, ExplicitlyPadded>();
- assert::is_maybe_transmutable::<ExplicitlyPadded, ImplicitlyPadded>();
-}
-
-fn len_2() {
- #[repr(C)] struct ImplicitlyPadded([align_2; 2], Ox01);
- #[repr(C)] struct ExplicitlyPadded(Ox00, Uninit, Ox00, Uninit, Ox01, Uninit);
-
- #[repr(C)] struct Struct();
- assert::is_maybe_transmutable::<ImplicitlyPadded, ExplicitlyPadded>();
- assert::is_maybe_transmutable::<ExplicitlyPadded, ImplicitlyPadded>();
-}
diff --git a/src/test/ui/transmutability/arrays/should_require_well_defined_layout.rs b/src/test/ui/transmutability/arrays/should_require_well_defined_layout.rs
deleted file mode 100644
index 853bd9cbc..000000000
--- a/src/test/ui/transmutability/arrays/should_require_well_defined_layout.rs
+++ /dev/null
@@ -1,66 +0,0 @@
-//! An array must have a well-defined layout to participate in a transmutation.
-
-#![crate_type = "lib"]
-#![feature(transmutability)]
-#![allow(dead_code, incomplete_features, non_camel_case_types)]
-
-mod assert {
- use std::mem::{Assume, BikeshedIntrinsicFrom};
- pub struct Context;
-
- pub fn is_maybe_transmutable<Src, Dst>()
- where
- Dst: BikeshedIntrinsicFrom<Src, Context, {
- Assume::ALIGNMENT
- .and(Assume::LIFETIMES)
- .and(Assume::SAFETY)
- .and(Assume::VALIDITY)
- }>
- {}
-}
-
-fn should_reject_repr_rust()
-{
- fn unit() {
- type repr_rust = [String; 0];
- assert::is_maybe_transmutable::<repr_rust, ()>(); //~ ERROR cannot be safely transmuted
- assert::is_maybe_transmutable::<u128, repr_rust>(); //~ ERROR cannot be safely transmuted
- }
-
- fn singleton() {
- type repr_rust = [String; 1];
- assert::is_maybe_transmutable::<repr_rust, ()>(); //~ ERROR cannot be safely transmuted
- assert::is_maybe_transmutable::<u128, repr_rust>(); //~ ERROR cannot be safely transmuted
- }
-
- fn duplex() {
- type repr_rust = [String; 2];
- assert::is_maybe_transmutable::<repr_rust, ()>(); //~ ERROR cannot be safely transmuted
- assert::is_maybe_transmutable::<u128, repr_rust>(); //~ ERROR cannot be safely transmuted
- }
-}
-
-fn should_accept_repr_C()
-{
- fn unit() {
- #[repr(C)] struct repr_c(u8, u16, u8);
- type array = [repr_c; 0];
- assert::is_maybe_transmutable::<array, ()>();
- assert::is_maybe_transmutable::<i128, array>();
- }
-
- fn singleton() {
- #[repr(C)] struct repr_c(u8, u16, u8);
- type array = [repr_c; 1];
- assert::is_maybe_transmutable::<array, repr_c>();
- assert::is_maybe_transmutable::<repr_c, array>();
- }
-
- fn duplex() {
- #[repr(C)] struct repr_c(u8, u16, u8);
- #[repr(C)] struct duplex(repr_c, repr_c);
- type array = [repr_c; 2];
- assert::is_maybe_transmutable::<array, duplex>();
- assert::is_maybe_transmutable::<duplex, array>();
- }
-}
diff --git a/src/test/ui/transmutability/arrays/should_require_well_defined_layout.stderr b/src/test/ui/transmutability/arrays/should_require_well_defined_layout.stderr
deleted file mode 100644
index 96a2fdc54..000000000
--- a/src/test/ui/transmutability/arrays/should_require_well_defined_layout.stderr
+++ /dev/null
@@ -1,135 +0,0 @@
-error[E0277]: `[String; 0]` cannot be safely transmuted into `()` in the defining scope of `assert::Context`.
- --> $DIR/should_require_well_defined_layout.rs:26:52
- |
-LL | assert::is_maybe_transmutable::<repr_rust, ()>();
- | ^^ `[String; 0]` cannot be safely transmuted into `()` in the defining scope of `assert::Context`.
- |
- = help: the trait `BikeshedIntrinsicFrom<[String; 0], assert::Context, Assume { alignment: true, lifetimes: true, safety: true, validity: true }>` is not implemented for `()`
-note: required by a bound in `is_maybe_transmutable`
- --> $DIR/should_require_well_defined_layout.rs:13:14
- |
-LL | pub fn is_maybe_transmutable<Src, Dst>()
- | --------------------- required by a bound in this
-LL | where
-LL | Dst: BikeshedIntrinsicFrom<Src, Context, {
- | ______________^
-LL | | Assume::ALIGNMENT
-LL | | .and(Assume::LIFETIMES)
-LL | | .and(Assume::SAFETY)
-LL | | .and(Assume::VALIDITY)
-LL | | }>
- | |__________^ required by this bound in `is_maybe_transmutable`
-
-error[E0277]: `u128` cannot be safely transmuted into `[String; 0]` in the defining scope of `assert::Context`.
- --> $DIR/should_require_well_defined_layout.rs:27:47
- |
-LL | assert::is_maybe_transmutable::<u128, repr_rust>();
- | ^^^^^^^^^ `u128` cannot be safely transmuted into `[String; 0]` in the defining scope of `assert::Context`.
- |
- = help: the trait `BikeshedIntrinsicFrom<u128, assert::Context, Assume { alignment: true, lifetimes: true, safety: true, validity: true }>` is not implemented for `[String; 0]`
-note: required by a bound in `is_maybe_transmutable`
- --> $DIR/should_require_well_defined_layout.rs:13:14
- |
-LL | pub fn is_maybe_transmutable<Src, Dst>()
- | --------------------- required by a bound in this
-LL | where
-LL | Dst: BikeshedIntrinsicFrom<Src, Context, {
- | ______________^
-LL | | Assume::ALIGNMENT
-LL | | .and(Assume::LIFETIMES)
-LL | | .and(Assume::SAFETY)
-LL | | .and(Assume::VALIDITY)
-LL | | }>
- | |__________^ required by this bound in `is_maybe_transmutable`
-
-error[E0277]: `[String; 1]` cannot be safely transmuted into `()` in the defining scope of `assert::Context`.
- --> $DIR/should_require_well_defined_layout.rs:32:52
- |
-LL | assert::is_maybe_transmutable::<repr_rust, ()>();
- | ^^ `[String; 1]` cannot be safely transmuted into `()` in the defining scope of `assert::Context`.
- |
- = help: the trait `BikeshedIntrinsicFrom<[String; 1], assert::Context, Assume { alignment: true, lifetimes: true, safety: true, validity: true }>` is not implemented for `()`
-note: required by a bound in `is_maybe_transmutable`
- --> $DIR/should_require_well_defined_layout.rs:13:14
- |
-LL | pub fn is_maybe_transmutable<Src, Dst>()
- | --------------------- required by a bound in this
-LL | where
-LL | Dst: BikeshedIntrinsicFrom<Src, Context, {
- | ______________^
-LL | | Assume::ALIGNMENT
-LL | | .and(Assume::LIFETIMES)
-LL | | .and(Assume::SAFETY)
-LL | | .and(Assume::VALIDITY)
-LL | | }>
- | |__________^ required by this bound in `is_maybe_transmutable`
-
-error[E0277]: `u128` cannot be safely transmuted into `[String; 1]` in the defining scope of `assert::Context`.
- --> $DIR/should_require_well_defined_layout.rs:33:47
- |
-LL | assert::is_maybe_transmutable::<u128, repr_rust>();
- | ^^^^^^^^^ `u128` cannot be safely transmuted into `[String; 1]` in the defining scope of `assert::Context`.
- |
- = help: the trait `BikeshedIntrinsicFrom<u128, assert::Context, Assume { alignment: true, lifetimes: true, safety: true, validity: true }>` is not implemented for `[String; 1]`
-note: required by a bound in `is_maybe_transmutable`
- --> $DIR/should_require_well_defined_layout.rs:13:14
- |
-LL | pub fn is_maybe_transmutable<Src, Dst>()
- | --------------------- required by a bound in this
-LL | where
-LL | Dst: BikeshedIntrinsicFrom<Src, Context, {
- | ______________^
-LL | | Assume::ALIGNMENT
-LL | | .and(Assume::LIFETIMES)
-LL | | .and(Assume::SAFETY)
-LL | | .and(Assume::VALIDITY)
-LL | | }>
- | |__________^ required by this bound in `is_maybe_transmutable`
-
-error[E0277]: `[String; 2]` cannot be safely transmuted into `()` in the defining scope of `assert::Context`.
- --> $DIR/should_require_well_defined_layout.rs:38:52
- |
-LL | assert::is_maybe_transmutable::<repr_rust, ()>();
- | ^^ `[String; 2]` cannot be safely transmuted into `()` in the defining scope of `assert::Context`.
- |
- = help: the trait `BikeshedIntrinsicFrom<[String; 2], assert::Context, Assume { alignment: true, lifetimes: true, safety: true, validity: true }>` is not implemented for `()`
-note: required by a bound in `is_maybe_transmutable`
- --> $DIR/should_require_well_defined_layout.rs:13:14
- |
-LL | pub fn is_maybe_transmutable<Src, Dst>()
- | --------------------- required by a bound in this
-LL | where
-LL | Dst: BikeshedIntrinsicFrom<Src, Context, {
- | ______________^
-LL | | Assume::ALIGNMENT
-LL | | .and(Assume::LIFETIMES)
-LL | | .and(Assume::SAFETY)
-LL | | .and(Assume::VALIDITY)
-LL | | }>
- | |__________^ required by this bound in `is_maybe_transmutable`
-
-error[E0277]: `u128` cannot be safely transmuted into `[String; 2]` in the defining scope of `assert::Context`.
- --> $DIR/should_require_well_defined_layout.rs:39:47
- |
-LL | assert::is_maybe_transmutable::<u128, repr_rust>();
- | ^^^^^^^^^ `u128` cannot be safely transmuted into `[String; 2]` in the defining scope of `assert::Context`.
- |
- = help: the trait `BikeshedIntrinsicFrom<u128, assert::Context, Assume { alignment: true, lifetimes: true, safety: true, validity: true }>` is not implemented for `[String; 2]`
-note: required by a bound in `is_maybe_transmutable`
- --> $DIR/should_require_well_defined_layout.rs:13:14
- |
-LL | pub fn is_maybe_transmutable<Src, Dst>()
- | --------------------- required by a bound in this
-LL | where
-LL | Dst: BikeshedIntrinsicFrom<Src, Context, {
- | ______________^
-LL | | Assume::ALIGNMENT
-LL | | .and(Assume::LIFETIMES)
-LL | | .and(Assume::SAFETY)
-LL | | .and(Assume::VALIDITY)
-LL | | }>
- | |__________^ required by this bound in `is_maybe_transmutable`
-
-error: aborting due to 6 previous errors
-
-For more information about this error, try `rustc --explain E0277`.