mirror of https://github.com/rust-lang/rust.git
44 lines
837 B
Rust
44 lines
837 B
Rust
// Test that we don't ICE for a typeck error that only shows up in dropck
|
|
// Version that uses a generic associated type
|
|
// Regression test for #91985
|
|
|
|
pub trait Trait1 {
|
|
type Associated: Ord;
|
|
}
|
|
|
|
pub trait Trait2 {
|
|
type Associated: Clone;
|
|
}
|
|
|
|
pub trait GatTrait {
|
|
type Gat<T: Clone>;
|
|
}
|
|
|
|
pub struct GatStruct;
|
|
|
|
impl GatTrait for GatStruct {
|
|
type Gat<T: Clone> = Box<T>;
|
|
}
|
|
|
|
pub struct OuterStruct<T1: Trait1, T2: Trait2> {
|
|
inner: InnerStruct<T2, GatStruct>,
|
|
t1: T1,
|
|
}
|
|
|
|
pub struct InnerStruct<T: Trait2, G: GatTrait> {
|
|
pub gat: G::Gat<T::Associated>,
|
|
}
|
|
|
|
impl<T1, T2> OuterStruct<T1, T2>
|
|
where
|
|
T1: Trait1,
|
|
T2: Trait2<Associated = T1::Associated>,
|
|
{
|
|
pub fn new() -> Self {
|
|
//~^ ERROR the trait bound `<T1 as Trait1>::Associated: Clone` is not satisfied
|
|
todo!()
|
|
}
|
|
}
|
|
|
|
pub fn main() {}
|