// run-pass
pub trait Data { fn doit(&self) {} }
impl<T> Data for T {}
pub trait UnaryLogic { type D: Data; }
impl UnaryLogic for () { type D = i32; }

pub fn crashes<T: UnaryLogic>(t: T::D) {
    t.doit();
}

fn main() { crashes::<()>(0); }