@@ -136,7 +136,7 @@ pub struct LoweringContext<'a> {
136
136
// When `is_collectin_in_band_lifetimes` is true, each lifetime is checked
137
137
// against this list to see if it is already in-scope, or if a definition
138
138
// needs to be created for it.
139
- in_scope_lifetimes : Vec < Name > ,
139
+ in_scope_lifetimes : Vec < Ident > ,
140
140
141
141
type_def_lifetime_params : DefIdMap < usize > ,
142
142
@@ -650,8 +650,9 @@ impl<'a> LoweringContext<'a> {
650
650
// that collisions are ok here and this shouldn't
651
651
// really show up for end-user.
652
652
let str_name = match hir_name {
653
- hir:: LifetimeName :: Name ( n) => n. as_str ( ) ,
654
- hir:: LifetimeName :: Fresh ( _) => keywords:: UnderscoreLifetime . name ( ) . as_str ( ) ,
653
+ hir:: LifetimeName :: Ident ( ident) => ident. as_interned_str ( ) ,
654
+ hir:: LifetimeName :: Fresh ( _) =>
655
+ keywords:: UnderscoreLifetime . ident ( ) . as_interned_str ( ) ,
655
656
hir:: LifetimeName :: Implicit
656
657
| hir:: LifetimeName :: Underscore
657
658
| hir:: LifetimeName :: Static => {
@@ -663,7 +664,7 @@ impl<'a> LoweringContext<'a> {
663
664
self . resolver . definitions ( ) . create_def_with_parent (
664
665
parent_id. index ,
665
666
def_node_id,
666
- DefPathData :: LifetimeDef ( str_name. as_interned_str ( ) ) ,
667
+ DefPathData :: LifetimeDef ( str_name) ,
667
668
DefIndexAddressSpace :: High ,
668
669
Mark :: root ( ) ,
669
670
span,
@@ -694,25 +695,25 @@ impl<'a> LoweringContext<'a> {
694
695
/// lifetimes are enabled, then we want to push that lifetime into
695
696
/// the vector of names to define later. In that case, it will get
696
697
/// added to the appropriate generics.
697
- fn maybe_collect_in_band_lifetime ( & mut self , span : Span , name : Name ) {
698
+ fn maybe_collect_in_band_lifetime ( & mut self , ident : Ident ) {
698
699
if !self . is_collecting_in_band_lifetimes {
699
700
return ;
700
701
}
701
702
702
- if self . in_scope_lifetimes . contains ( & name ) {
703
+ if self . in_scope_lifetimes . contains ( & ident . modern ( ) ) {
703
704
return ;
704
705
}
705
706
706
- let hir_name = hir:: LifetimeName :: Name ( name ) ;
707
+ let hir_name = hir:: LifetimeName :: Ident ( ident ) ;
707
708
708
709
if self . lifetimes_to_define
709
710
. iter ( )
710
- . any ( |( _, lt_name) | * lt_name == hir_name)
711
+ . any ( |( _, lt_name) | lt_name. modern ( ) == hir_name. modern ( ) )
711
712
{
712
713
return ;
713
714
}
714
715
715
- self . lifetimes_to_define . push ( ( span, hir_name) ) ;
716
+ self . lifetimes_to_define . push ( ( ident . span , hir_name) ) ;
716
717
}
717
718
718
719
/// When we have either an elided or `'_` lifetime in an impl
@@ -738,7 +739,7 @@ impl<'a> LoweringContext<'a> {
738
739
F : FnOnce ( & mut LoweringContext ) -> T ,
739
740
{
740
741
let old_len = self . in_scope_lifetimes . len ( ) ;
741
- let lt_def_names = lt_defs. map ( |lt_def| lt_def. lifetime . ident . name ) ;
742
+ let lt_def_names = lt_defs. map ( |lt_def| lt_def. lifetime . ident . modern ( ) ) ;
742
743
self . in_scope_lifetimes . extend ( lt_def_names) ;
743
744
744
745
let res = f ( self ) ;
@@ -757,7 +758,7 @@ impl<'a> LoweringContext<'a> {
757
758
F : FnOnce ( & mut LoweringContext ) -> T ,
758
759
{
759
760
let old_len = self . in_scope_lifetimes . len ( ) ;
760
- let lt_def_names = lt_defs. iter ( ) . map ( |lt_def| lt_def. lifetime . name . name ( ) ) ;
761
+ let lt_def_names = lt_defs. iter ( ) . map ( |lt_def| lt_def. lifetime . name . ident ( ) . modern ( ) ) ;
761
762
self . in_scope_lifetimes . extend ( lt_def_names) ;
762
763
763
764
let res = f ( self ) ;
@@ -1279,7 +1280,7 @@ impl<'a> LoweringContext<'a> {
1279
1280
}
1280
1281
}
1281
1282
name @ hir:: LifetimeName :: Fresh ( _) => name,
1282
- name @ hir:: LifetimeName :: Name ( _) => name,
1283
+ name @ hir:: LifetimeName :: Ident ( _) => name,
1283
1284
hir:: LifetimeName :: Static => return ,
1284
1285
} ;
1285
1286
@@ -1298,7 +1299,7 @@ impl<'a> LoweringContext<'a> {
1298
1299
self . context . resolver . definitions ( ) . create_def_with_parent (
1299
1300
self . parent ,
1300
1301
def_node_id,
1301
- DefPathData :: LifetimeDef ( name. name ( ) . as_interned_str ( ) ) ,
1302
+ DefPathData :: LifetimeDef ( name. ident ( ) . as_interned_str ( ) ) ,
1302
1303
DefIndexAddressSpace :: High ,
1303
1304
Mark :: root ( ) ,
1304
1305
lifetime. span ,
@@ -1834,21 +1835,23 @@ impl<'a> LoweringContext<'a> {
1834
1835
1835
1836
fn lower_lifetime ( & mut self , l : & Lifetime ) -> hir:: Lifetime {
1836
1837
let span = l. ident . span ;
1837
- match self . lower_ident ( l. ident ) {
1838
- x if x == "'static" => self . new_named_lifetime ( l. id , span, hir:: LifetimeName :: Static ) ,
1839
- x if x == "'_" => match self . anonymous_lifetime_mode {
1840
- AnonymousLifetimeMode :: CreateParameter => {
1841
- let fresh_name = self . collect_fresh_in_band_lifetime ( span) ;
1842
- self . new_named_lifetime ( l. id , span, fresh_name)
1843
- }
1838
+ match l. ident {
1839
+ ident if ident. name == keywords:: StaticLifetime . name ( ) =>
1840
+ self . new_named_lifetime ( l. id , span, hir:: LifetimeName :: Static ) ,
1841
+ ident if ident. name == keywords:: UnderscoreLifetime . name ( ) =>
1842
+ match self . anonymous_lifetime_mode {
1843
+ AnonymousLifetimeMode :: CreateParameter => {
1844
+ let fresh_name = self . collect_fresh_in_band_lifetime ( span) ;
1845
+ self . new_named_lifetime ( l. id , span, fresh_name)
1846
+ }
1844
1847
1845
- AnonymousLifetimeMode :: PassThrough => {
1846
- self . new_named_lifetime ( l. id , span, hir:: LifetimeName :: Underscore )
1847
- }
1848
- } ,
1849
- name => {
1850
- self . maybe_collect_in_band_lifetime ( span , name ) ;
1851
- self . new_named_lifetime ( l. id , span, hir:: LifetimeName :: Name ( name ) )
1848
+ AnonymousLifetimeMode :: PassThrough => {
1849
+ self . new_named_lifetime ( l. id , span, hir:: LifetimeName :: Underscore )
1850
+ }
1851
+ } ,
1852
+ ident => {
1853
+ self . maybe_collect_in_band_lifetime ( ident ) ;
1854
+ self . new_named_lifetime ( l. id , span, hir:: LifetimeName :: Ident ( ident ) )
1852
1855
}
1853
1856
}
1854
1857
}
0 commit comments