Wrong where Self: 'a GAT bound suggested (original) (raw)

Relates to #89970 and potentially to #90808.

#![feature(generic_associated_types)]

trait MyTrait { type AT<'a> where Self: 'a;

fn selfreffing<'a>(&'a self) -> Self::AT<'a> { unimplemented!(); }

}

struct Inner; impl MyTrait for Inner { type AT<'b> where Self: 'b = (); }

struct Outer<'a, T>(&'a T); impl<'a, T: MyTrait> MyTrait for Outer<'a, T> { type AT<'b> = T::AT<'b>; // type AT<'b> where T: 'b = T::AT<'b>; // suggested // type AT<'b> where Self: 'b = T::AT<'b>; // compiles }

Playground