Typechecking the following program diverges: ```rust #![feature(never_type)] struct Foo<'a, T: 'a> { ph: std::marker::PhantomData<T>, foo: &'a Foo<'a, (T, T)>, } fn wub(f: Foo<!>) { sync(f) } fn sync<T: Sync>(x: T) {} fn main() {} ``` Cc @eddyb @nikomatsakis