From 3575812e449e8a174b67023ee0879f573f8a6d1f Mon Sep 17 00:00:00 2001 From: Omer Sheikh Date: Fri, 5 Aug 2016 20:54:04 +0500 Subject: [PATCH] Update E0107 message to new format --- src/librustc_typeck/astconv.rs | 22 +++++++++++++++++++--- src/test/compile-fail/E0107.rs | 8 ++++++-- 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() { -- GitLab