about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2022-07-17 16:17:25 -0400
committerRalf Jung <post@ralfj.de>2022-07-20 17:12:06 -0400
commitb5a32d01f4cbc032efa093ff672f1e33087f0efb (patch)
treea608f3aad1a15c8f8ff43455ff11dfa2b39e1fef /src/test
parentfe00573324854e5681546b660bbbaf4e1ec38eb2 (diff)
downloadrust-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.rs5
-rw-r--r--src/test/ui/traits/vtable/vtable-multi-level.rs25
-rw-r--r--src/test/ui/traits/vtable/vtable-multi-level.stderr51
-rw-r--r--src/test/ui/traits/vtable/vtable-multiple.rs2
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);
 }