about summary refs log tree commit diff
path: root/src/test/ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui')
-rw-r--r--src/test/ui/borrowck/regions-bound-missing-bound-in-impl.rs5
-rw-r--r--src/test/ui/borrowck/regions-bound-missing-bound-in-impl.stderr35
-rw-r--r--src/test/ui/error-codes/E0195.stderr6
3 files changed, 30 insertions, 16 deletions
diff --git a/src/test/ui/borrowck/regions-bound-missing-bound-in-impl.rs b/src/test/ui/borrowck/regions-bound-missing-bound-in-impl.rs
index 617de2c5dfe..04f90ea9ad3 100644
--- a/src/test/ui/borrowck/regions-bound-missing-bound-in-impl.rs
+++ b/src/test/ui/borrowck/regions-bound-missing-bound-in-impl.rs
@@ -20,6 +20,7 @@ pub trait Foo<'a, 't> {
     fn no_bound<'b>(self, b: Inv<'b>);
     fn has_bound<'b:'a>(self, b: Inv<'b>);
     fn wrong_bound1<'b,'c,'d:'a+'b>(self, b: Inv<'b>, c: Inv<'c>, d: Inv<'d>);
+    fn wrong_bound2<'b,'c,'d:'a+'b>(self, b: Inv<'b>, c: Inv<'c>, d: Inv<'d>);
     fn okay_bound<'b,'c,'d:'a+'b+'c>(self, b: Inv<'b>, c: Inv<'c>, d: Inv<'d>);
     fn another_bound<'x: 'a>(self, x: Inv<'x>, y: Inv<'t>);
 }
@@ -47,6 +48,10 @@ impl<'a, 't> Foo<'a, 't> for &'a isize {
         // cases.
     }
 
+    fn wrong_bound2(self, b: Inv, c: Inv, d: Inv) {
+        //~^ ERROR lifetime parameters or bounds on method `wrong_bound2` do not match the trait
+    }
+
     fn okay_bound<'b,'c,'e:'b+'c>(self, b: Inv<'b>, c: Inv<'c>, e: Inv<'e>) {
     }
 
diff --git a/src/test/ui/borrowck/regions-bound-missing-bound-in-impl.stderr b/src/test/ui/borrowck/regions-bound-missing-bound-in-impl.stderr
index b58dbd1e4d1..b530fea1e59 100644
--- a/src/test/ui/borrowck/regions-bound-missing-bound-in-impl.stderr
+++ b/src/test/ui/borrowck/regions-bound-missing-bound-in-impl.stderr
@@ -1,42 +1,51 @@
 error[E0195]: lifetime parameters or bounds on method `no_bound` do not match the trait declaration
-  --> $DIR/regions-bound-missing-bound-in-impl.rs:28:5
+  --> $DIR/regions-bound-missing-bound-in-impl.rs:29:16
    |
 LL |     fn no_bound<'b>(self, b: Inv<'b>);
-   |     ---------------------------------- lifetimes in impl do not match this method in trait
+   |                ---- lifetimes in impl do not match this method in trait
 ...
 LL |     fn no_bound<'b:'a>(self, b: Inv<'b>) {
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ lifetimes do not match method in trait
+   |                ^^^^^^^ lifetimes do not match method in trait
 
 error[E0195]: lifetime parameters or bounds on method `has_bound` do not match the trait declaration
-  --> $DIR/regions-bound-missing-bound-in-impl.rs:32:5
+  --> $DIR/regions-bound-missing-bound-in-impl.rs:33:17
    |
 LL |     fn has_bound<'b:'a>(self, b: Inv<'b>);
-   |     -------------------------------------- lifetimes in impl do not match this method in trait
+   |                 ------- lifetimes in impl do not match this method in trait
 ...
 LL |     fn has_bound<'b>(self, b: Inv<'b>) {
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ lifetimes do not match method in trait
+   |                 ^^^^ lifetimes do not match method in trait
 
 error[E0308]: method not compatible with trait
-  --> $DIR/regions-bound-missing-bound-in-impl.rs:36:5
+  --> $DIR/regions-bound-missing-bound-in-impl.rs:37:5
    |
 LL |     fn wrong_bound1<'b,'c,'d:'a+'c>(self, b: Inv<'b>, c: Inv<'c>, d: Inv<'d>) {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ lifetime mismatch
    |
    = note: expected type `fn(&'a isize, Inv<'c>, Inv<'c>, Inv<'d>)`
               found type `fn(&'a isize, Inv<'_>, Inv<'c>, Inv<'d>)`
-note: the lifetime 'c as defined on the method body at 36:5...
-  --> $DIR/regions-bound-missing-bound-in-impl.rs:36:5
+note: the lifetime 'c as defined on the method body at 37:5...
+  --> $DIR/regions-bound-missing-bound-in-impl.rs:37:5
    |
 LL |     fn wrong_bound1<'b,'c,'d:'a+'c>(self, b: Inv<'b>, c: Inv<'c>, d: Inv<'d>) {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-note: ...does not necessarily outlive the lifetime 'c as defined on the method body at 36:5
-  --> $DIR/regions-bound-missing-bound-in-impl.rs:36:5
+note: ...does not necessarily outlive the lifetime 'c as defined on the method body at 37:5
+  --> $DIR/regions-bound-missing-bound-in-impl.rs:37:5
    |
 LL |     fn wrong_bound1<'b,'c,'d:'a+'c>(self, b: Inv<'b>, c: Inv<'c>, d: Inv<'d>) {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+error[E0195]: lifetime parameters or bounds on method `wrong_bound2` do not match the trait declaration
+  --> $DIR/regions-bound-missing-bound-in-impl.rs:51:5
+   |
+LL |     fn wrong_bound2<'b,'c,'d:'a+'b>(self, b: Inv<'b>, c: Inv<'c>, d: Inv<'d>);
+   |                    ---------------- lifetimes in impl do not match this method in trait
+...
+LL |     fn wrong_bound2(self, b: Inv, c: Inv, d: Inv) {
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ lifetimes do not match method in trait
+
 error[E0276]: impl has stricter requirements than trait
-  --> $DIR/regions-bound-missing-bound-in-impl.rs:53:5
+  --> $DIR/regions-bound-missing-bound-in-impl.rs:58:5
    |
 LL |     fn another_bound<'x: 'a>(self, x: Inv<'x>, y: Inv<'t>);
    |     ------------------------------------------------------- definition of `another_bound` from trait
@@ -44,7 +53,7 @@ LL |     fn another_bound<'x: 'a>(self, x: Inv<'x>, y: Inv<'t>);
 LL |     fn another_bound<'x: 't>(self, x: Inv<'x>, y: Inv<'t>) {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ impl has extra requirement `'x: 't`
 
-error: aborting due to 4 previous errors
+error: aborting due to 5 previous errors
 
 Some errors occurred: E0195, E0276, E0308.
 For more information about an error, try `rustc --explain E0195`.
diff --git a/src/test/ui/error-codes/E0195.stderr b/src/test/ui/error-codes/E0195.stderr
index f2cf661830d..3860c93a45f 100644
--- a/src/test/ui/error-codes/E0195.stderr
+++ b/src/test/ui/error-codes/E0195.stderr
@@ -1,11 +1,11 @@
 error[E0195]: lifetime parameters or bounds on method `bar` do not match the trait declaration
-  --> $DIR/E0195.rs:19:5
+  --> $DIR/E0195.rs:19:11
    |
 LL |     fn bar<'a,'b:'a>(x: &'a str, y: &'b str);
-   |     ----------------------------------------- lifetimes in impl do not match this method in trait
+   |           ---------- lifetimes in impl do not match this method in trait
 ...
 LL |     fn bar<'a,'b>(x: &'a str, y: &'b str) { //~ ERROR E0195
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ lifetimes do not match method in trait
+   |           ^^^^^^^ lifetimes do not match method in trait
 
 error: aborting due to previous error