From d7551dfd03c9d7264cae3eadd58044fd23b43c82 Mon Sep 17 00:00:00 2001 From: Son Date: Tue, 13 Sep 2016 18:02:13 +0800 Subject: [PATCH 1/3] Change hir::Item.name to Spanned --- src/librustc/hir/fold.rs | 6 +++--- src/librustc/hir/intravisit.rs | 6 +++--- src/librustc/hir/lowering.rs | 5 +++-- src/librustc/hir/map/blocks.rs | 2 +- src/librustc/hir/map/def_collector.rs | 4 ++-- src/librustc/hir/map/mod.rs | 6 +++--- src/librustc/hir/mod.rs | 2 +- src/librustc/hir/print.rs | 20 ++++++++++---------- src/librustc/infer/error_reporting.rs | 2 +- src/librustc/middle/dead.rs | 2 +- src/librustc/middle/entry.rs | 2 +- src/librustc/middle/stability.rs | 2 +- src/librustc_lint/bad_style.rs | 12 ++++++------ src/librustc_lint/builtin.rs | 4 ++-- src/librustc_metadata/astencode.rs | 2 +- src/librustc_metadata/encoder.rs | 26 +++++++++++++------------- src/librustc_typeck/check/mod.rs | 4 ++-- src/librustc_typeck/coherence/mod.rs | 2 +- src/librustc_typeck/collect.rs | 6 +++--- src/librustdoc/visit_ast.rs | 2 +- 20 files changed, 59 insertions(+), 58 deletions(-) diff --git a/src/librustc/hir/fold.rs b/src/librustc/hir/fold.rs index 57b5599bd1d7f..3e0a6b8e9da56 100644 --- a/src/librustc/hir/fold.rs +++ b/src/librustc/hir/fold.rs @@ -15,7 +15,7 @@ use hir::*; use syntax::ast::{Name, NodeId, DUMMY_NODE_ID, Attribute, Attribute_}; use syntax::ast::{NestedMetaItem, NestedMetaItemKind, MetaItem, MetaItemKind}; use hir; -use syntax_pos::Span; +use syntax_pos::{DUMMY_SP, Span}; use syntax::codemap::{respan, Spanned}; use syntax::ptr::P; use syntax::parse::token::keywords; @@ -850,7 +850,7 @@ pub fn noop_fold_crate(Crate { module, attrs, config, span, let config = folder.fold_meta_items(config); let crate_mod = folder.fold_item(hir::Item { - name: keywords::Invalid.name(), + name: respan(DUMMY_SP, keywords::Invalid.name()), attrs: attrs, id: DUMMY_NODE_ID, vis: hir::Public, @@ -894,7 +894,7 @@ pub fn noop_fold_item(item: Item, folder: &mut T) -> Item { Item { id: id, - name: folder.fold_name(name), + name: respan(name.span, folder.fold_name(name.node)), attrs: fold_attrs(attrs, folder), node: node, vis: vis, diff --git a/src/librustc/hir/intravisit.rs b/src/librustc/hir/intravisit.rs index f0caa971d9699..afef423b6a015 100644 --- a/src/librustc/hir/intravisit.rs +++ b/src/librustc/hir/intravisit.rs @@ -276,7 +276,7 @@ pub fn walk_trait_ref<'v, V>(visitor: &mut V, trait_ref: &'v TraitRef) pub fn walk_item<'v, V: Visitor<'v>>(visitor: &mut V, item: &'v Item) { visitor.visit_vis(&item.vis); - visitor.visit_name(item.span, item.name); + visitor.visit_name(item.span, item.name.node); match item.node { ItemExternCrate(opt_name) => { visitor.visit_id(item.id); @@ -307,7 +307,7 @@ pub fn walk_item<'v, V: Visitor<'v>>(visitor: &mut V, item: &'v Item) { visitor.visit_expr(expr); } ItemFn(ref declaration, unsafety, constness, abi, ref generics, ref body) => { - visitor.visit_fn(FnKind::ItemFn(item.name, + visitor.visit_fn(FnKind::ItemFn(item.name.node, generics, unsafety, constness, @@ -352,7 +352,7 @@ pub fn walk_item<'v, V: Visitor<'v>>(visitor: &mut V, item: &'v Item) { ItemUnion(ref struct_definition, ref generics) => { visitor.visit_generics(generics); visitor.visit_id(item.id); - visitor.visit_variant_data(struct_definition, item.name, generics, item.id, item.span); + visitor.visit_variant_data(struct_definition, item.name.node, generics, item.id, item.span); } ItemTrait(_, ref generics, ref bounds, ref methods) => { visitor.visit_id(item.id); diff --git a/src/librustc/hir/lowering.rs b/src/librustc/hir/lowering.rs index 80e034721d63f..0bfb68c46926a 100644 --- a/src/librustc/hir/lowering.rs +++ b/src/librustc/hir/lowering.rs @@ -56,7 +56,8 @@ use syntax::codemap::{respan, Spanned}; use syntax::parse::token; use syntax::std_inject; use syntax::visit::{self, Visitor}; -use syntax_pos::Span; +use syntax_pos::{Span, BytePos}; +use syntax::codemap::{spanned}; pub struct LoweringContext<'a> { crate_root: Option<&'static str>, @@ -752,7 +753,7 @@ impl<'a> LoweringContext<'a> { hir::Item { id: i.id, - name: i.ident.name, + name: spanned(BytePos(0), BytePos(0), i.ident.name), attrs: self.lower_attrs(&i.attrs), node: node, vis: self.lower_visibility(&i.vis), diff --git a/src/librustc/hir/map/blocks.rs b/src/librustc/hir/map/blocks.rs index 4487234885692..95738e383d3cb 100644 --- a/src/librustc/hir/map/blocks.rs +++ b/src/librustc/hir/map/blocks.rs @@ -225,7 +225,7 @@ impl<'a> FnLikeNode<'a> { ast::ItemFn(ref decl, unsafety, constness, abi, ref generics, ref block) => item_fn(ItemFnParts { id: i.id, - name: i.name, + name: i.name.node, decl: &decl, unsafety: unsafety, body: &block, diff --git a/src/librustc/hir/map/def_collector.rs b/src/librustc/hir/map/def_collector.rs index 29fb19fd42152..12a4e0b8f4807 100644 --- a/src/librustc/hir/map/def_collector.rs +++ b/src/librustc/hir/map/def_collector.rs @@ -305,9 +305,9 @@ impl<'ast> intravisit::Visitor<'ast> for DefCollector<'ast> { hir::ItemEnum(..) | hir::ItemStruct(..) | hir::ItemUnion(..) | hir::ItemTrait(..) | hir::ItemExternCrate(..) | hir::ItemMod(..) | hir::ItemForeignMod(..) | hir::ItemTy(..) => - DefPathData::TypeNs(i.name.as_str()), + DefPathData::TypeNs(i.name.node.as_str()), hir::ItemStatic(..) | hir::ItemConst(..) | hir::ItemFn(..) => - DefPathData::ValueNs(i.name.as_str()), + DefPathData::ValueNs(i.name.node.as_str()), hir::ItemUse(..) => DefPathData::Misc, }; let def = self.create_def(i.id, def_data); diff --git a/src/librustc/hir/map/mod.rs b/src/librustc/hir/map/mod.rs index 5c302d927a718..ea71f78e83c21 100644 --- a/src/librustc/hir/map/mod.rs +++ b/src/librustc/hir/map/mod.rs @@ -632,7 +632,7 @@ impl<'ast> Map<'ast> { /// Returns the name associated with the given NodeId's AST. pub fn name(&self, id: NodeId) -> Name { match self.get(id) { - NodeItem(i) => i.name, + NodeItem(i) => i.name.node, NodeForeignItem(i) => i.name, NodeImplItem(ii) => ii.name, NodeTraitItem(ti) => ti.name, @@ -770,7 +770,7 @@ impl<'a, 'ast> NodesMatchingSuffix<'a, 'ast> { match map.find(id) { None => return None, Some(NodeItem(item)) if item_is_mod(&item) => - return Some((id, item.name)), + return Some((id, item.name.node)), _ => {} } let parent = map.get_parent(id); @@ -826,7 +826,7 @@ trait Named { impl Named for Spanned { fn name(&self) -> Name { self.node.name() } } -impl Named for Item { fn name(&self) -> Name { self.name } } +impl Named for Item { fn name(&self) -> Name { self.name.node } } impl Named for ForeignItem { fn name(&self) -> Name { self.name } } impl Named for Variant_ { fn name(&self) -> Name { self.name } } impl Named for TraitItem { fn name(&self) -> Name { self.name } } diff --git a/src/librustc/hir/mod.rs b/src/librustc/hir/mod.rs index e22c9869ab176..dc9ce95e5212f 100644 --- a/src/librustc/hir/mod.rs +++ b/src/librustc/hir/mod.rs @@ -1450,7 +1450,7 @@ pub struct ItemId { /// The name might be a dummy name in case of anonymous items #[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)] pub struct Item { - pub name: Name, + pub name: Spanned, pub attrs: HirVec, pub id: NodeId, pub node: Item_, diff --git a/src/librustc/hir/print.rs b/src/librustc/hir/print.rs index f236bd4884d5b..a7e0a54ef993a 100644 --- a/src/librustc/hir/print.rs +++ b/src/librustc/hir/print.rs @@ -662,7 +662,7 @@ impl<'a> State<'a> { word(&mut self.s, "as")?; space(&mut self.s)?; } - self.print_name(item.name)?; + self.print_name(item.name.node)?; word(&mut self.s, ";")?; self.end()?; // end inner head-block self.end()?; // end outer head-block @@ -679,7 +679,7 @@ impl<'a> State<'a> { if m == hir::MutMutable { self.word_space("mut")?; } - self.print_name(item.name)?; + self.print_name(item.name.node)?; self.word_space(":")?; self.print_type(&ty)?; space(&mut self.s)?; @@ -692,7 +692,7 @@ impl<'a> State<'a> { } hir::ItemConst(ref ty, ref expr) => { self.head(&visibility_qualified(&item.vis, "const"))?; - self.print_name(item.name)?; + self.print_name(item.name.node)?; self.word_space(":")?; self.print_type(&ty)?; space(&mut self.s)?; @@ -709,7 +709,7 @@ impl<'a> State<'a> { unsafety, constness, abi, - Some(item.name), + Some(item.name.node), typarams, &item.vis)?; word(&mut self.s, " ")?; @@ -717,7 +717,7 @@ impl<'a> State<'a> { } hir::ItemMod(ref _mod) => { self.head(&visibility_qualified(&item.vis, "mod"))?; - self.print_name(item.name)?; + self.print_name(item.name.node)?; self.nbsp()?; self.bopen()?; self.print_mod(_mod, &item.attrs)?; @@ -734,7 +734,7 @@ impl<'a> State<'a> { self.ibox(indent_unit)?; self.ibox(0)?; self.word_nbsp(&visibility_qualified(&item.vis, "type"))?; - self.print_name(item.name)?; + self.print_name(item.name.node)?; self.print_generics(params)?; self.end()?; // end the inner ibox @@ -746,15 +746,15 @@ impl<'a> State<'a> { self.end()?; // end the outer ibox } hir::ItemEnum(ref enum_definition, ref params) => { - self.print_enum_def(enum_definition, params, item.name, item.span, &item.vis)?; + self.print_enum_def(enum_definition, params, item.name.node, item.span, &item.vis)?; } hir::ItemStruct(ref struct_def, ref generics) => { self.head(&visibility_qualified(&item.vis, "struct"))?; - self.print_struct(struct_def, generics, item.name, item.span, true)?; + self.print_struct(struct_def, generics, item.name.node, item.span, true)?; } hir::ItemUnion(ref struct_def, ref generics) => { self.head(&visibility_qualified(&item.vis, "union"))?; - self.print_struct(struct_def, generics, item.name, item.span, true)?; + self.print_struct(struct_def, generics, item.name.node, item.span, true)?; } hir::ItemDefaultImpl(unsafety, ref trait_ref) => { self.head("")?; @@ -816,7 +816,7 @@ impl<'a> State<'a> { self.print_visibility(&item.vis)?; self.print_unsafety(unsafety)?; self.word_nbsp("trait")?; - self.print_name(item.name)?; + self.print_name(item.name.node)?; self.print_generics(generics)?; let mut real_bounds = Vec::with_capacity(bounds.len()); for b in bounds.iter() { diff --git a/src/librustc/infer/error_reporting.rs b/src/librustc/infer/error_reporting.rs index b8a3bdfcf2573..b797e334d42d4 100644 --- a/src/librustc/infer/error_reporting.rs +++ b/src/librustc/infer/error_reporting.rs @@ -989,7 +989,7 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> { ast_map::NodeItem(ref item) => { match item.node { hir::ItemFn(ref fn_decl, unsafety, constness, _, ref gen, _) => { - Some((fn_decl, gen, unsafety, constness, item.name, item.span)) + Some((fn_decl, gen, unsafety, constness, item.name.node, item.span)) }, _ => None } diff --git a/src/librustc/middle/dead.rs b/src/librustc/middle/dead.rs index 9db6ac1dcefd0..717820cf154fe 100644 --- a/src/librustc/middle/dead.rs +++ b/src/librustc/middle/dead.rs @@ -519,7 +519,7 @@ impl<'a, 'tcx, 'v> Visitor<'v> for DeadVisitor<'a, 'tcx> { self.warn_dead_code( item.id, item.span, - item.name, + item.name.node, item.node.descriptive_variant() ); } else { diff --git a/src/librustc/middle/entry.rs b/src/librustc/middle/entry.rs index 11bde922f47f2..ad7a1d029c528 100644 --- a/src/librustc/middle/entry.rs +++ b/src/librustc/middle/entry.rs @@ -88,7 +88,7 @@ fn entry_point_type(item: &Item, at_root: bool) -> EntryPointType { EntryPointType::Start } else if attr::contains_name(&item.attrs, "main") { EntryPointType::MainAttr - } else if item.name.as_str() == "main" { + } else if item.name.node.as_str() == "main" { if at_root { // This is a top-level function so can be 'main' EntryPointType::MainNamed diff --git a/src/librustc/middle/stability.rs b/src/librustc/middle/stability.rs index 9a56959de38bc..52ff594c50281 100644 --- a/src/librustc/middle/stability.rs +++ b/src/librustc/middle/stability.rs @@ -458,7 +458,7 @@ impl<'a, 'v, 'tcx> Visitor<'v> for Checker<'a, 'tcx> { // When compiling with --test we don't enforce stability on the // compiler-generated test module, demarcated with `DUMMY_SP` plus the // name `__test` - if item.span == DUMMY_SP && item.name.as_str() == "__test" { return } + if item.span == DUMMY_SP && item.name.node.as_str() == "__test" { return } check_item(self.tcx, item, true, &mut |id, sp, stab, depr| self.check(id, sp, stab, depr)); diff --git a/src/librustc_lint/bad_style.rs b/src/librustc_lint/bad_style.rs index 84d65308f952f..3b27bce0a5e55 100644 --- a/src/librustc_lint/bad_style.rs +++ b/src/librustc_lint/bad_style.rs @@ -112,16 +112,16 @@ impl LateLintPass for NonCamelCaseTypes { match it.node { hir::ItemTy(..) | hir::ItemStruct(..) | hir::ItemUnion(..) => { - self.check_case(cx, "type", it.name, it.span) + self.check_case(cx, "type", it.name.node, it.span) } hir::ItemTrait(..) => { - self.check_case(cx, "trait", it.name, it.span) + self.check_case(cx, "trait", it.name.node, it.span) } hir::ItemEnum(ref enum_definition, _) => { if has_extern_repr { return; } - self.check_case(cx, "type", it.name, it.span); + self.check_case(cx, "type", it.name.node, it.span); for variant in &enum_definition.variants { self.check_case(cx, "variant", variant.node.name, variant.span); } @@ -257,7 +257,7 @@ impl LateLintPass for NonSnakeCase { fn check_item(&mut self, cx: &LateContext, it: &hir::Item) { if let hir::ItemMod(_) = it.node { - self.check_snake_case(cx, "module", &it.name.as_str(), Some(it.span)); + self.check_snake_case(cx, "module", &it.name.node.as_str(), Some(it.span)); } } @@ -329,10 +329,10 @@ impl LateLintPass for NonUpperCaseGlobals { match it.node { // only check static constants hir::ItemStatic(_, hir::MutImmutable, _) => { - NonUpperCaseGlobals::check_upper_case(cx, "static constant", it.name, it.span); + NonUpperCaseGlobals::check_upper_case(cx, "static constant", it.name.node, it.span); } hir::ItemConst(..) => { - NonUpperCaseGlobals::check_upper_case(cx, "constant", it.name, it.span); + NonUpperCaseGlobals::check_upper_case(cx, "constant", it.name.node, it.span); } _ => {} } diff --git a/src/librustc_lint/builtin.rs b/src/librustc_lint/builtin.rs index b610a924a3396..d8a196629c99f 100644 --- a/src/librustc_lint/builtin.rs +++ b/src/librustc_lint/builtin.rs @@ -1041,7 +1041,7 @@ impl LateLintPass for InvalidNoMangleItems { if attr::contains_name(&it.attrs, "no_mangle") { if !cx.access_levels.is_reachable(it.id) { let msg = format!("function {} is marked #[no_mangle], but not exported", - it.name); + it.name.node); cx.span_lint(PRIVATE_NO_MANGLE_FNS, it.span, &msg); } if generics.is_parameterized() { @@ -1055,7 +1055,7 @@ impl LateLintPass for InvalidNoMangleItems { if attr::contains_name(&it.attrs, "no_mangle") && !cx.access_levels.is_reachable(it.id) { let msg = format!("static {} is marked #[no_mangle], but not exported", - it.name); + it.name.node); cx.span_lint(PRIVATE_NO_MANGLE_STATICS, it.span, &msg); } }, diff --git a/src/librustc_metadata/astencode.rs b/src/librustc_metadata/astencode.rs index fb7e1c0f7895e..caa5f3510217b 100644 --- a/src/librustc_metadata/astencode.rs +++ b/src/librustc_metadata/astencode.rs @@ -145,7 +145,7 @@ pub fn decode_inlined_item<'a, 'tcx>(cdata: &cstore::CrateMetadata, decode_ast(ast_doc), dcx); let name = match *ii { - InlinedItem::Item(_, ref i) => i.name, + InlinedItem::Item(_, ref i) => i.name.node, InlinedItem::TraitItem(_, ref ti) => ti.name, InlinedItem::ImplItem(_, ref ii) => ii.name }; diff --git a/src/librustc_metadata/encoder.rs b/src/librustc_metadata/encoder.rs index 603b7a483b90c..9b1046d2fbe4d 100644 --- a/src/librustc_metadata/encoder.rs +++ b/src/librustc_metadata/encoder.rs @@ -477,7 +477,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { ty::VariantKind::Unit => 'u', }); self.encode_bounds_and_type_for_item(ctor_node_id); - encode_name(self.rbml_w, item.name); + encode_name(self.rbml_w, item.name.node); self.encode_parent_item(struct_def_id); let stab = ecx.tcx.lookup_stability(ctor_def_id); @@ -909,7 +909,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { encode_family(self.rbml_w, 'c'); } self.encode_bounds_and_type_for_item(item.id); - encode_name(self.rbml_w, item.name); + encode_name(self.rbml_w, item.name.node); self.encode_visibility(vis); encode_stability(self.rbml_w, stab); encode_deprecation(self.rbml_w, depr); @@ -919,7 +919,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { encode_def_id_and_key(ecx, self.rbml_w, def_id); encode_family(self.rbml_w, 'C'); self.encode_bounds_and_type_for_item(item.id); - encode_name(self.rbml_w, item.name); + encode_name(self.rbml_w, item.name.node); encode_attributes(self.rbml_w, &item.attrs); encode_inlined_item(ecx, self.rbml_w, InlinedItemRef::Item(def_id, item)); self.encode_mir(item.id); @@ -932,7 +932,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { encode_family(self.rbml_w, FN_FAMILY); let tps_len = generics.ty_params.len(); self.encode_bounds_and_type_for_item(item.id); - encode_name(self.rbml_w, item.name); + encode_name(self.rbml_w, item.name.node); encode_attributes(self.rbml_w, &item.attrs); let needs_inline = tps_len > 0 || attr::requests_inline(&item.attrs); if constness == hir::Constness::Const { @@ -948,12 +948,12 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { self.encode_method_argument_names(&decl); } hir::ItemMod(ref m) => { - self.encode_info_for_mod(FromId(item.id, (m, &item.attrs, item.name, &item.vis))); + self.encode_info_for_mod(FromId(item.id, (m, &item.attrs, item.name.node, &item.vis))); } hir::ItemForeignMod(ref fm) => { encode_def_id_and_key(ecx, self.rbml_w, def_id); encode_family(self.rbml_w, 'n'); - encode_name(self.rbml_w, item.name); + encode_name(self.rbml_w, item.name.node); // Encode all the items in self module. for foreign_item in &fm.items { @@ -969,7 +969,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { encode_def_id_and_key(ecx, self.rbml_w, def_id); encode_family(self.rbml_w, 'y'); self.encode_bounds_and_type_for_item(item.id); - encode_name(self.rbml_w, item.name); + encode_name(self.rbml_w, item.name.node); self.encode_visibility(vis); encode_stability(self.rbml_w, stab); encode_deprecation(self.rbml_w, depr); @@ -979,7 +979,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { encode_family(self.rbml_w, 't'); encode_item_variances(self.rbml_w, ecx, item.id); self.encode_bounds_and_type_for_item(item.id); - encode_name(self.rbml_w, item.name); + encode_name(self.rbml_w, item.name.node); encode_attributes(self.rbml_w, &item.attrs); self.encode_repr_attrs(&item.attrs); for v in &enum_definition.variants { @@ -1008,7 +1008,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { self.encode_bounds_and_type_for_item(item.id); encode_item_variances(self.rbml_w, ecx, item.id); - encode_name(self.rbml_w, item.name); + encode_name(self.rbml_w, item.name.node); encode_attributes(self.rbml_w, &item.attrs); encode_stability(self.rbml_w, stab); encode_deprecation(self.rbml_w, depr); @@ -1038,7 +1038,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { self.encode_bounds_and_type_for_item(item.id); encode_item_variances(self.rbml_w, ecx, item.id); - encode_name(self.rbml_w, item.name); + encode_name(self.rbml_w, item.name.node); encode_attributes(self.rbml_w, &item.attrs); encode_stability(self.rbml_w, stab); encode_deprecation(self.rbml_w, depr); @@ -1059,7 +1059,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { hir::ItemDefaultImpl(unsafety, _) => { encode_def_id_and_key(ecx, self.rbml_w, def_id); encode_family(self.rbml_w, 'd'); - encode_name(self.rbml_w, item.name); + encode_name(self.rbml_w, item.name.node); encode_unsafety(self.rbml_w, unsafety); let trait_ref = tcx.impl_trait_ref(ecx.tcx.map.local_def_id(item.id)).unwrap(); @@ -1074,7 +1074,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { encode_def_id_and_key(ecx, self.rbml_w, def_id); encode_family(self.rbml_w, 'i'); self.encode_bounds_and_type_for_item(item.id); - encode_name(self.rbml_w, item.name); + encode_name(self.rbml_w, item.name.node); encode_attributes(self.rbml_w, &item.attrs); encode_unsafety(self.rbml_w, unsafety); encode_polarity(self.rbml_w, polarity); @@ -1143,7 +1143,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { self.encode_predicates(&tcx.lookup_super_predicates(def_id), tag_item_super_predicates); encode_trait_ref(self.rbml_w, ecx, trait_def.trait_ref, tag_item_trait_ref); - encode_name(self.rbml_w, item.name); + encode_name(self.rbml_w, item.name.node); encode_attributes(self.rbml_w, &item.attrs); self.encode_visibility(vis); encode_stability(self.rbml_w, stab); diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs index 8598c561fc2e3..3c25096139e7f 100644 --- a/src/librustc_typeck/check/mod.rs +++ b/src/librustc_typeck/check/mod.rs @@ -741,7 +741,7 @@ pub fn check_item_type<'a,'tcx>(ccx: &CrateCtxt<'a,'tcx>, it: &'tcx hir::Item) { } hir::ItemFn(..) => {} // entirely within check_item_body hir::ItemImpl(.., ref impl_items) => { - debug!("ItemImpl {} with id {}", it.name, it.id); + debug!("ItemImpl {} with id {}", it.name.node, it.id); let impl_def_id = ccx.tcx.map.local_def_id(it.id); match ccx.tcx.impl_trait_ref(impl_def_id) { Some(impl_trait_ref) => { @@ -811,7 +811,7 @@ pub fn check_item_body<'a,'tcx>(ccx: &CrateCtxt<'a,'tcx>, it: &'tcx hir::Item) { check_bare_fn(ccx, &decl, &body, it.id); } hir::ItemImpl(.., ref impl_items) => { - debug!("ItemImpl {} with id {}", it.name, it.id); + debug!("ItemImpl {} with id {}", it.name.node, it.id); for impl_item in impl_items { match impl_item.node { diff --git a/src/librustc_typeck/coherence/mod.rs b/src/librustc_typeck/coherence/mod.rs index 26c33c00b9cf9..e15aff0c5d0e1 100644 --- a/src/librustc_typeck/coherence/mod.rs +++ b/src/librustc_typeck/coherence/mod.rs @@ -129,7 +129,7 @@ impl<'a, 'gcx, 'tcx> CoherenceChecker<'a, 'gcx, 'tcx> { if let Some(trait_ref) = self.crate_context.tcx.impl_trait_ref(impl_did) { debug!("(checking implementation) adding impl for trait '{:?}', item '{}'", trait_ref, - item.name); + item.name.node); // Skip impls where one of the self type is an error type. // This occurs with e.g. resolve failures (#30589). diff --git a/src/librustc_typeck/collect.rs b/src/librustc_typeck/collect.rs index 7d111cdc4156f..7833460d3aa3c 100644 --- a/src/librustc_typeck/collect.rs +++ b/src/librustc_typeck/collect.rs @@ -708,7 +708,7 @@ fn ensure_no_ty_param_bounds(ccx: &CrateCtxt, fn convert_item(ccx: &CrateCtxt, it: &hir::Item) { let tcx = ccx.tcx; - debug!("convert: item {} with id {}", it.name, it.id); + debug!("convert: item {} with id {}", it.name.node, it.id); match it.node { // These don't define types. hir::ItemExternCrate(_) | hir::ItemUse(_) | hir::ItemMod(_) => { @@ -1060,7 +1060,7 @@ fn convert_struct_def<'a, 'tcx>(ccx: &CrateCtxt<'a, 'tcx>, let did = ccx.tcx.map.local_def_id(it.id); // Use separate constructor id for unit/tuple structs and reuse did for braced structs. let ctor_id = if !def.is_struct() { Some(ccx.tcx.map.local_def_id(def.id())) } else { None }; - let variants = vec![convert_struct_variant(ccx, ctor_id.unwrap_or(did), it.name, + let variants = vec![convert_struct_variant(ccx, ctor_id.unwrap_or(did), it.name.node, ConstInt::Infer(0), def)]; let adt = ccx.tcx.intern_adt_def(did, AdtKind::Struct, variants); if let Some(ctor_id) = ctor_id { @@ -1076,7 +1076,7 @@ fn convert_union_def<'a, 'tcx>(ccx: &CrateCtxt<'a, 'tcx>, -> ty::AdtDefMaster<'tcx> { let did = ccx.tcx.map.local_def_id(it.id); - let variants = vec![convert_struct_variant(ccx, did, it.name, ConstInt::Infer(0), def)]; + let variants = vec![convert_struct_variant(ccx, did, it.name.node, ConstInt::Infer(0), def)]; ccx.tcx.intern_adt_def(did, AdtKind::Union, variants) } diff --git a/src/librustdoc/visit_ast.rs b/src/librustdoc/visit_ast.rs index 16a6e994b5a0b..07c22cb38a20c 100644 --- a/src/librustdoc/visit_ast.rs +++ b/src/librustdoc/visit_ast.rs @@ -333,7 +333,7 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> { pub fn visit_item(&mut self, item: &hir::Item, renamed: Option, om: &mut Module) { debug!("Visiting item {:?}", item); - let name = renamed.unwrap_or(item.name); + let name = renamed.unwrap_or(item.name.node); match item.node { hir::ItemExternCrate(ref p) => { let cstore = &self.cx.sess().cstore; From 7bd65ff02b30a8a80f694818f60b136426f4fdc7 Mon Sep 17 00:00:00 2001 From: Son Phung Date: Tue, 27 Sep 2016 06:55:54 +1000 Subject: [PATCH 2/3] Revert "Change hir::Item.name to Spanned" This reverts commit d7551dfd03c9d7264cae3eadd58044fd23b43c82. --- src/librustc/hir/fold.rs | 6 +++--- src/librustc/hir/intravisit.rs | 6 +++--- src/librustc/hir/lowering.rs | 5 ++--- src/librustc/hir/map/blocks.rs | 2 +- src/librustc/hir/map/def_collector.rs | 4 ++-- src/librustc/hir/map/mod.rs | 6 +++--- src/librustc/hir/mod.rs | 2 +- src/librustc/hir/print.rs | 20 ++++++++++---------- src/librustc/infer/error_reporting.rs | 2 +- src/librustc/middle/dead.rs | 2 +- src/librustc/middle/entry.rs | 2 +- src/librustc/middle/stability.rs | 2 +- src/librustc_lint/bad_style.rs | 12 ++++++------ src/librustc_lint/builtin.rs | 4 ++-- src/librustc_metadata/astencode.rs | 2 +- src/librustc_metadata/encoder.rs | 26 +++++++++++++------------- src/librustc_typeck/check/mod.rs | 4 ++-- src/librustc_typeck/coherence/mod.rs | 2 +- src/librustc_typeck/collect.rs | 6 +++--- src/librustdoc/visit_ast.rs | 2 +- 20 files changed, 58 insertions(+), 59 deletions(-) diff --git a/src/librustc/hir/fold.rs b/src/librustc/hir/fold.rs index 3e0a6b8e9da56..57b5599bd1d7f 100644 --- a/src/librustc/hir/fold.rs +++ b/src/librustc/hir/fold.rs @@ -15,7 +15,7 @@ use hir::*; use syntax::ast::{Name, NodeId, DUMMY_NODE_ID, Attribute, Attribute_}; use syntax::ast::{NestedMetaItem, NestedMetaItemKind, MetaItem, MetaItemKind}; use hir; -use syntax_pos::{DUMMY_SP, Span}; +use syntax_pos::Span; use syntax::codemap::{respan, Spanned}; use syntax::ptr::P; use syntax::parse::token::keywords; @@ -850,7 +850,7 @@ pub fn noop_fold_crate(Crate { module, attrs, config, span, let config = folder.fold_meta_items(config); let crate_mod = folder.fold_item(hir::Item { - name: respan(DUMMY_SP, keywords::Invalid.name()), + name: keywords::Invalid.name(), attrs: attrs, id: DUMMY_NODE_ID, vis: hir::Public, @@ -894,7 +894,7 @@ pub fn noop_fold_item(item: Item, folder: &mut T) -> Item { Item { id: id, - name: respan(name.span, folder.fold_name(name.node)), + name: folder.fold_name(name), attrs: fold_attrs(attrs, folder), node: node, vis: vis, diff --git a/src/librustc/hir/intravisit.rs b/src/librustc/hir/intravisit.rs index afef423b6a015..f0caa971d9699 100644 --- a/src/librustc/hir/intravisit.rs +++ b/src/librustc/hir/intravisit.rs @@ -276,7 +276,7 @@ pub fn walk_trait_ref<'v, V>(visitor: &mut V, trait_ref: &'v TraitRef) pub fn walk_item<'v, V: Visitor<'v>>(visitor: &mut V, item: &'v Item) { visitor.visit_vis(&item.vis); - visitor.visit_name(item.span, item.name.node); + visitor.visit_name(item.span, item.name); match item.node { ItemExternCrate(opt_name) => { visitor.visit_id(item.id); @@ -307,7 +307,7 @@ pub fn walk_item<'v, V: Visitor<'v>>(visitor: &mut V, item: &'v Item) { visitor.visit_expr(expr); } ItemFn(ref declaration, unsafety, constness, abi, ref generics, ref body) => { - visitor.visit_fn(FnKind::ItemFn(item.name.node, + visitor.visit_fn(FnKind::ItemFn(item.name, generics, unsafety, constness, @@ -352,7 +352,7 @@ pub fn walk_item<'v, V: Visitor<'v>>(visitor: &mut V, item: &'v Item) { ItemUnion(ref struct_definition, ref generics) => { visitor.visit_generics(generics); visitor.visit_id(item.id); - visitor.visit_variant_data(struct_definition, item.name.node, generics, item.id, item.span); + visitor.visit_variant_data(struct_definition, item.name, generics, item.id, item.span); } ItemTrait(_, ref generics, ref bounds, ref methods) => { visitor.visit_id(item.id); diff --git a/src/librustc/hir/lowering.rs b/src/librustc/hir/lowering.rs index 0bfb68c46926a..80e034721d63f 100644 --- a/src/librustc/hir/lowering.rs +++ b/src/librustc/hir/lowering.rs @@ -56,8 +56,7 @@ use syntax::codemap::{respan, Spanned}; use syntax::parse::token; use syntax::std_inject; use syntax::visit::{self, Visitor}; -use syntax_pos::{Span, BytePos}; -use syntax::codemap::{spanned}; +use syntax_pos::Span; pub struct LoweringContext<'a> { crate_root: Option<&'static str>, @@ -753,7 +752,7 @@ impl<'a> LoweringContext<'a> { hir::Item { id: i.id, - name: spanned(BytePos(0), BytePos(0), i.ident.name), + name: i.ident.name, attrs: self.lower_attrs(&i.attrs), node: node, vis: self.lower_visibility(&i.vis), diff --git a/src/librustc/hir/map/blocks.rs b/src/librustc/hir/map/blocks.rs index 95738e383d3cb..4487234885692 100644 --- a/src/librustc/hir/map/blocks.rs +++ b/src/librustc/hir/map/blocks.rs @@ -225,7 +225,7 @@ impl<'a> FnLikeNode<'a> { ast::ItemFn(ref decl, unsafety, constness, abi, ref generics, ref block) => item_fn(ItemFnParts { id: i.id, - name: i.name.node, + name: i.name, decl: &decl, unsafety: unsafety, body: &block, diff --git a/src/librustc/hir/map/def_collector.rs b/src/librustc/hir/map/def_collector.rs index 12a4e0b8f4807..29fb19fd42152 100644 --- a/src/librustc/hir/map/def_collector.rs +++ b/src/librustc/hir/map/def_collector.rs @@ -305,9 +305,9 @@ impl<'ast> intravisit::Visitor<'ast> for DefCollector<'ast> { hir::ItemEnum(..) | hir::ItemStruct(..) | hir::ItemUnion(..) | hir::ItemTrait(..) | hir::ItemExternCrate(..) | hir::ItemMod(..) | hir::ItemForeignMod(..) | hir::ItemTy(..) => - DefPathData::TypeNs(i.name.node.as_str()), + DefPathData::TypeNs(i.name.as_str()), hir::ItemStatic(..) | hir::ItemConst(..) | hir::ItemFn(..) => - DefPathData::ValueNs(i.name.node.as_str()), + DefPathData::ValueNs(i.name.as_str()), hir::ItemUse(..) => DefPathData::Misc, }; let def = self.create_def(i.id, def_data); diff --git a/src/librustc/hir/map/mod.rs b/src/librustc/hir/map/mod.rs index ea71f78e83c21..5c302d927a718 100644 --- a/src/librustc/hir/map/mod.rs +++ b/src/librustc/hir/map/mod.rs @@ -632,7 +632,7 @@ impl<'ast> Map<'ast> { /// Returns the name associated with the given NodeId's AST. pub fn name(&self, id: NodeId) -> Name { match self.get(id) { - NodeItem(i) => i.name.node, + NodeItem(i) => i.name, NodeForeignItem(i) => i.name, NodeImplItem(ii) => ii.name, NodeTraitItem(ti) => ti.name, @@ -770,7 +770,7 @@ impl<'a, 'ast> NodesMatchingSuffix<'a, 'ast> { match map.find(id) { None => return None, Some(NodeItem(item)) if item_is_mod(&item) => - return Some((id, item.name.node)), + return Some((id, item.name)), _ => {} } let parent = map.get_parent(id); @@ -826,7 +826,7 @@ trait Named { impl Named for Spanned { fn name(&self) -> Name { self.node.name() } } -impl Named for Item { fn name(&self) -> Name { self.name.node } } +impl Named for Item { fn name(&self) -> Name { self.name } } impl Named for ForeignItem { fn name(&self) -> Name { self.name } } impl Named for Variant_ { fn name(&self) -> Name { self.name } } impl Named for TraitItem { fn name(&self) -> Name { self.name } } diff --git a/src/librustc/hir/mod.rs b/src/librustc/hir/mod.rs index dc9ce95e5212f..e22c9869ab176 100644 --- a/src/librustc/hir/mod.rs +++ b/src/librustc/hir/mod.rs @@ -1450,7 +1450,7 @@ pub struct ItemId { /// The name might be a dummy name in case of anonymous items #[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)] pub struct Item { - pub name: Spanned, + pub name: Name, pub attrs: HirVec, pub id: NodeId, pub node: Item_, diff --git a/src/librustc/hir/print.rs b/src/librustc/hir/print.rs index a7e0a54ef993a..f236bd4884d5b 100644 --- a/src/librustc/hir/print.rs +++ b/src/librustc/hir/print.rs @@ -662,7 +662,7 @@ impl<'a> State<'a> { word(&mut self.s, "as")?; space(&mut self.s)?; } - self.print_name(item.name.node)?; + self.print_name(item.name)?; word(&mut self.s, ";")?; self.end()?; // end inner head-block self.end()?; // end outer head-block @@ -679,7 +679,7 @@ impl<'a> State<'a> { if m == hir::MutMutable { self.word_space("mut")?; } - self.print_name(item.name.node)?; + self.print_name(item.name)?; self.word_space(":")?; self.print_type(&ty)?; space(&mut self.s)?; @@ -692,7 +692,7 @@ impl<'a> State<'a> { } hir::ItemConst(ref ty, ref expr) => { self.head(&visibility_qualified(&item.vis, "const"))?; - self.print_name(item.name.node)?; + self.print_name(item.name)?; self.word_space(":")?; self.print_type(&ty)?; space(&mut self.s)?; @@ -709,7 +709,7 @@ impl<'a> State<'a> { unsafety, constness, abi, - Some(item.name.node), + Some(item.name), typarams, &item.vis)?; word(&mut self.s, " ")?; @@ -717,7 +717,7 @@ impl<'a> State<'a> { } hir::ItemMod(ref _mod) => { self.head(&visibility_qualified(&item.vis, "mod"))?; - self.print_name(item.name.node)?; + self.print_name(item.name)?; self.nbsp()?; self.bopen()?; self.print_mod(_mod, &item.attrs)?; @@ -734,7 +734,7 @@ impl<'a> State<'a> { self.ibox(indent_unit)?; self.ibox(0)?; self.word_nbsp(&visibility_qualified(&item.vis, "type"))?; - self.print_name(item.name.node)?; + self.print_name(item.name)?; self.print_generics(params)?; self.end()?; // end the inner ibox @@ -746,15 +746,15 @@ impl<'a> State<'a> { self.end()?; // end the outer ibox } hir::ItemEnum(ref enum_definition, ref params) => { - self.print_enum_def(enum_definition, params, item.name.node, item.span, &item.vis)?; + self.print_enum_def(enum_definition, params, item.name, item.span, &item.vis)?; } hir::ItemStruct(ref struct_def, ref generics) => { self.head(&visibility_qualified(&item.vis, "struct"))?; - self.print_struct(struct_def, generics, item.name.node, item.span, true)?; + self.print_struct(struct_def, generics, item.name, item.span, true)?; } hir::ItemUnion(ref struct_def, ref generics) => { self.head(&visibility_qualified(&item.vis, "union"))?; - self.print_struct(struct_def, generics, item.name.node, item.span, true)?; + self.print_struct(struct_def, generics, item.name, item.span, true)?; } hir::ItemDefaultImpl(unsafety, ref trait_ref) => { self.head("")?; @@ -816,7 +816,7 @@ impl<'a> State<'a> { self.print_visibility(&item.vis)?; self.print_unsafety(unsafety)?; self.word_nbsp("trait")?; - self.print_name(item.name.node)?; + self.print_name(item.name)?; self.print_generics(generics)?; let mut real_bounds = Vec::with_capacity(bounds.len()); for b in bounds.iter() { diff --git a/src/librustc/infer/error_reporting.rs b/src/librustc/infer/error_reporting.rs index b797e334d42d4..b8a3bdfcf2573 100644 --- a/src/librustc/infer/error_reporting.rs +++ b/src/librustc/infer/error_reporting.rs @@ -989,7 +989,7 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> { ast_map::NodeItem(ref item) => { match item.node { hir::ItemFn(ref fn_decl, unsafety, constness, _, ref gen, _) => { - Some((fn_decl, gen, unsafety, constness, item.name.node, item.span)) + Some((fn_decl, gen, unsafety, constness, item.name, item.span)) }, _ => None } diff --git a/src/librustc/middle/dead.rs b/src/librustc/middle/dead.rs index 717820cf154fe..9db6ac1dcefd0 100644 --- a/src/librustc/middle/dead.rs +++ b/src/librustc/middle/dead.rs @@ -519,7 +519,7 @@ impl<'a, 'tcx, 'v> Visitor<'v> for DeadVisitor<'a, 'tcx> { self.warn_dead_code( item.id, item.span, - item.name.node, + item.name, item.node.descriptive_variant() ); } else { diff --git a/src/librustc/middle/entry.rs b/src/librustc/middle/entry.rs index ad7a1d029c528..11bde922f47f2 100644 --- a/src/librustc/middle/entry.rs +++ b/src/librustc/middle/entry.rs @@ -88,7 +88,7 @@ fn entry_point_type(item: &Item, at_root: bool) -> EntryPointType { EntryPointType::Start } else if attr::contains_name(&item.attrs, "main") { EntryPointType::MainAttr - } else if item.name.node.as_str() == "main" { + } else if item.name.as_str() == "main" { if at_root { // This is a top-level function so can be 'main' EntryPointType::MainNamed diff --git a/src/librustc/middle/stability.rs b/src/librustc/middle/stability.rs index 52ff594c50281..9a56959de38bc 100644 --- a/src/librustc/middle/stability.rs +++ b/src/librustc/middle/stability.rs @@ -458,7 +458,7 @@ impl<'a, 'v, 'tcx> Visitor<'v> for Checker<'a, 'tcx> { // When compiling with --test we don't enforce stability on the // compiler-generated test module, demarcated with `DUMMY_SP` plus the // name `__test` - if item.span == DUMMY_SP && item.name.node.as_str() == "__test" { return } + if item.span == DUMMY_SP && item.name.as_str() == "__test" { return } check_item(self.tcx, item, true, &mut |id, sp, stab, depr| self.check(id, sp, stab, depr)); diff --git a/src/librustc_lint/bad_style.rs b/src/librustc_lint/bad_style.rs index 3b27bce0a5e55..84d65308f952f 100644 --- a/src/librustc_lint/bad_style.rs +++ b/src/librustc_lint/bad_style.rs @@ -112,16 +112,16 @@ impl LateLintPass for NonCamelCaseTypes { match it.node { hir::ItemTy(..) | hir::ItemStruct(..) | hir::ItemUnion(..) => { - self.check_case(cx, "type", it.name.node, it.span) + self.check_case(cx, "type", it.name, it.span) } hir::ItemTrait(..) => { - self.check_case(cx, "trait", it.name.node, it.span) + self.check_case(cx, "trait", it.name, it.span) } hir::ItemEnum(ref enum_definition, _) => { if has_extern_repr { return; } - self.check_case(cx, "type", it.name.node, it.span); + self.check_case(cx, "type", it.name, it.span); for variant in &enum_definition.variants { self.check_case(cx, "variant", variant.node.name, variant.span); } @@ -257,7 +257,7 @@ impl LateLintPass for NonSnakeCase { fn check_item(&mut self, cx: &LateContext, it: &hir::Item) { if let hir::ItemMod(_) = it.node { - self.check_snake_case(cx, "module", &it.name.node.as_str(), Some(it.span)); + self.check_snake_case(cx, "module", &it.name.as_str(), Some(it.span)); } } @@ -329,10 +329,10 @@ impl LateLintPass for NonUpperCaseGlobals { match it.node { // only check static constants hir::ItemStatic(_, hir::MutImmutable, _) => { - NonUpperCaseGlobals::check_upper_case(cx, "static constant", it.name.node, it.span); + NonUpperCaseGlobals::check_upper_case(cx, "static constant", it.name, it.span); } hir::ItemConst(..) => { - NonUpperCaseGlobals::check_upper_case(cx, "constant", it.name.node, it.span); + NonUpperCaseGlobals::check_upper_case(cx, "constant", it.name, it.span); } _ => {} } diff --git a/src/librustc_lint/builtin.rs b/src/librustc_lint/builtin.rs index d8a196629c99f..b610a924a3396 100644 --- a/src/librustc_lint/builtin.rs +++ b/src/librustc_lint/builtin.rs @@ -1041,7 +1041,7 @@ impl LateLintPass for InvalidNoMangleItems { if attr::contains_name(&it.attrs, "no_mangle") { if !cx.access_levels.is_reachable(it.id) { let msg = format!("function {} is marked #[no_mangle], but not exported", - it.name.node); + it.name); cx.span_lint(PRIVATE_NO_MANGLE_FNS, it.span, &msg); } if generics.is_parameterized() { @@ -1055,7 +1055,7 @@ impl LateLintPass for InvalidNoMangleItems { if attr::contains_name(&it.attrs, "no_mangle") && !cx.access_levels.is_reachable(it.id) { let msg = format!("static {} is marked #[no_mangle], but not exported", - it.name.node); + it.name); cx.span_lint(PRIVATE_NO_MANGLE_STATICS, it.span, &msg); } }, diff --git a/src/librustc_metadata/astencode.rs b/src/librustc_metadata/astencode.rs index caa5f3510217b..fb7e1c0f7895e 100644 --- a/src/librustc_metadata/astencode.rs +++ b/src/librustc_metadata/astencode.rs @@ -145,7 +145,7 @@ pub fn decode_inlined_item<'a, 'tcx>(cdata: &cstore::CrateMetadata, decode_ast(ast_doc), dcx); let name = match *ii { - InlinedItem::Item(_, ref i) => i.name.node, + InlinedItem::Item(_, ref i) => i.name, InlinedItem::TraitItem(_, ref ti) => ti.name, InlinedItem::ImplItem(_, ref ii) => ii.name }; diff --git a/src/librustc_metadata/encoder.rs b/src/librustc_metadata/encoder.rs index 9b1046d2fbe4d..603b7a483b90c 100644 --- a/src/librustc_metadata/encoder.rs +++ b/src/librustc_metadata/encoder.rs @@ -477,7 +477,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { ty::VariantKind::Unit => 'u', }); self.encode_bounds_and_type_for_item(ctor_node_id); - encode_name(self.rbml_w, item.name.node); + encode_name(self.rbml_w, item.name); self.encode_parent_item(struct_def_id); let stab = ecx.tcx.lookup_stability(ctor_def_id); @@ -909,7 +909,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { encode_family(self.rbml_w, 'c'); } self.encode_bounds_and_type_for_item(item.id); - encode_name(self.rbml_w, item.name.node); + encode_name(self.rbml_w, item.name); self.encode_visibility(vis); encode_stability(self.rbml_w, stab); encode_deprecation(self.rbml_w, depr); @@ -919,7 +919,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { encode_def_id_and_key(ecx, self.rbml_w, def_id); encode_family(self.rbml_w, 'C'); self.encode_bounds_and_type_for_item(item.id); - encode_name(self.rbml_w, item.name.node); + encode_name(self.rbml_w, item.name); encode_attributes(self.rbml_w, &item.attrs); encode_inlined_item(ecx, self.rbml_w, InlinedItemRef::Item(def_id, item)); self.encode_mir(item.id); @@ -932,7 +932,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { encode_family(self.rbml_w, FN_FAMILY); let tps_len = generics.ty_params.len(); self.encode_bounds_and_type_for_item(item.id); - encode_name(self.rbml_w, item.name.node); + encode_name(self.rbml_w, item.name); encode_attributes(self.rbml_w, &item.attrs); let needs_inline = tps_len > 0 || attr::requests_inline(&item.attrs); if constness == hir::Constness::Const { @@ -948,12 +948,12 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { self.encode_method_argument_names(&decl); } hir::ItemMod(ref m) => { - self.encode_info_for_mod(FromId(item.id, (m, &item.attrs, item.name.node, &item.vis))); + self.encode_info_for_mod(FromId(item.id, (m, &item.attrs, item.name, &item.vis))); } hir::ItemForeignMod(ref fm) => { encode_def_id_and_key(ecx, self.rbml_w, def_id); encode_family(self.rbml_w, 'n'); - encode_name(self.rbml_w, item.name.node); + encode_name(self.rbml_w, item.name); // Encode all the items in self module. for foreign_item in &fm.items { @@ -969,7 +969,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { encode_def_id_and_key(ecx, self.rbml_w, def_id); encode_family(self.rbml_w, 'y'); self.encode_bounds_and_type_for_item(item.id); - encode_name(self.rbml_w, item.name.node); + encode_name(self.rbml_w, item.name); self.encode_visibility(vis); encode_stability(self.rbml_w, stab); encode_deprecation(self.rbml_w, depr); @@ -979,7 +979,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { encode_family(self.rbml_w, 't'); encode_item_variances(self.rbml_w, ecx, item.id); self.encode_bounds_and_type_for_item(item.id); - encode_name(self.rbml_w, item.name.node); + encode_name(self.rbml_w, item.name); encode_attributes(self.rbml_w, &item.attrs); self.encode_repr_attrs(&item.attrs); for v in &enum_definition.variants { @@ -1008,7 +1008,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { self.encode_bounds_and_type_for_item(item.id); encode_item_variances(self.rbml_w, ecx, item.id); - encode_name(self.rbml_w, item.name.node); + encode_name(self.rbml_w, item.name); encode_attributes(self.rbml_w, &item.attrs); encode_stability(self.rbml_w, stab); encode_deprecation(self.rbml_w, depr); @@ -1038,7 +1038,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { self.encode_bounds_and_type_for_item(item.id); encode_item_variances(self.rbml_w, ecx, item.id); - encode_name(self.rbml_w, item.name.node); + encode_name(self.rbml_w, item.name); encode_attributes(self.rbml_w, &item.attrs); encode_stability(self.rbml_w, stab); encode_deprecation(self.rbml_w, depr); @@ -1059,7 +1059,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { hir::ItemDefaultImpl(unsafety, _) => { encode_def_id_and_key(ecx, self.rbml_w, def_id); encode_family(self.rbml_w, 'd'); - encode_name(self.rbml_w, item.name.node); + encode_name(self.rbml_w, item.name); encode_unsafety(self.rbml_w, unsafety); let trait_ref = tcx.impl_trait_ref(ecx.tcx.map.local_def_id(item.id)).unwrap(); @@ -1074,7 +1074,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { encode_def_id_and_key(ecx, self.rbml_w, def_id); encode_family(self.rbml_w, 'i'); self.encode_bounds_and_type_for_item(item.id); - encode_name(self.rbml_w, item.name.node); + encode_name(self.rbml_w, item.name); encode_attributes(self.rbml_w, &item.attrs); encode_unsafety(self.rbml_w, unsafety); encode_polarity(self.rbml_w, polarity); @@ -1143,7 +1143,7 @@ impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> { self.encode_predicates(&tcx.lookup_super_predicates(def_id), tag_item_super_predicates); encode_trait_ref(self.rbml_w, ecx, trait_def.trait_ref, tag_item_trait_ref); - encode_name(self.rbml_w, item.name.node); + encode_name(self.rbml_w, item.name); encode_attributes(self.rbml_w, &item.attrs); self.encode_visibility(vis); encode_stability(self.rbml_w, stab); diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs index 3c25096139e7f..8598c561fc2e3 100644 --- a/src/librustc_typeck/check/mod.rs +++ b/src/librustc_typeck/check/mod.rs @@ -741,7 +741,7 @@ pub fn check_item_type<'a,'tcx>(ccx: &CrateCtxt<'a,'tcx>, it: &'tcx hir::Item) { } hir::ItemFn(..) => {} // entirely within check_item_body hir::ItemImpl(.., ref impl_items) => { - debug!("ItemImpl {} with id {}", it.name.node, it.id); + debug!("ItemImpl {} with id {}", it.name, it.id); let impl_def_id = ccx.tcx.map.local_def_id(it.id); match ccx.tcx.impl_trait_ref(impl_def_id) { Some(impl_trait_ref) => { @@ -811,7 +811,7 @@ pub fn check_item_body<'a,'tcx>(ccx: &CrateCtxt<'a,'tcx>, it: &'tcx hir::Item) { check_bare_fn(ccx, &decl, &body, it.id); } hir::ItemImpl(.., ref impl_items) => { - debug!("ItemImpl {} with id {}", it.name.node, it.id); + debug!("ItemImpl {} with id {}", it.name, it.id); for impl_item in impl_items { match impl_item.node { diff --git a/src/librustc_typeck/coherence/mod.rs b/src/librustc_typeck/coherence/mod.rs index e15aff0c5d0e1..26c33c00b9cf9 100644 --- a/src/librustc_typeck/coherence/mod.rs +++ b/src/librustc_typeck/coherence/mod.rs @@ -129,7 +129,7 @@ impl<'a, 'gcx, 'tcx> CoherenceChecker<'a, 'gcx, 'tcx> { if let Some(trait_ref) = self.crate_context.tcx.impl_trait_ref(impl_did) { debug!("(checking implementation) adding impl for trait '{:?}', item '{}'", trait_ref, - item.name.node); + item.name); // Skip impls where one of the self type is an error type. // This occurs with e.g. resolve failures (#30589). diff --git a/src/librustc_typeck/collect.rs b/src/librustc_typeck/collect.rs index 7833460d3aa3c..7d111cdc4156f 100644 --- a/src/librustc_typeck/collect.rs +++ b/src/librustc_typeck/collect.rs @@ -708,7 +708,7 @@ fn ensure_no_ty_param_bounds(ccx: &CrateCtxt, fn convert_item(ccx: &CrateCtxt, it: &hir::Item) { let tcx = ccx.tcx; - debug!("convert: item {} with id {}", it.name.node, it.id); + debug!("convert: item {} with id {}", it.name, it.id); match it.node { // These don't define types. hir::ItemExternCrate(_) | hir::ItemUse(_) | hir::ItemMod(_) => { @@ -1060,7 +1060,7 @@ fn convert_struct_def<'a, 'tcx>(ccx: &CrateCtxt<'a, 'tcx>, let did = ccx.tcx.map.local_def_id(it.id); // Use separate constructor id for unit/tuple structs and reuse did for braced structs. let ctor_id = if !def.is_struct() { Some(ccx.tcx.map.local_def_id(def.id())) } else { None }; - let variants = vec![convert_struct_variant(ccx, ctor_id.unwrap_or(did), it.name.node, + let variants = vec![convert_struct_variant(ccx, ctor_id.unwrap_or(did), it.name, ConstInt::Infer(0), def)]; let adt = ccx.tcx.intern_adt_def(did, AdtKind::Struct, variants); if let Some(ctor_id) = ctor_id { @@ -1076,7 +1076,7 @@ fn convert_union_def<'a, 'tcx>(ccx: &CrateCtxt<'a, 'tcx>, -> ty::AdtDefMaster<'tcx> { let did = ccx.tcx.map.local_def_id(it.id); - let variants = vec![convert_struct_variant(ccx, did, it.name.node, ConstInt::Infer(0), def)]; + let variants = vec![convert_struct_variant(ccx, did, it.name, ConstInt::Infer(0), def)]; ccx.tcx.intern_adt_def(did, AdtKind::Union, variants) } diff --git a/src/librustdoc/visit_ast.rs b/src/librustdoc/visit_ast.rs index 07c22cb38a20c..16a6e994b5a0b 100644 --- a/src/librustdoc/visit_ast.rs +++ b/src/librustdoc/visit_ast.rs @@ -333,7 +333,7 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> { pub fn visit_item(&mut self, item: &hir::Item, renamed: Option, om: &mut Module) { debug!("Visiting item {:?}", item); - let name = renamed.unwrap_or(item.name.node); + let name = renamed.unwrap_or(item.name); match item.node { hir::ItemExternCrate(ref p) => { let cstore = &self.cx.sess().cstore; From fdd8301b0ff07f9a9df445c1d20a5b3317092a42 Mon Sep 17 00:00:00 2001 From: Son Date: Thu, 20 Oct 2016 07:37:39 +1100 Subject: [PATCH 3/3] Add span to Ident --- src/libsyntax/ast.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index fcf2d32ded960..b5642a7c0c435 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -42,6 +42,7 @@ pub struct Name(pub u32); #[derive(Clone, Copy, PartialEq, Eq, Hash)] pub struct Ident { pub name: Name, + pub span: Span, pub ctxt: SyntaxContext } @@ -76,8 +77,8 @@ impl Decodable for Name { } impl Ident { - pub const fn with_empty_ctxt(name: Name) -> Ident { - Ident { name: name, ctxt: SyntaxContext::empty() } + pub const fn with_empty_ctxt(name: Name, span: Span) -> Ident { + Ident { name: name, span: span, ctxt: SyntaxContext::empty() } } }