diff options
| author | Matt Peterson <ricochet1k@gmail.com> | 2017-12-20 17:22:37 -0500 |
|---|---|---|
| committer | Matt Peterson <ricochet1k@gmail.com> | 2017-12-28 11:32:05 -0500 |
| commit | ce76b1a1f396dd27e8c73bd59333aef42308920b (patch) | |
| tree | 7f33f9c1e8a23d09c77b3027f0357eb318a36225 /src/libsyntax/parse | |
| parent | 0e53360af69bf9e71ef39e570655d73fc44339b9 (diff) | |
| download | rust-ce76b1a1f396dd27e8c73bd59333aef42308920b.tar.gz rust-ce76b1a1f396dd27e8c73bd59333aef42308920b.zip | |
Fix tests
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 24 | ||||
| -rw-r--r-- | src/libsyntax/parse/token.rs | 12 |
2 files changed, 27 insertions, 9 deletions
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()); } |
