diff options
| author | ouz-a <ouz.agz@gmail.com> | 2023-08-25 16:57:44 +0300 |
|---|---|---|
| committer | ouz-a <ouz.agz@gmail.com> | 2023-09-11 23:08:40 +0300 |
| commit | 3ec0165f5f53e349e7eb564b2b692a8b8032b18f (patch) | |
| tree | 4828fd1ebb15582236823bc6fe9b7878ac61c699 /tests/ui/codegen | |
| parent | 5d62ab8981b15b0e12c7583890ae27c7e8ed87fc (diff) | |
| download | rust-3ec0165f5f53e349e7eb564b2b692a8b8032b18f.tar.gz rust-3ec0165f5f53e349e7eb564b2b692a8b8032b18f.zip | |
Remove assert that checks type equality
Diffstat (limited to 'tests/ui/codegen')
| -rw-r--r-- | tests/ui/codegen/subtyping-enforces-type-equality.rs | 48 | ||||
| -rw-r--r-- | tests/ui/codegen/subtyping-enforces-type-equality.stderr | 1 |
2 files changed, 49 insertions, 0 deletions
diff --git a/tests/ui/codegen/subtyping-enforces-type-equality.rs b/tests/ui/codegen/subtyping-enforces-type-equality.rs new file mode 100644 index 00000000000..a5ffcb3f854 --- /dev/null +++ b/tests/ui/codegen/subtyping-enforces-type-equality.rs @@ -0,0 +1,48 @@ +// ignore-pass +// build-pass +// edition:2021 +use std::future::Future; +use std::pin::Pin; + +type BoxFuture<T> = Pin<Box<dyn Future<Output = T>>>; + +fn main() { + let _ = wrapper_call(handler); +} + +async fn wrapper_call(handler: impl Handler) { + handler.call().await; +} +async fn handler() { + f(&()).await; +} +async fn f<'a>(db: impl Acquire<'a>) { + db.acquire().await; +} + +trait Handler { + type Future: Future; + fn call(self) -> Self::Future; +} + +impl<Fut, F> Handler for F +where + F: Fn() -> Fut, + Fut: Future, +{ + type Future = Fut; + fn call(self) -> Self::Future { + loop {} + } +} + +trait Acquire<'a> { + type Connection; + fn acquire(self) -> BoxFuture<Self::Connection>; +} +impl<'a> Acquire<'a> for &'a () { + type Connection = Self; + fn acquire(self) -> BoxFuture<Self> { + loop {} + } +} diff --git a/tests/ui/codegen/subtyping-enforces-type-equality.stderr b/tests/ui/codegen/subtyping-enforces-type-equality.stderr new file mode 100644 index 00000000000..870ca0f839f --- /dev/null +++ b/tests/ui/codegen/subtyping-enforces-type-equality.stderr @@ -0,0 +1 @@ +WARN rustc_codegen_ssa::mir::locals Unexpected initial operand type. See the issues/114858 |
