@@ -331,11 +331,11 @@ pub enum TokenKind {
331
331
/// Do not forget about `NtLifetime` when you want to match on lifetime identifiers.
332
332
/// It's recommended to use `Token::(lifetime,uninterpolate,uninterpolated_span)` to
333
333
/// treat regular and interpolated lifetime identifiers in the same way.
334
- Lifetime ( Symbol ) ,
334
+ Lifetime ( Symbol , IdentIsRaw ) ,
335
335
/// This identifier (and its span) is the lifetime passed to the
336
336
/// declarative macro. The span in the surrounding `Token` is the span of
337
337
/// the `lifetime` metavariable in the macro's RHS.
338
- NtLifetime ( Ident ) ,
338
+ NtLifetime ( Ident , IdentIsRaw ) ,
339
339
340
340
/// An embedded AST node, as produced by a macro. This only exists for
341
341
/// historical reasons. We'd like to get rid of it, for multiple reasons.
@@ -458,7 +458,7 @@ impl Token {
458
458
/// if they keep spans or perform edition checks.
459
459
pub fn uninterpolated_span ( & self ) -> Span {
460
460
match self . kind {
461
- NtIdent ( ident, _) | NtLifetime ( ident) => ident. span ,
461
+ NtIdent ( ident, _) | NtLifetime ( ident, _ ) => ident. span ,
462
462
Interpolated ( ref nt) => nt. use_span ( ) ,
463
463
_ => self . span ,
464
464
}
@@ -661,7 +661,9 @@ impl Token {
661
661
pub fn uninterpolate ( & self ) -> Cow < ' _ , Token > {
662
662
match self . kind {
663
663
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
+ }
665
667
_ => Cow :: Borrowed ( self ) ,
666
668
}
667
669
}
@@ -679,11 +681,11 @@ impl Token {
679
681
680
682
/// Returns a lifetime identifier if this token is a lifetime.
681
683
#[ inline]
682
- pub fn lifetime ( & self ) -> Option < Ident > {
684
+ pub fn lifetime ( & self ) -> Option < ( Ident , IdentIsRaw ) > {
683
685
// We avoid using `Token::uninterpolate` here because it's slow.
684
686
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 ) ) ,
687
689
_ => None ,
688
690
}
689
691
}
@@ -865,7 +867,7 @@ impl Token {
865
867
_ => return None ,
866
868
} ,
867
869
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 ) ,
869
871
_ => return None ,
870
872
} ,
871
873
0 commit comments