Skip to content

Commit 332f61e

Browse files
committed
we seem to monomorphize fewer vtables by default now, so adjust some tests
1 parent 57c24d0 commit 332f61e

File tree

4 files changed

+68
-15
lines changed

4 files changed

+68
-15
lines changed

src/test/ui/traits/vtable/vtable-diamond.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ fn foo(d: &dyn D) {
3434
d.foo_d();
3535
}
3636

37+
fn bar(d: &dyn C) {
38+
d.foo_c();
39+
}
40+
3741
fn main() {
3842
foo(&S);
43+
bar(&S);
3944
}

src/test/ui/traits/vtable/vtable-multi-level.rs

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
#[rustc_dump_vtable]
1414
trait A {
15+
//~^ error vtable
1516
fn foo_a(&self) {}
1617
}
1718

@@ -23,6 +24,7 @@ trait B {
2324

2425
#[rustc_dump_vtable]
2526
trait C: A + B {
27+
//~^ error vtable
2628
fn foo_c(&self) {}
2729
}
2830

@@ -115,8 +117,27 @@ impl M for S {}
115117
impl N for S {}
116118
impl O for S {}
117119

118-
fn foo(_: &dyn O) {}
120+
macro_rules! monomorphize_vtable {
121+
($trait:ident) => {{
122+
fn foo(_ : &dyn $trait) {}
123+
foo(&S);
124+
}}
125+
}
119126

120127
fn main() {
121-
foo(&S);
128+
monomorphize_vtable!(O);
129+
130+
monomorphize_vtable!(A);
131+
monomorphize_vtable!(B);
132+
monomorphize_vtable!(C);
133+
monomorphize_vtable!(D);
134+
monomorphize_vtable!(E);
135+
monomorphize_vtable!(F);
136+
monomorphize_vtable!(H);
137+
monomorphize_vtable!(I);
138+
monomorphize_vtable!(J);
139+
monomorphize_vtable!(K);
140+
monomorphize_vtable!(L);
141+
monomorphize_vtable!(M);
142+
monomorphize_vtable!(N);
122143
}

src/test/ui/traits/vtable/vtable-multi-level.stderr

Lines changed: 38 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,29 +29,54 @@ error: vtable entries for `<S as O>`: [
2929
TraitVPtr(<S as N>),
3030
Method(<S as O>::foo_o),
3131
]
32-
--> $DIR/vtable-multi-level.rs:95:1
32+
--> $DIR/vtable-multi-level.rs:97:1
3333
|
3434
LL | trait O: G + N {
3535
| ^^^^^^^^^^^^^^
3636

37+
error: vtable entries for `<S as A>`: [
38+
MetadataDropInPlace,
39+
MetadataSize,
40+
MetadataAlign,
41+
Method(<S as A>::foo_a),
42+
]
43+
--> $DIR/vtable-multi-level.rs:14:1
44+
|
45+
LL | trait A {
46+
| ^^^^^^^
47+
3748
error: vtable entries for `<S as B>`: [
3849
MetadataDropInPlace,
3950
MetadataSize,
4051
MetadataAlign,
4152
Method(<S as B>::foo_b),
4253
]
43-
--> $DIR/vtable-multi-level.rs:19:1
54+
--> $DIR/vtable-multi-level.rs:20:1
4455
|
4556
LL | trait B {
4657
| ^^^^^^^
4758

59+
error: vtable entries for `<S as C>`: [
60+
MetadataDropInPlace,
61+
MetadataSize,
62+
MetadataAlign,
63+
Method(<S as A>::foo_a),
64+
Method(<S as B>::foo_b),
65+
TraitVPtr(<S as B>),
66+
Method(<S as C>::foo_c),
67+
]
68+
--> $DIR/vtable-multi-level.rs:26:1
69+
|
70+
LL | trait C: A + B {
71+
| ^^^^^^^^^^^^^^
72+
4873
error: vtable entries for `<S as D>`: [
4974
MetadataDropInPlace,
5075
MetadataSize,
5176
MetadataAlign,
5277
Method(<S as D>::foo_d),
5378
]
54-
--> $DIR/vtable-multi-level.rs:30:1
79+
--> $DIR/vtable-multi-level.rs:32:1
5580
|
5681
LL | trait D {
5782
| ^^^^^^^
@@ -62,7 +87,7 @@ error: vtable entries for `<S as E>`: [
6287
MetadataAlign,
6388
Method(<S as E>::foo_e),
6489
]
65-
--> $DIR/vtable-multi-level.rs:36:1
90+
--> $DIR/vtable-multi-level.rs:38:1
6691
|
6792
LL | trait E {
6893
| ^^^^^^^
@@ -76,7 +101,7 @@ error: vtable entries for `<S as F>`: [
76101
TraitVPtr(<S as E>),
77102
Method(<S as F>::foo_f),
78103
]
79-
--> $DIR/vtable-multi-level.rs:42:1
104+
--> $DIR/vtable-multi-level.rs:44:1
80105
|
81106
LL | trait F: D + E {
82107
| ^^^^^^^^^^^^^^
@@ -87,7 +112,7 @@ error: vtable entries for `<S as H>`: [
87112
MetadataAlign,
88113
Method(<S as H>::foo_h),
89114
]
90-
--> $DIR/vtable-multi-level.rs:53:1
115+
--> $DIR/vtable-multi-level.rs:55:1
91116
|
92117
LL | trait H {
93118
| ^^^^^^^
@@ -98,7 +123,7 @@ error: vtable entries for `<S as I>`: [
98123
MetadataAlign,
99124
Method(<S as I>::foo_i),
100125
]
101-
--> $DIR/vtable-multi-level.rs:59:1
126+
--> $DIR/vtable-multi-level.rs:61:1
102127
|
103128
LL | trait I {
104129
| ^^^^^^^
@@ -112,7 +137,7 @@ error: vtable entries for `<S as J>`: [
112137
TraitVPtr(<S as I>),
113138
Method(<S as J>::foo_j),
114139
]
115-
--> $DIR/vtable-multi-level.rs:65:1
140+
--> $DIR/vtable-multi-level.rs:67:1
116141
|
117142
LL | trait J: H + I {
118143
| ^^^^^^^^^^^^^^
@@ -123,7 +148,7 @@ error: vtable entries for `<S as K>`: [
123148
MetadataAlign,
124149
Method(<S as K>::foo_k),
125150
]
126-
--> $DIR/vtable-multi-level.rs:71:1
151+
--> $DIR/vtable-multi-level.rs:73:1
127152
|
128153
LL | trait K {
129154
| ^^^^^^^
@@ -134,7 +159,7 @@ error: vtable entries for `<S as L>`: [
134159
MetadataAlign,
135160
Method(<S as L>::foo_l),
136161
]
137-
--> $DIR/vtable-multi-level.rs:77:1
162+
--> $DIR/vtable-multi-level.rs:79:1
138163
|
139164
LL | trait L {
140165
| ^^^^^^^
@@ -148,7 +173,7 @@ error: vtable entries for `<S as M>`: [
148173
TraitVPtr(<S as L>),
149174
Method(<S as M>::foo_m),
150175
]
151-
--> $DIR/vtable-multi-level.rs:83:1
176+
--> $DIR/vtable-multi-level.rs:85:1
152177
|
153178
LL | trait M: K + L {
154179
| ^^^^^^^^^^^^^^
@@ -169,10 +194,10 @@ error: vtable entries for `<S as N>`: [
169194
TraitVPtr(<S as M>),
170195
Method(<S as N>::foo_n),
171196
]
172-
--> $DIR/vtable-multi-level.rs:89:1
197+
--> $DIR/vtable-multi-level.rs:91:1
173198
|
174199
LL | trait N: J + M {
175200
| ^^^^^^^^^^^^^^
176201

177-
error: aborting due to 12 previous errors
202+
error: aborting due to 14 previous errors
178203

src/test/ui/traits/vtable/vtable-multiple.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ impl B for S {}
2525
impl C for S {}
2626

2727
fn foo(c: &dyn C) {}
28+
fn bar(c: &dyn B) {}
2829

2930
fn main() {
3031
foo(&S);
32+
bar(&S);
3133
}

0 commit comments

Comments
 (0)