Skip to content

Commit ce76b1a

Browse files
committed
Fix tests
1 parent 0e53360 commit ce76b1a

File tree

2 files changed

+27
-9
lines changed

2 files changed

+27
-9
lines changed

src/libsyntax/parse/parser.rs

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1295,6 +1295,10 @@ impl<'a> Parser<'a> {
12951295
fn get_label(&mut self) -> ast::Ident {
12961296
match self.token {
12971297
token::Lifetime(ref ident) => *ident,
1298+
token::Interpolated(ref nt) => match nt.0 {
1299+
token::NtLifetime(lifetime) => lifetime.ident,
1300+
_ => self.bug("not a lifetime"),
1301+
},
12981302
_ => self.bug("not a lifetime"),
12991303
}
13001304
}
@@ -2032,14 +2036,20 @@ impl<'a> Parser<'a> {
20322036

20332037
/// Parse single lifetime 'a or panic.
20342038
pub fn expect_lifetime(&mut self) -> Lifetime {
2035-
match self.token {
2036-
token::Lifetime(ident) => {
2037-
let ident_span = self.span;
2038-
self.bump();
2039-
Lifetime { ident: ident, span: ident_span, id: ast::DUMMY_NODE_ID }
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+
//Lifetime { ident: lifetime.ident, span: lifetime.span, id: ast::DUMMY_NODE_ID },
2046+
_ => self.span_bug(self.span, &format!("not a lifetime: {:?}", self.token))
20402047
}
2041-
_ => self.span_bug(self.span, "not a lifetime")
2042-
}
2048+
_ => self.span_bug(self.span, &format!("not a lifetime: {:?}", self.token))
2049+
};
2050+
2051+
self.bump();
2052+
lifetime
20432053
}
20442054

20452055
/// Parse mutability (`mut` or nothing).

src/libsyntax/parse/token.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ impl Token {
251251
Lt | BinOp(Shl) | // associated path
252252
ModSep => true, // global path
253253
Interpolated(ref nt) => match nt.0 {
254-
NtIdent(..) | NtTy(..) | NtPath(..) => true,
254+
NtIdent(..) | NtTy(..) | NtPath(..) | NtLifetime(..) => true,
255255
_ => false,
256256
},
257257
_ => false,
@@ -318,7 +318,11 @@ impl Token {
318318
pub fn is_lifetime(&self) -> bool {
319319
match *self {
320320
Lifetime(..) => true,
321-
_ => false,
321+
Interpolated(ref nt) => match nt.0 {
322+
NtLifetime(..) => true,
323+
_ => false,
324+
},
325+
_ => false,
322326
}
323327
}
324328

@@ -486,6 +490,10 @@ impl Token {
486490
let token = Token::Ident(ident.node);
487491
tokens = Some(TokenTree::Token(ident.span, token).into());
488492
}
493+
Nonterminal::NtLifetime(lifetime) => {
494+
let token = Token::Lifetime(lifetime.ident);
495+
tokens = Some(TokenTree::Token(lifetime.span, token).into());
496+
}
489497
Nonterminal::NtTT(ref tt) => {
490498
tokens = Some(tt.clone().into());
491499
}

0 commit comments

Comments
 (0)