@@ -96,8 +96,14 @@ pub trait HirTyLowerer<'tcx> {
96
96
fn allow_infer ( & self ) -> bool ;
97
97
98
98
/// Returns the region to use when a lifetime is omitted (and not elided).
99
- fn re_infer ( & self , param : Option < & ty:: GenericParamDef > , span : Span )
100
- -> Option < ty:: Region < ' tcx > > ;
99
+ ///
100
+ /// The `borrowed` argument states whether this lifetime is from a reference.
101
+ fn re_infer (
102
+ & self ,
103
+ param : Option < & ty:: GenericParamDef > ,
104
+ span : Span ,
105
+ object_lifetime_default : bool ,
106
+ ) -> ty:: Region < ' tcx > ;
101
107
102
108
/// Returns the type to use when a type is omitted.
103
109
fn ty_infer ( & self , param : Option < & ty:: GenericParamDef > , span : Span ) -> Ty < ' tcx > ;
@@ -292,21 +298,7 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
292
298
293
299
Some ( rbv:: ResolvedArg :: Error ( guar) ) => ty:: Region :: new_error ( tcx, guar) ,
294
300
295
- None => {
296
- self . re_infer ( def, lifetime. ident . span ) . unwrap_or_else ( || {
297
- debug ! ( ?lifetime, "unelided lifetime in signature" ) ;
298
-
299
- // This indicates an illegal lifetime
300
- // elision. `resolve_lifetime` should have
301
- // reported an error in this case -- but if
302
- // not, let's error out.
303
- ty:: Region :: new_error_with_message (
304
- tcx,
305
- lifetime. ident . span ,
306
- "unelided lifetime in signature" ,
307
- )
308
- } )
309
- }
301
+ None => self . re_infer ( def, lifetime. ident . span , false ) ,
310
302
}
311
303
}
312
304
@@ -501,20 +493,9 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
501
493
) -> ty:: GenericArg < ' tcx > {
502
494
let tcx = self . lowerer . tcx ( ) ;
503
495
match param. kind {
504
- GenericParamDefKind :: Lifetime => self
505
- . lowerer
506
- . re_infer ( Some ( param) , self . span )
507
- . unwrap_or_else ( || {
508
- debug ! ( ?param, "unelided lifetime in signature" ) ;
509
-
510
- // This indicates an illegal lifetime in a non-assoc-trait position
511
- ty:: Region :: new_error_with_message (
512
- tcx,
513
- self . span ,
514
- "unelided lifetime in signature" ,
515
- )
516
- } )
517
- . into ( ) ,
496
+ GenericParamDefKind :: Lifetime => {
497
+ self . lowerer . re_infer ( Some ( param) , self . span , false ) . into ( )
498
+ }
518
499
GenericParamDefKind :: Type { has_default, .. } => {
519
500
if !infer_args && has_default {
520
501
// No type parameter provided, but a default exists.
0 commit comments