From: Vadim Petrochenkov Date: Sat, 24 Mar 2018 16:49:50 +0000 (+0300) Subject: Make lifetime nonterminals closer to identifier nonterminals X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=bfaf4180ae8f048634d270564692d35f64a9c130;p=rust.git Make lifetime nonterminals closer to identifier nonterminals --- diff --git a/src/libsyntax/ext/tt/macro_parser.rs b/src/libsyntax/ext/tt/macro_parser.rs index cd2fc0eabd0..d9c3deb30da 100644 --- a/src/libsyntax/ext/tt/macro_parser.rs +++ b/src/libsyntax/ext/tt/macro_parser.rs @@ -365,7 +365,7 @@ pub fn parse_failure_msg(tok: Token) -> String { fn token_name_eq(t1: &Token, t2: &Token) -> bool { if let (Some((id1, is_raw1)), Some((id2, is_raw2))) = (t1.ident(), t2.ident()) { id1.name == id2.name && is_raw1 == is_raw2 - } else if let (&token::Lifetime(id1), &token::Lifetime(id2)) = (t1, t2) { + } else if let (Some(id1), Some(id2)) = (t1.lifetime(), t2.lifetime()) { id1.name == id2.name } else { *t1 == *t2 @@ -835,7 +835,7 @@ fn parse_nt<'a>(p: &mut Parser<'a>, sp: Span, name: &str) -> Nonterminal { "path" => token::NtPath(panictry!(p.parse_path_common(PathStyle::Type, false))), "meta" => token::NtMeta(panictry!(p.parse_meta_item())), "vis" => token::NtVis(panictry!(p.parse_visibility(true))), - "lifetime" => token::NtLifetime(p.expect_lifetime()), + "lifetime" => token::NtLifetime(p.expect_lifetime().ident), // this is not supposed to happen, since it has been checked // when compiling the macro. _ => p.span_bug(sp, "invalid fragment specifier"), diff --git a/src/libsyntax/fold.rs b/src/libsyntax/fold.rs index 745ff76de08..e476a0c653e 100644 --- a/src/libsyntax/fold.rs +++ b/src/libsyntax/fold.rs @@ -633,7 +633,8 @@ pub fn noop_fold_interpolated(nt: token::Nonterminal, fld: &mut T) token::NtPat(pat) => token::NtPat(fld.fold_pat(pat)), token::NtExpr(expr) => token::NtExpr(fld.fold_expr(expr)), token::NtTy(ty) => token::NtTy(fld.fold_ty(ty)), - token::NtIdent(id, is_raw) => token::NtIdent(fld.fold_ident(id), is_raw), + token::NtIdent(ident, is_raw) => token::NtIdent(fld.fold_ident(ident), is_raw), + token::NtLifetime(ident) => token::NtLifetime(fld.fold_ident(ident)), token::NtMeta(meta) => token::NtMeta(fld.fold_meta_item(meta)), token::NtPath(path) => token::NtPath(fld.fold_path(path)), token::NtTT(tt) => token::NtTT(fld.fold_tt(tt)), @@ -649,7 +650,6 @@ pub fn noop_fold_interpolated(nt: token::Nonterminal, fld: &mut T) token::NtWhereClause(fld.fold_where_clause(where_clause)), token::NtArg(arg) => token::NtArg(fld.fold_arg(arg)), token::NtVis(vis) => token::NtVis(fld.fold_vis(vis)), - token::NtLifetime(lifetime) => token::NtLifetime(fld.fold_lifetime(lifetime)), token::NtForeignItem(ni) => token::NtForeignItem(fld.fold_foreign_item(ni) // see reasoning above diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 72c1b52ba03..84c770605d5 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -2048,18 +2048,20 @@ fn check_lifetime(&mut self) -> bool { /// Parse single lifetime 'a or panic. pub fn expect_lifetime(&mut self) -> Lifetime { - if let Some(lifetime) = self.token.lifetime2(self.span) { + if let Some(ident) = self.token.lifetime() { + let span = self.span; self.bump(); - lifetime + Lifetime { ident: Ident::new(ident.name, span), id: ast::DUMMY_NODE_ID } } else { self.span_bug(self.span, "not a lifetime") } } fn eat_label(&mut self) -> Option