diff options
| author | Ralf Jung <post@ralfj.de> | 2022-07-17 16:17:25 -0400 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2022-07-20 17:12:06 -0400 |
| commit | b5a32d01f4cbc032efa093ff672f1e33087f0efb (patch) | |
| tree | a608f3aad1a15c8f8ff43455ff11dfa2b39e1fef /src/test | |
| parent | fe00573324854e5681546b660bbbaf4e1ec38eb2 (diff) | |
| download | rust-b5a32d01f4cbc032efa093ff672f1e33087f0efb.tar.gz rust-b5a32d01f4cbc032efa093ff672f1e33087f0efb.zip | |
we seem to monomorphize fewer vtables by default now, so adjust some tests
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/ui/traits/vtable/vtable-diamond.rs | 5 | ||||
| -rw-r--r-- | src/test/ui/traits/vtable/vtable-multi-level.rs | 25 | ||||
| -rw-r--r-- | src/test/ui/traits/vtable/vtable-multi-level.stderr | 51 | ||||
| -rw-r--r-- | src/test/ui/traits/vtable/vtable-multiple.rs | 2 |
4 files changed, 68 insertions, 15 deletions
diff --git a/src/test/ui/traits/vtable/vtable-diamond.rs b/src/test/ui/traits/vtable/vtable-diamond.rs index ec25e8a7071..dc3c17ac314 100644 --- a/src/test/ui/traits/vtable/vtable-diamond.rs +++ b/src/test/ui/traits/vtable/vtable-diamond.rs @@ -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); } diff --git a/src/test/ui/traits/vtable/vtable-multi-level.rs b/src/test/ui/traits/vtable/vtable-multi-level.rs index fcb5fd5274b..ebd55bcf39b 100644 --- a/src/test/ui/traits/vtable/vtable-multi-level.rs +++ b/src/test/ui/traits/vtable/vtable-multi-level.rs @@ -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); } diff --git a/src/test/ui/traits/vtable/vtable-multi-level.stderr b/src/test/ui/traits/vtable/vtable-multi-level.stderr index d4d7a8fa3a4..c4389e23fc1 100644 --- a/src/test/ui/traits/vtable/vtable-multi-level.stderr +++ b/src/test/ui/traits/vtable/vtable-multi-level.stderr @@ -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 diff --git a/src/test/ui/traits/vtable/vtable-multiple.rs b/src/test/ui/traits/vtable/vtable-multiple.rs index 8e7098a495e..7a0111c5ef2 100644 --- a/src/test/ui/traits/vtable/vtable-multiple.rs +++ b/src/test/ui/traits/vtable/vtable-multiple.rs @@ -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); } |
