about summary refs log tree commit diff
path: root/tests/ui/intrinsics/always-gets-overridden.rs
blob: aaac5415c210a79684ae5715c2a6de9a9117736c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//! Check that `vtable_size` gets overridden by llvm backend even if there is a
//! fallback body.
#![feature(intrinsics)]
//@run-pass

#[rustc_intrinsic]
pub unsafe fn vtable_size(_ptr: *const ()) -> usize {
    panic!();
}

trait Trait {}
impl Trait for () {}

fn main() {
    let x: &dyn Trait = &();
    unsafe {
        let (_data, vtable): (*const (), *const ()) = core::mem::transmute(x);
        assert_eq!(vtable_size(vtable), 0);
    }
}