Skip to content

Commit

Permalink
we seem to monomorphize fewer vtables by default now, so adjust some …
Browse files Browse the repository at this point in the history
…tests
  • Loading branch information
RalfJung committed Jul 18, 2022
1 parent 57c24d0 commit 332f61e
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 15 deletions.
5 changes: 5 additions & 0 deletions src/test/ui/traits/vtable/vtable-diamond.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
25 changes: 23 additions & 2 deletions src/test/ui/traits/vtable/vtable-multi-level.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

#[rustc_dump_vtable]
trait A {
//~^ error vtable
fn foo_a(&self) {}
}

Expand All @@ -23,6 +24,7 @@ trait B {

#[rustc_dump_vtable]
trait C: A + B {
//~^ error vtable
fn foo_c(&self) {}
}

Expand Down Expand Up @@ -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);
}
51 changes: 38 additions & 13 deletions src/test/ui/traits/vtable/vtable-multi-level.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
| ^^^^^^^
Expand All @@ -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 {
| ^^^^^^^
Expand All @@ -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 {
| ^^^^^^^^^^^^^^
Expand All @@ -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 {
| ^^^^^^^
Expand All @@ -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 {
| ^^^^^^^
Expand All @@ -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 {
| ^^^^^^^^^^^^^^
Expand All @@ -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 {
| ^^^^^^^
Expand All @@ -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 {
| ^^^^^^^
Expand All @@ -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 {
| ^^^^^^^^^^^^^^
Expand All @@ -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

2 changes: 2 additions & 0 deletions src/test/ui/traits/vtable/vtable-multiple.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

0 comments on commit 332f61e

Please sign in to comment.