// check-pass // known-bug: #100051 // Should fail. Implied bounds from projections in impl headers can create // improper lifetimes. Variant of issue #98543 which was fixed by #99217. trait Trait { type Type; } impl Trait for T { type Type = (); } trait Extend<'a, 'b> { fn extend(self, s: &'a str) -> &'b str; } impl<'a, 'b> Extend<'a, 'b> for <&'b &'a () as Trait>::Type where for<'what, 'ever> &'what &'ever (): Trait, { fn extend(self, s: &'a str) -> &'b str { s } } fn main() { let y = <() as Extend<'_, '_>>::extend((), &String::from("Hello World")); println!("{}", y); }