From 327cc62b0d46eda2bd55018a7e8edfab8a143d03 Mon Sep 17 00:00:00 2001 From: Oli Scherer Date: Thu, 4 Mar 2021 16:22:00 +0000 Subject: [PATCH] Add reproduction test --- .../associated-type-lifetime-ice.rs | 28 +++++++++++++++++++ .../associated-type-lifetime-ice.stderr | 19 +++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 src/test/ui/type-alias-impl-trait/associated-type-lifetime-ice.rs create mode 100644 src/test/ui/type-alias-impl-trait/associated-type-lifetime-ice.stderr diff --git a/src/test/ui/type-alias-impl-trait/associated-type-lifetime-ice.rs b/src/test/ui/type-alias-impl-trait/associated-type-lifetime-ice.rs new file mode 100644 index 000000000000..eb85313349a3 --- /dev/null +++ b/src/test/ui/type-alias-impl-trait/associated-type-lifetime-ice.rs @@ -0,0 +1,28 @@ +// check-pass +// compile-flags: --crate-type=rlib + +// Regression test for https://github.com/rust-lang/rust/issues/78450 + +#![feature(type_alias_impl_trait)] +#![no_std] + +pub trait AssociatedImpl { + type ImplTrait; + + fn f() -> Self::ImplTrait; +} + +struct S(T); + +trait Associated { + type A; +} + +// ICE +impl<'a, T: Associated> AssociatedImpl for S { + type ImplTrait = impl core::fmt::Debug; + + fn f() -> Self::ImplTrait { + () + } +} diff --git a/src/test/ui/type-alias-impl-trait/associated-type-lifetime-ice.stderr b/src/test/ui/type-alias-impl-trait/associated-type-lifetime-ice.stderr new file mode 100644 index 000000000000..fc2dfefe64d0 --- /dev/null +++ b/src/test/ui/type-alias-impl-trait/associated-type-lifetime-ice.stderr @@ -0,0 +1,19 @@ +error[E0601]: `main` function not found in crate `associated_type_lifetime_ice` + --> $DIR/associated-type-lifetime-ice.rs:1:1 + | +LL | / #![feature(type_alias_impl_trait)] +LL | | #![no_std] +LL | | +LL | | pub trait AssociatedImpl { +... | +LL | | } +LL | | } + | |_^ consider adding a `main` function to `$DIR/associated-type-lifetime-ice.rs` + +error: language item required, but not found: `eh_personality` + +error: `#[panic_handler]` function required, but not found + +error: aborting due to 3 previous errors + +For more information about this error, try `rustc --explain E0601`.