@@ -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 }
@@ -646,7 +646,9 @@ impl Token {
646646 pub fn uninterpolate ( & self ) -> Cow < ' _ , Token > {
647647 match self . kind {
648648 NtIdent ( ident, is_raw) => Cow :: Owned ( Token :: new ( Ident ( ident. name , is_raw) , ident. span ) ) ,
649- NtLifetime ( ident) => Cow :: Owned ( Token :: new ( Lifetime ( ident. name ) , ident. span ) ) ,
649+ NtLifetime ( ident, is_raw) => {
650+ Cow :: Owned ( Token :: new ( Lifetime ( ident. name , is_raw) , ident. span ) )
651+ }
650652 _ => Cow :: Borrowed ( self ) ,
651653 }
652654 }
@@ -664,11 +666,11 @@ impl Token {
664666
665667 /// Returns a lifetime identifier if this token is a lifetime.
666668 #[ inline]
667- pub fn lifetime ( & self ) -> Option < Ident > {
669+ pub fn lifetime ( & self ) -> Option < ( Ident , IdentIsRaw ) > {
668670 // We avoid using `Token::uninterpolate` here because it's slow.
669671 match self . kind {
670- Lifetime ( name) => Some ( Ident :: new ( name, self . span ) ) ,
671- NtLifetime ( ident) => Some ( ident) ,
672+ Lifetime ( name, is_raw ) => Some ( ( Ident :: new ( name, self . span ) , is_raw ) ) ,
673+ NtLifetime ( ident, is_raw ) => Some ( ( ident, is_raw ) ) ,
672674 _ => None ,
673675 }
674676 }
@@ -850,7 +852,7 @@ impl Token {
850852 _ => return None ,
851853 } ,
852854 SingleQuote => match joint. kind {
853- Ident ( name, IdentIsRaw :: No ) => Lifetime ( Symbol :: intern ( & format ! ( "'{name}" ) ) ) ,
855+ Ident ( name, is_raw ) => Lifetime ( Symbol :: intern ( & format ! ( "'{name}" ) ) , is_raw ) ,
854856 _ => return None ,
855857 } ,
856858
0 commit comments