Navigation Menu

Skip to content

Commit

Permalink
Avoid some unnecessary symbol interner operations
Browse files Browse the repository at this point in the history
  • Loading branch information
matthewjasper committed Jun 14, 2019
1 parent 8e948df commit 4e212c6
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 28 deletions.
4 changes: 2 additions & 2 deletions src/librustc_resolve/build_reduced_graph.rs
Expand Up @@ -305,7 +305,7 @@ impl<'a> Resolver<'a> {
}

// Empty groups `a::b::{}` are turned into synthetic `self` imports
// `a::b::c::{self as __dummy}`, so that their prefixes are correctly
// `a::b::c::{self as _}`, so that their prefixes are correctly
// resolved and checked for privacy/stability/etc.
if items.is_empty() && !empty_for_self(&prefix) {
let new_span = prefix[prefix.len() - 1].ident.span;
Expand All @@ -314,7 +314,7 @@ impl<'a> Resolver<'a> {
Ident::new(kw::SelfLower, new_span)
),
kind: ast::UseTreeKind::Simple(
Some(Ident::from_str_and_span("__dummy", new_span).gensym()),
Some(Ident::new(kw::Underscore, new_span)),
ast::DUMMY_NODE_ID,
ast::DUMMY_NODE_ID,
),
Expand Down
14 changes: 1 addition & 13 deletions src/libsyntax/diagnostics/plugin.rs
Expand Up @@ -121,19 +121,7 @@ pub fn expand_register_diagnostic<'cx>(ecx: &'cx mut ExtCtxt<'_>,
}
});

let span = span.apply_mark(ecx.current_expansion.mark);

let name = Ident::from_str_and_span(&format!("__register_diagnostic_{}", code), span).gensym();

MacEager::items(smallvec![
ecx.item_mod(
span,
span,
name,
vec![],
vec![],
)
])
MacEager::items(smallvec![])
}

#[allow(deprecated)]
Expand Down
22 changes: 11 additions & 11 deletions src/libsyntax/ext/tt/macro_rules.rs
Expand Up @@ -249,8 +249,9 @@ pub fn compile(
def: &ast::Item,
edition: Edition
) -> SyntaxExtension {
let lhs_nm = ast::Ident::from_str("lhs").gensym();
let rhs_nm = ast::Ident::from_str("rhs").gensym();
let lhs_nm = ast::Ident::new(sym::lhs, def.span);
let rhs_nm = ast::Ident::new(sym::rhs, def.span);
let tt_spec = ast::Ident::new(sym::tt, def.span);

// Parse the macro_rules! invocation
let body = match def.node {
Expand All @@ -266,9 +267,9 @@ pub fn compile(
let argument_gram = vec![
quoted::TokenTree::Sequence(DelimSpan::dummy(), Lrc::new(quoted::SequenceRepetition {
tts: vec![
quoted::TokenTree::MetaVarDecl(def.span, lhs_nm, ast::Ident::from_str("tt")),
quoted::TokenTree::MetaVarDecl(def.span, lhs_nm, tt_spec),
quoted::TokenTree::token(token::FatArrow, def.span),
quoted::TokenTree::MetaVarDecl(def.span, rhs_nm, ast::Ident::from_str("tt")),
quoted::TokenTree::MetaVarDecl(def.span, rhs_nm, tt_spec),
],
separator: Some(Token::new(
if body.legacy { token::Semi } else { token::Comma }, def.span
Expand Down Expand Up @@ -1115,10 +1116,9 @@ fn has_legal_fragment_specifier(sess: &ParseSess,
tok: &quoted::TokenTree) -> Result<(), String> {
debug!("has_legal_fragment_specifier({:?})", tok);
if let quoted::TokenTree::MetaVarDecl(_, _, ref frag_spec) = *tok {
let frag_name = frag_spec.as_str();
let frag_span = tok.span();
if !is_legal_fragment_specifier(sess, features, attrs, &frag_name, frag_span) {
return Err(frag_name.to_string());
if !is_legal_fragment_specifier(sess, features, attrs, frag_spec.name, frag_span) {
return Err(frag_spec.to_string());
}
}
Ok(())
Expand All @@ -1127,7 +1127,7 @@ fn has_legal_fragment_specifier(sess: &ParseSess,
fn is_legal_fragment_specifier(_sess: &ParseSess,
_features: &Features,
_attrs: &[ast::Attribute],
frag_name: &str,
frag_name: Symbol,
_frag_span: Span) -> bool {
/*
* If new fragment specifiers are invented in nightly, `_sess`,
Expand All @@ -1136,9 +1136,9 @@ fn is_legal_fragment_specifier(_sess: &ParseSess,
* this function.
*/
match frag_name {
"item" | "block" | "stmt" | "expr" | "pat" | "lifetime" |
"path" | "ty" | "ident" | "meta" | "tt" | "vis" | "literal" |
"" => true,
sym::item | sym::block | sym::stmt | sym::expr | sym::pat |
sym::lifetime | sym::path | sym::ty | sym::ident | sym::meta | sym::tt |
sym::vis | sym::literal | kw::Invalid => true,
_ => false,
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/libsyntax/test.rs
Expand Up @@ -327,7 +327,7 @@ fn mk_main(cx: &mut TestCtxt<'_>) -> P<ast::Item> {
// }
let sp = ignored_span(cx, DUMMY_SP);
let ecx = &cx.ext_cx;
let test_id = ecx.ident_of("test").gensym();
let test_id = Ident::with_empty_ctxt(sym::test);

// test::test_main_static(...)
let mut test_runner = cx.test_runner.clone().unwrap_or(
Expand All @@ -350,7 +350,7 @@ fn mk_main(cx: &mut TestCtxt<'_>) -> P<ast::Item> {
let test_extern_stmt = ecx.stmt_item(sp, ecx.item(sp,
test_id,
vec![],
ast::ItemKind::ExternCrate(Some(sym::test))
ast::ItemKind::ExternCrate(None)
));

// pub fn main() { ... }
Expand Down
2 changes: 2 additions & 0 deletions src/libsyntax_pos/symbol.rs
Expand Up @@ -347,6 +347,7 @@ symbols! {
label_break_value,
lang,
lang_items,
lhs,
lib,
lifetime,
link,
Expand Down Expand Up @@ -505,6 +506,7 @@ symbols! {
result,
Result,
Return,
rhs,
rlib,
rt,
rtm_target_feature,
Expand Down

0 comments on commit 4e212c6

Please sign in to comment.