trait A<T> {
    type Output;
    fn test(self, a: &T) -> &Self::Output;
}
struct Foo<T> {
    // { dg-warning "struct is never constructed" "" { target *-*-* } .-1 }
    start: T,
    end: T,
}
impl<X> A<X> for Foo<usize> {
    type Output = X;
    fn test(self, a: &X) -> &Self::Output {
        a
    }
}