rust/tests/ui/traits/vtable/vtable-multi-level.rs
2025-01-30 15:30:04 +00:00

134 lines
1.8 KiB
Rust

#![feature(rustc_attrs)]
// O --> G --> C --> A
// \ \ \-> B
// | |-> F --> D
// | \-> E
// |-> N --> J --> H
// \ \-> I
// |-> M --> K
// \-> L
trait A {
fn foo_a(&self) {}
}
trait B {
fn foo_b(&self) {}
}
trait C: A + B {
fn foo_c(&self) {}
}
trait D {
fn foo_d(&self) {}
}
trait E {
fn foo_e(&self) {}
}
trait F: D + E {
fn foo_f(&self) {}
}
trait G: C + F {
fn foo_g(&self) {}
}
trait H {
fn foo_h(&self) {}
}
trait I {
fn foo_i(&self) {}
}
trait J: H + I {
fn foo_j(&self) {}
}
trait K {
fn foo_k(&self) {}
}
trait L {
fn foo_l(&self) {}
}
trait M: K + L {
fn foo_m(&self) {}
}
trait N: J + M {
fn foo_n(&self) {}
}
trait O: G + N {
fn foo_o(&self) {}
}
struct S;
#[rustc_dump_vtable]
impl A for S {}
//~^ ERROR vtable entries
#[rustc_dump_vtable]
impl B for S {}
//~^ ERROR vtable entries
#[rustc_dump_vtable]
impl C for S {}
//~^ ERROR vtable entries
#[rustc_dump_vtable]
impl D for S {}
//~^ ERROR vtable entries
#[rustc_dump_vtable]
impl E for S {}
//~^ ERROR vtable entries
#[rustc_dump_vtable]
impl F for S {}
//~^ ERROR vtable entries
#[rustc_dump_vtable]
impl G for S {}
//~^ ERROR vtable entries
#[rustc_dump_vtable]
impl H for S {}
//~^ ERROR vtable entries
#[rustc_dump_vtable]
impl I for S {}
//~^ ERROR vtable entries
#[rustc_dump_vtable]
impl J for S {}
//~^ ERROR vtable entries
#[rustc_dump_vtable]
impl K for S {}
//~^ ERROR vtable entries
#[rustc_dump_vtable]
impl L for S {}
//~^ ERROR vtable entries
#[rustc_dump_vtable]
impl M for S {}
//~^ ERROR vtable entries
#[rustc_dump_vtable]
impl N for S {}
//~^ ERROR vtable entries
#[rustc_dump_vtable]
impl O for S {}
//~^ ERROR vtable entries
fn main() {}