@@ -331,11 +331,11 @@ pub enum TokenKind {
331331 /// Do not forget about `NtLifetime` when you want to match on lifetime identifiers.
332332 /// It's recommended to use `Token::(lifetime,uninterpolate,uninterpolated_span)` to
333333 /// treat regular and interpolated lifetime identifiers in the same way.
334- Lifetime ( Symbol ) ,
334+ Lifetime ( Symbol , IdentIsRaw ) ,
335335 /// This identifier (and its span) is the lifetime passed to the
336336 /// declarative macro. The span in the surrounding `Token` is the span of
337337 /// the `lifetime` metavariable in the macro's RHS.
338- NtLifetime ( Ident ) ,
338+ NtLifetime ( Ident , IdentIsRaw ) ,
339339
340340 /// An embedded AST node, as produced by a macro. This only exists for
341341 /// historical reasons. We'd like to get rid of it, for multiple reasons.
@@ -458,7 +458,7 @@ impl Token {
458458 /// if they keep spans or perform edition checks.
459459 pub fn uninterpolated_span ( & self ) -> Span {
460460 match self . kind {
461- NtIdent ( ident, _) | NtLifetime ( ident) => ident. span ,
461+ NtIdent ( ident, _) | NtLifetime ( ident, _ ) => ident. span ,
462462 Interpolated ( ref nt) => nt. use_span ( ) ,
463463 _ => self . span ,
464464 }
@@ -661,7 +661,9 @@ impl Token {
661661 pub fn uninterpolate ( & self ) -> Cow < ' _ , Token > {
662662 match self . kind {
663663 NtIdent ( ident, is_raw) => Cow :: Owned ( Token :: new ( Ident ( ident. name , is_raw) , ident. span ) ) ,
664- NtLifetime ( ident) => Cow :: Owned ( Token :: new ( Lifetime ( ident. name ) , ident. span ) ) ,
664+ NtLifetime ( ident, is_raw) => {
665+ Cow :: Owned ( Token :: new ( Lifetime ( ident. name , is_raw) , ident. span ) )
666+ }
665667 _ => Cow :: Borrowed ( self ) ,
666668 }
667669 }
@@ -679,11 +681,11 @@ impl Token {
679681
680682 /// Returns a lifetime identifier if this token is a lifetime.
681683 #[ inline]
682- pub fn lifetime ( & self ) -> Option < Ident > {
684+ pub fn lifetime ( & self ) -> Option < ( Ident , IdentIsRaw ) > {
683685 // We avoid using `Token::uninterpolate` here because it's slow.
684686 match self . kind {
685- Lifetime ( name) => Some ( Ident :: new ( name, self . span ) ) ,
686- NtLifetime ( ident) => Some ( ident) ,
687+ Lifetime ( name, is_raw ) => Some ( ( Ident :: new ( name, self . span ) , is_raw ) ) ,
688+ NtLifetime ( ident, is_raw ) => Some ( ( ident, is_raw ) ) ,
687689 _ => None ,
688690 }
689691 }
@@ -865,7 +867,7 @@ impl Token {
865867 _ => return None ,
866868 } ,
867869 SingleQuote => match joint. kind {
868- Ident ( name, IdentIsRaw :: No ) => Lifetime ( Symbol :: intern ( & format ! ( "'{name}" ) ) ) ,
870+ Ident ( name, is_raw ) => Lifetime ( Symbol :: intern ( & format ! ( "'{name}" ) ) , is_raw ) ,
869871 _ => return None ,
870872 } ,
871873
0 commit comments