// build-fail #![feature(rustc_attrs)] #[rustc_dump_vtable] trait A { fn foo_a(&self) {} } #[rustc_dump_vtable] trait B: A { fn foo_b(&self) {} } #[rustc_dump_vtable] trait C: A { //~^ error vtable fn foo_c(&self) {} } #[rustc_dump_vtable] trait D: B + C { //~^ error vtable fn foo_d(&self) {} } struct S; impl A for S {} impl B for S {} impl C for S {} impl D for S {} fn foo(d: &dyn D) { d.foo_d(); } fn bar(d: &dyn C) { d.foo_c(); } fn main() { foo(&S); bar(&S); }