// run-pass
#![allow(dead_code)]
#![allow(non_upper_case_globals)]

struct CustomAutoRooterVFTable {
    trace: unsafe extern "C" fn(this: *mut i32, trc: *mut u32),
}

unsafe trait CustomAutoTraceable: Sized {
    const vftable: CustomAutoRooterVFTable = CustomAutoRooterVFTable {
        trace: Self::trace,
    };

    unsafe extern "C" fn trace(this: *mut i32, trc: *mut u32) {
        let this = this as *const Self;
        let this = this.as_ref().unwrap();
        Self::do_trace(this, trc);
    }

    fn do_trace(&self, trc: *mut u32);
}

unsafe impl CustomAutoTraceable for () {
    fn do_trace(&self, _: *mut u32) {
        // nop
    }
}

fn main() {
    let _ = <()>::vftable;
}
