@@ -878,7 +878,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
878878
879879 ( hir:: ParamName :: Fresh , hir:: LifetimeParamKind :: Elided ( kind) )
880880 }
881- LifetimeRes :: Static { .. } | LifetimeRes :: Error => return None ,
881+ LifetimeRes :: Static { .. } | LifetimeRes :: Error ( .. ) => return None ,
882882 res => panic ! (
883883 "Unexpected lifetime resolution {:?} for {:?} at {:?}" ,
884884 res, ident, ident. span
@@ -1931,26 +1931,29 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
19311931 source : LifetimeSource ,
19321932 syntax : LifetimeSyntax ,
19331933 ) -> & ' hir hir:: Lifetime {
1934- let res = self . resolver . get_lifetime_res ( id) . unwrap_or ( LifetimeRes :: Error ) ;
1935- let res = match res {
1936- LifetimeRes :: Param { param, .. } => hir:: LifetimeKind :: Param ( param) ,
1937- LifetimeRes :: Fresh { param, .. } => {
1938- assert_eq ! ( ident. name, kw:: UnderscoreLifetime ) ;
1939- let param = self . local_def_id ( param) ;
1940- hir:: LifetimeKind :: Param ( param)
1941- }
1942- LifetimeRes :: Infer => {
1943- assert_eq ! ( ident. name, kw:: UnderscoreLifetime ) ;
1944- hir:: LifetimeKind :: Infer
1945- }
1946- LifetimeRes :: Static { .. } => {
1947- assert ! ( matches!( ident. name, kw:: StaticLifetime | kw:: UnderscoreLifetime ) ) ;
1948- hir:: LifetimeKind :: Static
1949- }
1950- LifetimeRes :: Error => hir:: LifetimeKind :: Error ,
1951- LifetimeRes :: ElidedAnchor { .. } => {
1952- panic ! ( "Unexpected `ElidedAnchar` {:?} at {:?}" , ident, ident. span) ;
1934+ let res = if let Some ( res) = self . resolver . get_lifetime_res ( id) {
1935+ match res {
1936+ LifetimeRes :: Param { param, .. } => hir:: LifetimeKind :: Param ( param) ,
1937+ LifetimeRes :: Fresh { param, .. } => {
1938+ assert_eq ! ( ident. name, kw:: UnderscoreLifetime ) ;
1939+ let param = self . local_def_id ( param) ;
1940+ hir:: LifetimeKind :: Param ( param)
1941+ }
1942+ LifetimeRes :: Infer => {
1943+ assert_eq ! ( ident. name, kw:: UnderscoreLifetime ) ;
1944+ hir:: LifetimeKind :: Infer
1945+ }
1946+ LifetimeRes :: Static { .. } => {
1947+ assert ! ( matches!( ident. name, kw:: StaticLifetime | kw:: UnderscoreLifetime ) ) ;
1948+ hir:: LifetimeKind :: Static
1949+ }
1950+ LifetimeRes :: Error ( guar) => hir:: LifetimeKind :: Error ( guar) ,
1951+ LifetimeRes :: ElidedAnchor { .. } => {
1952+ panic ! ( "Unexpected `ElidedAnchar` {:?} at {:?}" , ident, ident. span) ;
1953+ }
19531954 }
1955+ } else {
1956+ hir:: LifetimeKind :: Error ( self . dcx ( ) . span_delayed_bug ( ident. span , "unresolved lifetime" ) )
19541957 } ;
19551958
19561959 debug ! ( ?res) ;
@@ -2014,12 +2017,13 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
20142017 // AST resolution emitted an error on those parameters, so we lower them using
20152018 // `ParamName::Error`.
20162019 let ident = self . lower_ident ( param. ident ) ;
2017- let param_name =
2018- if let Some ( LifetimeRes :: Error ) = self . resolver . get_lifetime_res ( param. id ) {
2019- ParamName :: Error ( ident)
2020- } else {
2021- ParamName :: Plain ( ident)
2022- } ;
2020+ let param_name = if let Some ( LifetimeRes :: Error ( ..) ) =
2021+ self . resolver . get_lifetime_res ( param. id )
2022+ {
2023+ ParamName :: Error ( ident)
2024+ } else {
2025+ ParamName :: Plain ( ident)
2026+ } ;
20232027 let kind =
20242028 hir:: GenericParamKind :: Lifetime { kind : hir:: LifetimeParamKind :: Explicit } ;
20252029
0 commit comments