File tree 2 files changed +20
-19
lines changed
2 files changed +20
-19
lines changed Original file line number Diff line number Diff line change @@ -2036,19 +2036,12 @@ impl<'a> Parser<'a> {
2036
2036
2037
2037
/// Parse single lifetime 'a or panic.
2038
2038
pub fn expect_lifetime ( & mut self ) -> Lifetime {
2039
- let lifetime = match self . token {
2040
- token:: Lifetime ( ident) =>
2041
- Lifetime { ident : ident, span : self . span , id : ast:: DUMMY_NODE_ID } ,
2042
- token:: Interpolated ( ref nt) => match nt. 0 {
2043
- token:: NtLifetime ( lifetime) =>
2044
- lifetime,
2045
- _ => self . span_bug ( self . span , "not a lifetime" )
2046
- }
2047
- _ => self . span_bug ( self . span , "not a lifetime" )
2048
- } ;
2049
-
2050
- self . bump ( ) ;
2051
- lifetime
2039
+ if let Some ( lifetime) = self . token . lifetime ( self . span ) {
2040
+ self . bump ( ) ;
2041
+ lifetime
2042
+ } else {
2043
+ self . span_bug ( self . span , "not a lifetime" )
2044
+ }
2052
2045
}
2053
2046
2054
2047
/// Parse mutability (`mut` or nothing).
Original file line number Diff line number Diff line change @@ -314,18 +314,26 @@ impl Token {
314
314
false
315
315
}
316
316
317
- /// Returns `true` if the token is a lifetime.
318
- pub fn is_lifetime ( & self ) -> bool {
317
+ /// Returns a lifetime with the span and a dummy id if it is a lifetime,
318
+ /// or the original lifetime if it is an interpolated lifetime, ignoring
319
+ /// the span.
320
+ pub fn lifetime ( & self , span : Span ) -> Option < ast:: Lifetime > {
319
321
match * self {
320
- Lifetime ( ..) => true ,
322
+ Lifetime ( ident) =>
323
+ Some ( ast:: Lifetime { ident : ident, span : span, id : ast:: DUMMY_NODE_ID } ) ,
321
324
Interpolated ( ref nt) => match nt. 0 {
322
- NtLifetime ( .. ) => true ,
323
- _ => false ,
325
+ NtLifetime ( lifetime ) => Some ( lifetime ) ,
326
+ _ => None ,
324
327
} ,
325
- _ => false ,
328
+ _ => None ,
326
329
}
327
330
}
328
331
332
+ /// Returns `true` if the token is a lifetime.
333
+ pub fn is_lifetime ( & self ) -> bool {
334
+ self . lifetime ( syntax_pos:: DUMMY_SP ) . is_some ( )
335
+ }
336
+
329
337
/// Returns `true` if the token is either the `mut` or `const` keyword.
330
338
pub fn is_mutability ( & self ) -> bool {
331
339
self . is_keyword ( keywords:: Mut ) ||
You can’t perform that action at this time.
0 commit comments