From f0622dfe5d5414c59258d8c2669d26d3dc34a469 Mon Sep 17 00:00:00 2001 From: Vadim Petrochenkov Date: Sun, 10 Jun 2018 22:24:24 +0300 Subject: [PATCH] Use `Ident`s for associated item definitions in HIR Remove emulation of hygiene with gensyms --- src/librustc/hir/intravisit.rs | 22 +++++------ src/librustc/hir/lowering.rs | 22 +++-------- src/librustc/hir/map/blocks.rs | 12 +++--- src/librustc/hir/map/collector.rs | 4 +- src/librustc/hir/map/mod.rs | 16 ++++---- src/librustc/hir/mod.rs | 8 ++-- src/librustc/hir/print.rs | 28 +++++++------- src/librustc/ich/impls_hir.rs | 12 +++--- src/librustc/ich/impls_ty.rs | 2 +- src/librustc/infer/error_reporting/mod.rs | 2 +- src/librustc/middle/dead.rs | 4 +- src/librustc/middle/stability.rs | 3 +- src/librustc/traits/object_safety.rs | 4 +- src/librustc/traits/project.rs | 13 +++---- src/librustc/traits/specialize/mod.rs | 2 +- .../traits/specialize/specialization_graph.rs | 6 +-- src/librustc/ty/mod.rs | 16 ++++---- src/librustc/ty/sty.rs | 2 +- src/librustc/util/ppaux.rs | 4 +- src/librustc_driver/lib.rs | 2 +- src/librustc_lint/bad_style.rs | 8 ++-- src/librustc_lint/builtin.rs | 3 +- src/librustc_metadata/decoder.rs | 2 +- src/librustc_mir/hair/cx/mod.rs | 2 +- src/librustc_mir/monomorphize/collector.rs | 4 +- src/librustc_mir/monomorphize/item.rs | 2 +- src/librustc_resolve/lib.rs | 2 +- src/librustc_save_analysis/dump_visitor.rs | 8 ++-- src/librustc_save_analysis/lib.rs | 5 ++- src/librustc_traits/lowering.rs | 2 +- src/librustc_typeck/astconv.rs | 12 +++--- src/librustc_typeck/check/callee.rs | 8 ++-- src/librustc_typeck/check/compare_method.rs | 24 ++++++------ src/librustc_typeck/check/demand.rs | 2 +- src/librustc_typeck/check/method/mod.rs | 6 +-- src/librustc_typeck/check/method/probe.rs | 8 ++-- src/librustc_typeck/check/method/suggest.rs | 2 +- src/librustc_typeck/check/mod.rs | 38 +++++++++---------- src/librustc_typeck/check/op.rs | 4 +- .../coherence/inherent_impls_overlap.rs | 2 +- src/librustc_typeck/impl_wf_check.rs | 6 +-- src/librustdoc/clean/inline.rs | 2 +- src/librustdoc/clean/mod.rs | 20 +++++----- src/librustdoc/test.rs | 4 +- src/libsyntax_pos/hygiene.rs | 23 +---------- 45 files changed, 176 insertions(+), 207 deletions(-) diff --git a/src/librustc/hir/intravisit.rs b/src/librustc/hir/intravisit.rs index 61583d998940b..f792a24503a3e 100644 --- a/src/librustc/hir/intravisit.rs +++ b/src/librustc/hir/intravisit.rs @@ -57,7 +57,7 @@ pub enum FnKind<'a> { ItemFn(Name, &'a Generics, FnHeader, &'a Visibility, &'a [Attribute]), /// fn foo(&self) - Method(Name, &'a MethodSig, Option<&'a Visibility>, &'a [Attribute]), + Method(Ident, &'a MethodSig, Option<&'a Visibility>, &'a [Attribute]), /// |x, y| {} Closure(&'a [Attribute]), @@ -823,7 +823,7 @@ pub fn walk_fn<'v, V: Visitor<'v>>(visitor: &mut V, } pub fn walk_trait_item<'v, V: Visitor<'v>>(visitor: &mut V, trait_item: &'v TraitItem) { - visitor.visit_name(trait_item.span, trait_item.name); + visitor.visit_ident(trait_item.ident); walk_list!(visitor, visit_attribute, &trait_item.attrs); visitor.visit_generics(&trait_item.generics); match trait_item.node { @@ -840,7 +840,7 @@ pub fn walk_trait_item<'v, V: Visitor<'v>>(visitor: &mut V, trait_item: &'v Trai } } TraitItemKind::Method(ref sig, TraitMethod::Provided(body_id)) => { - visitor.visit_fn(FnKind::Method(trait_item.name, + visitor.visit_fn(FnKind::Method(trait_item.ident, sig, None, &trait_item.attrs), @@ -859,9 +859,9 @@ pub fn walk_trait_item<'v, V: Visitor<'v>>(visitor: &mut V, trait_item: &'v Trai pub fn walk_trait_item_ref<'v, V: Visitor<'v>>(visitor: &mut V, trait_item_ref: &'v TraitItemRef) { // NB: Deliberately force a compilation error if/when new fields are added. - let TraitItemRef { id, name, ref kind, span, ref defaultness } = *trait_item_ref; + let TraitItemRef { id, ident, ref kind, span: _, ref defaultness } = *trait_item_ref; visitor.visit_nested_trait_item(id); - visitor.visit_name(span, name); + visitor.visit_ident(ident); visitor.visit_associated_item_kind(kind); visitor.visit_defaultness(defaultness); } @@ -871,16 +871,16 @@ pub fn walk_impl_item<'v, V: Visitor<'v>>(visitor: &mut V, impl_item: &'v ImplIt let ImplItem { id: _, hir_id: _, - name, + ident, ref vis, ref defaultness, ref attrs, ref generics, ref node, - span + span: _, } = *impl_item; - visitor.visit_name(span, name); + visitor.visit_ident(ident); visitor.visit_vis(vis); visitor.visit_defaultness(defaultness); walk_list!(visitor, visit_attribute, attrs); @@ -892,7 +892,7 @@ pub fn walk_impl_item<'v, V: Visitor<'v>>(visitor: &mut V, impl_item: &'v ImplIt visitor.visit_nested_body(body); } ImplItemKind::Method(ref sig, body_id) => { - visitor.visit_fn(FnKind::Method(impl_item.name, + visitor.visit_fn(FnKind::Method(impl_item.ident, sig, Some(&impl_item.vis), &impl_item.attrs), @@ -910,9 +910,9 @@ pub fn walk_impl_item<'v, V: Visitor<'v>>(visitor: &mut V, impl_item: &'v ImplIt pub fn walk_impl_item_ref<'v, V: Visitor<'v>>(visitor: &mut V, impl_item_ref: &'v ImplItemRef) { // NB: Deliberately force a compilation error if/when new fields are added. - let ImplItemRef { id, name, ref kind, span, ref vis, ref defaultness } = *impl_item_ref; + let ImplItemRef { id, ident, ref kind, span: _, ref vis, ref defaultness } = *impl_item_ref; visitor.visit_nested_impl_item(id); - visitor.visit_name(span, name); + visitor.visit_ident(ident); visitor.visit_associated_item_kind(kind); visitor.visit_vis(vis); visitor.visit_defaultness(defaultness); diff --git a/src/librustc/hir/lowering.rs b/src/librustc/hir/lowering.rs index 49675f6dc080d..96f247f90d153 100644 --- a/src/librustc/hir/lowering.rs +++ b/src/librustc/hir/lowering.rs @@ -52,7 +52,7 @@ use middle::cstore::CrateStore; use rustc_data_structures::indexed_vec::IndexVec; use session::Session; use util::common::FN_OUTPUT_NAME; -use util::nodemap::{DefIdMap, FxHashMap, NodeMap}; +use util::nodemap::{DefIdMap, NodeMap}; use std::collections::{BTreeMap, HashSet}; use std::fmt::Debug; @@ -85,7 +85,6 @@ pub struct LoweringContext<'a> { cstore: &'a CrateStore, resolver: &'a mut Resolver, - name_map: FxHashMap, /// The items being lowered are collected here. items: BTreeMap, @@ -210,7 +209,6 @@ pub fn lower_crate( sess, cstore, resolver, - name_map: FxHashMap(), items: BTreeMap::new(), trait_items: BTreeMap::new(), impl_items: BTreeMap::new(), @@ -957,16 +955,6 @@ impl<'a> LoweringContext<'a> { } } - fn lower_ident(&mut self, ident: Ident) -> Name { - let ident = ident.modern(); - if ident.span.ctxt() == SyntaxContext::empty() { - return ident.name; - } - *self.name_map - .entry(ident) - .or_insert_with(|| Symbol::from_ident(ident)) - } - fn lower_label(&mut self, label: Option