we seem to monomorphize fewer vtables by default now, so adjust some tests
This commit is contained in:
parent
fe00573324
commit
b5a32d01f4
4 changed files with 68 additions and 15 deletions
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue