@@ -96,8 +96,14 @@ pub trait HirTyLowerer<'tcx> {
9696 fn allow_infer ( & self ) -> bool ;
9797
9898 /// 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 > ;
101107
102108 /// Returns the type to use when a type is omitted.
103109 fn ty_infer ( & self , param : Option < & ty:: GenericParamDef > , span : Span ) -> Ty < ' tcx > ;
@@ -292,21 +298,7 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
292298
293299 Some ( rbv:: ResolvedArg :: Error ( guar) ) => ty:: Region :: new_error ( tcx, guar) ,
294300
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 ) ,
310302 }
311303 }
312304
@@ -501,20 +493,9 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ {
501493 ) -> ty:: GenericArg < ' tcx > {
502494 let tcx = self . lowerer . tcx ( ) ;
503495 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+ }
518499 GenericParamDefKind :: Type { has_default, .. } => {
519500 if !infer_args && has_default {
520501 // No type parameter provided, but a default exists.
0 commit comments