From ce76b1a1f396dd27e8c73bd59333aef42308920b Mon Sep 17 00:00:00 2001 From: Matt Peterson Date: Wed, 20 Dec 2017 17:22:37 -0500 Subject: Fix tests --- src/libsyntax/parse/parser.rs | 24 +++++++++++++++++------- src/libsyntax/parse/token.rs | 12 ++++++++++-- 2 files changed, 27 insertions(+), 9 deletions(-) (limited to 'src/libsyntax/parse') diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 29f0e2a0fee..8aa03e007e4 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -1295,6 +1295,10 @@ impl<'a> Parser<'a> { fn get_label(&mut self) -> ast::Ident { match self.token { token::Lifetime(ref ident) => *ident, + token::Interpolated(ref nt) => match nt.0 { + token::NtLifetime(lifetime) => lifetime.ident, + _ => self.bug("not a lifetime"), + }, _ => self.bug("not a lifetime"), } } @@ -2032,14 +2036,20 @@ impl<'a> Parser<'a> { /// Parse single lifetime 'a or panic. pub fn expect_lifetime(&mut self) -> Lifetime { - match self.token { - token::Lifetime(ident) => { - let ident_span = self.span; - self.bump(); - Lifetime { ident: ident, span: ident_span, id: ast::DUMMY_NODE_ID } + let lifetime = match self.token { + token::Lifetime(ident) => + Lifetime { ident: ident, span: self.span, id: ast::DUMMY_NODE_ID }, + token::Interpolated(ref nt) => match nt.0 { + token::NtLifetime(lifetime) => + lifetime, + //Lifetime { ident: lifetime.ident, span: lifetime.span, id: ast::DUMMY_NODE_ID }, + _ => self.span_bug(self.span, &format!("not a lifetime: {:?}", self.token)) } - _ => self.span_bug(self.span, "not a lifetime") - } + _ => self.span_bug(self.span, &format!("not a lifetime: {:?}", self.token)) + }; + + self.bump(); + lifetime } /// Parse mutability (`mut` or nothing). diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs index a5766f5601a..2d7ab938f7b 100644 --- a/src/libsyntax/parse/token.rs +++ b/src/libsyntax/parse/token.rs @@ -251,7 +251,7 @@ impl Token { Lt | BinOp(Shl) | // associated path ModSep => true, // global path Interpolated(ref nt) => match nt.0 { - NtIdent(..) | NtTy(..) | NtPath(..) => true, + NtIdent(..) | NtTy(..) | NtPath(..) | NtLifetime(..) => true, _ => false, }, _ => false, @@ -318,7 +318,11 @@ impl Token { pub fn is_lifetime(&self) -> bool { match *self { Lifetime(..) => true, - _ => false, + Interpolated(ref nt) => match nt.0 { + NtLifetime(..) => true, + _ => false, + }, + _ => false, } } @@ -486,6 +490,10 @@ impl Token { let token = Token::Ident(ident.node); tokens = Some(TokenTree::Token(ident.span, token).into()); } + Nonterminal::NtLifetime(lifetime) => { + let token = Token::Lifetime(lifetime.ident); + tokens = Some(TokenTree::Token(lifetime.span, token).into()); + } Nonterminal::NtTT(ref tt) => { tokens = Some(tt.clone().into()); } -- cgit 1.4.1-3-g733a5