From b5a32d01f4cbc032efa093ff672f1e33087f0efb Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sun, 17 Jul 2022 16:17:25 -0400 Subject: we seem to monomorphize fewer vtables by default now, so adjust some tests --- src/test/ui/traits/vtable/vtable-diamond.rs | 5 +++ src/test/ui/traits/vtable/vtable-multi-level.rs | 25 ++++++++++- .../ui/traits/vtable/vtable-multi-level.stderr | 51 ++++++++++++++++------ 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 ``: [ TraitVPtr(), Method(::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 ``: [ + MetadataDropInPlace, + MetadataSize, + MetadataAlign, + Method(::foo_a), + ] + --> $DIR/vtable-multi-level.rs:14:1 + | +LL | trait A { + | ^^^^^^^ + error: vtable entries for ``: [ MetadataDropInPlace, MetadataSize, MetadataAlign, Method(::foo_b), ] - --> $DIR/vtable-multi-level.rs:19:1 + --> $DIR/vtable-multi-level.rs:20:1 | LL | trait B { | ^^^^^^^ +error: vtable entries for ``: [ + MetadataDropInPlace, + MetadataSize, + MetadataAlign, + Method(::foo_a), + Method(::foo_b), + TraitVPtr(), + Method(::foo_c), + ] + --> $DIR/vtable-multi-level.rs:26:1 + | +LL | trait C: A + B { + | ^^^^^^^^^^^^^^ + error: vtable entries for ``: [ MetadataDropInPlace, MetadataSize, MetadataAlign, Method(::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 ``: [ MetadataAlign, Method(::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 ``: [ TraitVPtr(), Method(::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 ``: [ MetadataAlign, Method(::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 ``: [ MetadataAlign, Method(::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 ``: [ TraitVPtr(), Method(::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 ``: [ MetadataAlign, Method(::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 ``: [ MetadataAlign, Method(::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 ``: [ TraitVPtr(), Method(::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 ``: [ TraitVPtr(), Method(::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); } -- cgit 1.4.1-3-g733a5