From f745e5f9b676be02cc1dfbab0bfb338dc72b4dd3 Mon Sep 17 00:00:00 2001 From: Vadim Petrochenkov Date: Wed, 5 Jun 2019 11:56:06 +0300 Subject: syntax: Remove duplicate span from `token::Ident` --- src/libsyntax_ext/concat_idents.rs | 4 ++-- src/libsyntax_ext/format.rs | 6 +++--- src/libsyntax_ext/proc_macro_decls.rs | 4 ++-- src/libsyntax_ext/proc_macro_server.rs | 13 ++++++------- 4 files changed, 13 insertions(+), 14 deletions(-) (limited to 'src/libsyntax_ext') diff --git a/src/libsyntax_ext/concat_idents.rs b/src/libsyntax_ext/concat_idents.rs index 59f25af3742..8f061abc77b 100644 --- a/src/libsyntax_ext/concat_idents.rs +++ b/src/libsyntax_ext/concat_idents.rs @@ -38,8 +38,8 @@ pub fn expand_syntax_ext<'cx>(cx: &'cx mut ExtCtxt<'_>, } } else { match *e { - TokenTree::Token(Token { kind: token::Ident(ident, _), .. }) => - res_str.push_str(&ident.as_str()), + TokenTree::Token(Token { kind: token::Ident(name, _), .. }) => + res_str.push_str(&name.as_str()), _ => { cx.span_err(sp, "concat_idents! requires ident args."); return DummyResult::any(sp); diff --git a/src/libsyntax_ext/format.rs b/src/libsyntax_ext/format.rs index 0eaac544e33..c78215b77a9 100644 --- a/src/libsyntax_ext/format.rs +++ b/src/libsyntax_ext/format.rs @@ -149,16 +149,16 @@ fn parse_args<'a>( } // accept trailing commas if named || (p.token.is_ident() && p.look_ahead(1, |t| *t == token::Eq)) { named = true; - let ident = if let token::Ident(i, _) = p.token.kind { + let name = if let token::Ident(name, _) = p.token.kind { p.bump(); - i + name } else { return Err(ecx.struct_span_err( p.span, "expected ident, positional arguments cannot follow named arguments", )); }; - let name: &str = &ident.as_str(); + let name: &str = &name.as_str(); p.expect(&token::Eq)?; let e = p.parse_expr()?; diff --git a/src/libsyntax_ext/proc_macro_decls.rs b/src/libsyntax_ext/proc_macro_decls.rs index de8b689396f..29297aa913e 100644 --- a/src/libsyntax_ext/proc_macro_decls.rs +++ b/src/libsyntax_ext/proc_macro_decls.rs @@ -132,7 +132,7 @@ impl<'a> CollectProcMacros<'a> { } }; - if !trait_ident.can_be_raw() { + if !trait_ident.name.can_be_raw() { self.handler.span_err(trait_attr.span, &format!("`{}` cannot be a name of derive macro", trait_ident)); } @@ -166,7 +166,7 @@ impl<'a> CollectProcMacros<'a> { return None; } }; - if !ident.can_be_raw() { + if !ident.name.can_be_raw() { self.handler.span_err( attr.span, &format!("`{}` cannot be a name of derive helper attribute", ident), diff --git a/src/libsyntax_ext/proc_macro_server.rs b/src/libsyntax_ext/proc_macro_server.rs index 6ab613d2abd..ff2835c70f7 100644 --- a/src/libsyntax_ext/proc_macro_server.rs +++ b/src/libsyntax_ext/proc_macro_server.rs @@ -142,9 +142,8 @@ impl FromInternal<(TreeAndJoint, &'_ ParseSess, &'_ mut Vec)> Question => op!('?'), SingleQuote => op!('\''), - Ident(ident, false) if ident.name == kw::DollarCrate => - tt!(Ident::dollar_crate()), - Ident(ident, is_raw) => tt!(Ident::new(ident.name, is_raw)), + Ident(name, false) if name == kw::DollarCrate => tt!(Ident::dollar_crate()), + Ident(name, is_raw) => tt!(Ident::new(name, is_raw)), Lifetime(name) => { let ident = ast::Ident::new(name, span).without_first_quote(); stack.push(tt!(Ident::new(ident.name, false))); @@ -159,7 +158,7 @@ impl FromInternal<(TreeAndJoint, &'_ ParseSess, &'_ mut Vec)> escaped.extend(ch.escape_debug()); } let stream = vec![ - Ident(ast::Ident::new(sym::doc, span), false), + Ident(sym::doc, false), Eq, TokenKind::lit(token::Str, Symbol::intern(&escaped), None), ] @@ -211,8 +210,7 @@ impl ToInternal for TokenTree { .into(); } TokenTree::Ident(self::Ident { sym, is_raw, span }) => { - let token = Ident(ast::Ident::new(sym, span), is_raw); - return tokenstream::TokenTree::token(span, token).into(); + return tokenstream::TokenTree::token(span, Ident(sym, is_raw)).into(); } TokenTree::Literal(self::Literal { lit: token::Lit { kind: token::Integer, symbol, suffix }, @@ -338,7 +336,8 @@ impl Ident { if !Self::is_valid(&string) { panic!("`{:?}` is not a valid identifier", string) } - if is_raw && !ast::Ident::from_interned_str(sym.as_interned_str()).can_be_raw() { + // Get rid of gensyms to conservatively check rawness on the string contents only. + if is_raw && !sym.as_interned_str().as_symbol().can_be_raw() { panic!("`{}` cannot be a raw identifier", string); } Ident { sym, is_raw, span } -- cgit 1.4.1-3-g733a5