summaryrefslogtreecommitdiffstats
path: root/tests/ui/transmutability
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/transmutability')
-rw-r--r--tests/ui/transmutability/issue-110892.rs40
-rw-r--r--tests/ui/transmutability/issue-110892.stderr36
-rw-r--r--tests/ui/transmutability/references/recursive-wrapper-types-bit-compatible.rs5
-rw-r--r--tests/ui/transmutability/references/recursive-wrapper-types-bit-compatible.stderr25
-rw-r--r--tests/ui/transmutability/references/recursive-wrapper-types.rs5
-rw-r--r--tests/ui/transmutability/references/recursive-wrapper-types.stderr25
6 files changed, 80 insertions, 56 deletions
diff --git a/tests/ui/transmutability/issue-110892.rs b/tests/ui/transmutability/issue-110892.rs
new file mode 100644
index 000000000..ce926b399
--- /dev/null
+++ b/tests/ui/transmutability/issue-110892.rs
@@ -0,0 +1,40 @@
+// check-fail
+#![feature(generic_const_exprs, transmutability)]
+#![allow(incomplete_features)]
+
+mod assert {
+ use std::mem::{Assume, BikeshedIntrinsicFrom};
+
+ pub fn is_transmutable<
+ Src,
+ Dst,
+ Context,
+ const ASSUME_ALIGNMENT: bool,
+ const ASSUME_LIFETIMES: bool,
+ const ASSUME_SAFETY: bool,
+ const ASSUME_VALIDITY: bool,
+ >()
+ where
+ Dst: BikeshedIntrinsicFrom<
+ Src,
+ Context,
+ { from_options(ASSUME_ALIGNMENT, ASSUME_LIFETIMES, ASSUME_SAFETY, ASSUME_VALIDITY) }
+ >,
+ {}
+
+ // This should not cause an ICE
+ const fn from_options(
+ , //~ ERROR expected parameter name, found `,`
+ , //~ ERROR expected parameter name, found `,`
+ , //~ ERROR expected parameter name, found `,`
+ , //~ ERROR expected parameter name, found `,`
+ ) -> Assume {} //~ ERROR mismatched types
+}
+
+fn main() {
+ struct Context;
+ #[repr(C)] struct Src;
+ #[repr(C)] struct Dst;
+
+ assert::is_transmutable::<Src, Dst, Context, false, false, { true }, false>();
+}
diff --git a/tests/ui/transmutability/issue-110892.stderr b/tests/ui/transmutability/issue-110892.stderr
new file mode 100644
index 000000000..13654307a
--- /dev/null
+++ b/tests/ui/transmutability/issue-110892.stderr
@@ -0,0 +1,36 @@
+error: expected parameter name, found `,`
+ --> $DIR/issue-110892.rs:27:9
+ |
+LL | ,
+ | ^ expected parameter name
+
+error: expected parameter name, found `,`
+ --> $DIR/issue-110892.rs:28:9
+ |
+LL | ,
+ | ^ expected parameter name
+
+error: expected parameter name, found `,`
+ --> $DIR/issue-110892.rs:29:9
+ |
+LL | ,
+ | ^ expected parameter name
+
+error: expected parameter name, found `,`
+ --> $DIR/issue-110892.rs:30:9
+ |
+LL | ,
+ | ^ expected parameter name
+
+error[E0308]: mismatched types
+ --> $DIR/issue-110892.rs:31:10
+ |
+LL | const fn from_options(
+ | ------------ implicitly returns `()` as its body has no tail or `return` expression
+...
+LL | ) -> Assume {}
+ | ^^^^^^ expected `Assume`, found `()`
+
+error: aborting due to 5 previous errors
+
+For more information about this error, try `rustc --explain E0308`.
diff --git a/tests/ui/transmutability/references/recursive-wrapper-types-bit-compatible.rs b/tests/ui/transmutability/references/recursive-wrapper-types-bit-compatible.rs
index 3ea80173a..709d8cdc7 100644
--- a/tests/ui/transmutability/references/recursive-wrapper-types-bit-compatible.rs
+++ b/tests/ui/transmutability/references/recursive-wrapper-types-bit-compatible.rs
@@ -1,5 +1,4 @@
-// check-fail
-// FIXME(bryangarza): Change to check-pass when coinduction is supported for BikeshedIntrinsicFrom
+// check-pass
#![feature(transmutability)]
mod assert {
@@ -22,5 +21,5 @@ mod assert {
fn main() {
#[repr(C)] struct A(bool, &'static A);
#[repr(C)] struct B(u8, &'static B);
- assert::is_maybe_transmutable::<&'static A, &'static B>(); //~ ERROR overflow evaluating the requirement
+ assert::is_maybe_transmutable::<&'static A, &'static B>();
}
diff --git a/tests/ui/transmutability/references/recursive-wrapper-types-bit-compatible.stderr b/tests/ui/transmutability/references/recursive-wrapper-types-bit-compatible.stderr
deleted file mode 100644
index fae332e6a..000000000
--- a/tests/ui/transmutability/references/recursive-wrapper-types-bit-compatible.stderr
+++ /dev/null
@@ -1,25 +0,0 @@
-error[E0275]: overflow evaluating the requirement `B: BikeshedIntrinsicFrom<A, assert::Context, Assume { alignment: true, lifetimes: false, safety: true, validity: false }>`
- --> $DIR/recursive-wrapper-types-bit-compatible.rs:25:5
- |
-LL | assert::is_maybe_transmutable::<&'static A, &'static B>();
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- |
-note: required by a bound in `is_maybe_transmutable`
- --> $DIR/recursive-wrapper-types-bit-compatible.rs:11:14
- |
-LL | pub fn is_maybe_transmutable<Src, Dst>()
- | --------------------- required by a bound in this function
-LL | where
-LL | Dst: BikeshedIntrinsicFrom<Src, Context, {
- | ______________^
-LL | | Assume {
-LL | | alignment: true,
-LL | | lifetimes: false,
-... |
-LL | | }
-LL | | }>
- | |__________^ required by this bound in `is_maybe_transmutable`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0275`.
diff --git a/tests/ui/transmutability/references/recursive-wrapper-types.rs b/tests/ui/transmutability/references/recursive-wrapper-types.rs
index 59d1ad84a..090c1fea6 100644
--- a/tests/ui/transmutability/references/recursive-wrapper-types.rs
+++ b/tests/ui/transmutability/references/recursive-wrapper-types.rs
@@ -1,5 +1,4 @@
-// check-fail
-// FIXME(bryangarza): Change to check-pass when coinduction is supported for BikeshedIntrinsicFrom
+// check-pass
#![feature(transmutability)]
mod assert {
@@ -22,6 +21,6 @@ mod assert {
fn main() {
#[repr(C)] struct A(&'static B);
#[repr(C)] struct B(&'static A);
- assert::is_maybe_transmutable::<&'static A, &'static B>(); //~ overflow evaluating the requirement
+ assert::is_maybe_transmutable::<&'static A, &'static B>();
assert::is_maybe_transmutable::<&'static B, &'static A>();
}
diff --git a/tests/ui/transmutability/references/recursive-wrapper-types.stderr b/tests/ui/transmutability/references/recursive-wrapper-types.stderr
deleted file mode 100644
index 35a60c226..000000000
--- a/tests/ui/transmutability/references/recursive-wrapper-types.stderr
+++ /dev/null
@@ -1,25 +0,0 @@
-error[E0275]: overflow evaluating the requirement `A: BikeshedIntrinsicFrom<B, assert::Context, Assume { alignment: true, lifetimes: false, safety: true, validity: false }>`
- --> $DIR/recursive-wrapper-types.rs:25:5
- |
-LL | assert::is_maybe_transmutable::<&'static A, &'static B>();
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- |
-note: required by a bound in `is_maybe_transmutable`
- --> $DIR/recursive-wrapper-types.rs:11:14
- |
-LL | pub fn is_maybe_transmutable<Src, Dst>()
- | --------------------- required by a bound in this function
-LL | where
-LL | Dst: BikeshedIntrinsicFrom<Src, Context, {
- | ______________^
-LL | | Assume {
-LL | | alignment: true,
-LL | | lifetimes: false,
-... |
-LL | | }
-LL | | }>
- | |__________^ required by this bound in `is_maybe_transmutable`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0275`.