about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorOmer Sheikh <ojsheikh@gmail.com>2016-08-05 20:54:04 +0500
committerOmer Sheikh <ojsheikh@gmail.com>2016-08-05 21:02:27 +0500
commit3575812e449e8a174b67023ee0879f573f8a6d1f (patch)
treeb8eb1f2223afaae2d4c843d81e4443b08ee31d81 /src
parent4c02363852e6ce41cf2da1b43a32cb7780a9b067 (diff)
downloadrust-3575812e449e8a174b67023ee0879f573f8a6d1f.tar.gz
rust-3575812e449e8a174b67023ee0879f573f8a6d1f.zip
Update E0107 message to new format
Diffstat (limited to 'src')
-rw-r--r--src/librustc_typeck/astconv.rs22
-rw-r--r--src/test/compile-fail/E0107.rs8
2 files changed, 25 insertions, 5 deletions
diff --git a/src/librustc_typeck/astconv.rs b/src/librustc_typeck/astconv.rs
index 3b2bca4ab39..e3f4f82b0ef 100644
--- a/src/librustc_typeck/astconv.rs
+++ b/src/librustc_typeck/astconv.rs
@@ -2266,9 +2266,25 @@ fn check_type_argument_count(tcx: TyCtxt, span: Span, supplied: usize,
 }
 
 fn report_lifetime_number_error(tcx: TyCtxt, span: Span, number: usize, expected: usize) {
-    span_err!(tcx.sess, span, E0107,
-              "wrong number of lifetime parameters: expected {}, found {}",
-              expected, number);
+    let label = if number < expected {
+        if expected == 1 {
+            format!("expected {} lifetime parameter", expected)
+        } else {
+            format!("expected {} lifetime parameters", expected)
+        }
+    } else {
+        let additional = number - expected;
+        if additional == 1 {
+            "unexpected lifetime parameter".to_string()
+        } else {
+            format!("{} unexpected lifetime parameters", additional)
+        }
+    };
+    struct_span_err!(tcx.sess, span, E0107,
+                     "wrong number of lifetime parameters: expected {}, found {}",
+                     expected, number)
+        .span_label(span, &label)
+        .emit();
 }
 
 // A helper struct for conveniently grouping a set of bounds which we pass to
diff --git a/src/test/compile-fail/E0107.rs b/src/test/compile-fail/E0107.rs
index d27b70865bb..6a5456c0109 100644
--- a/src/test/compile-fail/E0107.rs
+++ b/src/test/compile-fail/E0107.rs
@@ -17,8 +17,12 @@ enum Bar {
 }
 
 struct Baz<'a> {
-    foo: Foo, //~ ERROR E0107
-    bar: Bar<'a>, //~ ERROR E0107
+    foo: Foo,
+    //~^ ERROR E0107
+    //~| expected 1 lifetime parameter
+    bar: Bar<'a>,
+    //~^ ERROR E0107
+    //~| unexpected lifetime parameter
 }
 
 fn main() {