we seem to monomorphize fewer vtables by default now, so adjust some tests

This commit is contained in:
Ralf Jung 2022-07-17 16:17:25 -04:00
parent fe00573324
commit b5a32d01f4
4 changed files with 68 additions and 15 deletions

View file

@ -34,6 +34,11 @@ fn foo(d: &dyn D) {
d.foo_d();
}
fn bar(d: &dyn C) {
d.foo_c();
}
fn main() {
foo(&S);
bar(&S);
}

View file

@ -12,6 +12,7 @@
#[rustc_dump_vtable]
trait A {
//~^ error vtable
fn foo_a(&self) {}
}
@ -23,6 +24,7 @@ trait B {
#[rustc_dump_vtable]
trait C: A + B {
//~^ error vtable
fn foo_c(&self) {}
}
@ -115,8 +117,27 @@ impl M for S {}
impl N for S {}
impl O for S {}
fn foo(_: &dyn O) {}
macro_rules! monomorphize_vtable {
($trait:ident) => {{
fn foo(_ : &dyn $trait) {}
foo(&S);
}}
}
fn main() {
foo(&S);
monomorphize_vtable!(O);
monomorphize_vtable!(A);
monomorphize_vtable!(B);
monomorphize_vtable!(C);
monomorphize_vtable!(D);
monomorphize_vtable!(E);
monomorphize_vtable!(F);
monomorphize_vtable!(H);
monomorphize_vtable!(I);
monomorphize_vtable!(J);
monomorphize_vtable!(K);
monomorphize_vtable!(L);
monomorphize_vtable!(M);
monomorphize_vtable!(N);
}

View file

@ -29,29 +29,54 @@ error: vtable entries for `<S as O>`: [
TraitVPtr(<S as N>),
Method(<S as O>::foo_o),
]
--> $DIR/vtable-multi-level.rs:95:1
--> $DIR/vtable-multi-level.rs:97:1
|
LL | trait O: G + N {
| ^^^^^^^^^^^^^^
error: vtable entries for `<S as A>`: [
MetadataDropInPlace,
MetadataSize,
MetadataAlign,
Method(<S as A>::foo_a),
]
--> $DIR/vtable-multi-level.rs:14:1
|
LL | trait A {
| ^^^^^^^
error: vtable entries for `<S as B>`: [
MetadataDropInPlace,
MetadataSize,
MetadataAlign,
Method(<S as B>::foo_b),
]
--> $DIR/vtable-multi-level.rs:19:1
--> $DIR/vtable-multi-level.rs:20:1
|
LL | trait B {
| ^^^^^^^
error: vtable entries for `<S as C>`: [
MetadataDropInPlace,
MetadataSize,
MetadataAlign,
Method(<S as A>::foo_a),
Method(<S as B>::foo_b),
TraitVPtr(<S as B>),
Method(<S as C>::foo_c),
]
--> $DIR/vtable-multi-level.rs:26:1
|
LL | trait C: A + B {
| ^^^^^^^^^^^^^^
error: vtable entries for `<S as D>`: [
MetadataDropInPlace,
MetadataSize,
MetadataAlign,
Method(<S as D>::foo_d),
]
--> $DIR/vtable-multi-level.rs:30:1
--> $DIR/vtable-multi-level.rs:32:1
|
LL | trait D {
| ^^^^^^^
@ -62,7 +87,7 @@ error: vtable entries for `<S as E>`: [
MetadataAlign,
Method(<S as E>::foo_e),
]
--> $DIR/vtable-multi-level.rs:36:1
--> $DIR/vtable-multi-level.rs:38:1
|
LL | trait E {
| ^^^^^^^
@ -76,7 +101,7 @@ error: vtable entries for `<S as F>`: [
TraitVPtr(<S as E>),
Method(<S as F>::foo_f),
]
--> $DIR/vtable-multi-level.rs:42:1
--> $DIR/vtable-multi-level.rs:44:1
|
LL | trait F: D + E {
| ^^^^^^^^^^^^^^
@ -87,7 +112,7 @@ error: vtable entries for `<S as H>`: [
MetadataAlign,
Method(<S as H>::foo_h),
]
--> $DIR/vtable-multi-level.rs:53:1
--> $DIR/vtable-multi-level.rs:55:1
|
LL | trait H {
| ^^^^^^^
@ -98,7 +123,7 @@ error: vtable entries for `<S as I>`: [
MetadataAlign,
Method(<S as I>::foo_i),
]
--> $DIR/vtable-multi-level.rs:59:1
--> $DIR/vtable-multi-level.rs:61:1
|
LL | trait I {
| ^^^^^^^
@ -112,7 +137,7 @@ error: vtable entries for `<S as J>`: [
TraitVPtr(<S as I>),
Method(<S as J>::foo_j),
]
--> $DIR/vtable-multi-level.rs:65:1
--> $DIR/vtable-multi-level.rs:67:1
|
LL | trait J: H + I {
| ^^^^^^^^^^^^^^
@ -123,7 +148,7 @@ error: vtable entries for `<S as K>`: [
MetadataAlign,
Method(<S as K>::foo_k),
]
--> $DIR/vtable-multi-level.rs:71:1
--> $DIR/vtable-multi-level.rs:73:1
|
LL | trait K {
| ^^^^^^^
@ -134,7 +159,7 @@ error: vtable entries for `<S as L>`: [
MetadataAlign,
Method(<S as L>::foo_l),
]
--> $DIR/vtable-multi-level.rs:77:1
--> $DIR/vtable-multi-level.rs:79:1
|
LL | trait L {
| ^^^^^^^
@ -148,7 +173,7 @@ error: vtable entries for `<S as M>`: [
TraitVPtr(<S as L>),
Method(<S as M>::foo_m),
]
--> $DIR/vtable-multi-level.rs:83:1
--> $DIR/vtable-multi-level.rs:85:1
|
LL | trait M: K + L {
| ^^^^^^^^^^^^^^
@ -169,10 +194,10 @@ error: vtable entries for `<S as N>`: [
TraitVPtr(<S as M>),
Method(<S as N>::foo_n),
]
--> $DIR/vtable-multi-level.rs:89:1
--> $DIR/vtable-multi-level.rs:91:1
|
LL | trait N: J + M {
| ^^^^^^^^^^^^^^
error: aborting due to 12 previous errors
error: aborting due to 14 previous errors

View file

@ -25,7 +25,9 @@ impl B for S {}
impl C for S {}
fn foo(c: &dyn C) {}
fn bar(c: &dyn B) {}
fn main() {
foo(&S);
bar(&S);
}