Skip to content

Commit 3575812

Browse files
committed
Update E0107 message to new format
1 parent 4c02363 commit 3575812

File tree

2 files changed

+25
-5
lines changed

2 files changed

+25
-5
lines changed

src/librustc_typeck/astconv.rs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2266,9 +2266,25 @@ fn check_type_argument_count(tcx: TyCtxt, span: Span, supplied: usize,
22662266
}
22672267

22682268
fn report_lifetime_number_error(tcx: TyCtxt, span: Span, number: usize, expected: usize) {
2269-
span_err!(tcx.sess, span, E0107,
2270-
"wrong number of lifetime parameters: expected {}, found {}",
2271-
expected, number);
2269+
let label = if number < expected {
2270+
if expected == 1 {
2271+
format!("expected {} lifetime parameter", expected)
2272+
} else {
2273+
format!("expected {} lifetime parameters", expected)
2274+
}
2275+
} else {
2276+
let additional = number - expected;
2277+
if additional == 1 {
2278+
"unexpected lifetime parameter".to_string()
2279+
} else {
2280+
format!("{} unexpected lifetime parameters", additional)
2281+
}
2282+
};
2283+
struct_span_err!(tcx.sess, span, E0107,
2284+
"wrong number of lifetime parameters: expected {}, found {}",
2285+
expected, number)
2286+
.span_label(span, &label)
2287+
.emit();
22722288
}
22732289

22742290
// A helper struct for conveniently grouping a set of bounds which we pass to

src/test/compile-fail/E0107.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,12 @@ enum Bar {
1717
}
1818

1919
struct Baz<'a> {
20-
foo: Foo, //~ ERROR E0107
21-
bar: Bar<'a>, //~ ERROR E0107
20+
foo: Foo,
21+
//~^ ERROR E0107
22+
//~| expected 1 lifetime parameter
23+
bar: Bar<'a>,
24+
//~^ ERROR E0107
25+
//~| unexpected lifetime parameter
2226
}
2327

2428
fn main() {

0 commit comments

Comments
 (0)