@@ -4436,19 +4436,20 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
4436
4436
let lifetime_defs = segment. map_or ( & [ ] [ ..] , |( _, generics) | & generics. regions ) ;
4437
4437
if lifetimes. len ( ) > lifetime_defs. len ( ) {
4438
4438
let span = lifetimes[ lifetime_defs. len ( ) ] . span ;
4439
- span_err ! ( self . tcx. sess, span, E0088 ,
4440
- "too many lifetime parameters provided: \
4441
- expected {}, found {}",
4442
- count( lifetime_defs. len( ) ) ,
4443
- count( lifetimes. len( ) ) ) ;
4444
- } else if lifetimes. len ( ) > 0 && lifetimes. len ( ) < lifetime_defs. len ( ) {
4445
- span_err ! ( self . tcx. sess, span, E0090 ,
4446
- "too few lifetime parameters provided: \
4447
- expected {}, found {}",
4448
- count( lifetime_defs. len( ) ) ,
4449
- count( lifetimes. len( ) ) ) ;
4439
+ struct_span_err ! ( self . tcx. sess, span, E0088 ,
4440
+ "too many lifetime parameters provided: \
4441
+ expected {}, found {}",
4442
+ count( lifetime_defs. len( ) ) ,
4443
+ count( lifetimes. len( ) ) )
4444
+ . span_label ( span, & format ! ( "unexpected lifetime parameter{}" ,
4445
+ match lifetimes. len( ) { 1 => "" , _ => "s" } ) )
4446
+ . emit ( ) ;
4450
4447
}
4451
4448
4449
+ // The case where there is not enough lifetime parameters is not checked,
4450
+ // because this is not possible - a function never takes lifetime parameters.
4451
+ // See discussion for Pull Request 36208.
4452
+
4452
4453
// Check provided type parameters.
4453
4454
let type_defs = segment. map_or ( & [ ] [ ..] , |( _, generics) | {
4454
4455
if generics. parent . is_none ( ) {
0 commit comments