Skip to content

Commit 8a383b1

Browse files
committed
Replace Name and Symbol with Spanned<Name> and Spanned<Symbol>
As per nagisa's review comment. WIP.
1 parent 3e1608c commit 8a383b1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+254
-207
lines changed

src/librustc/hir/intravisit.rs

+7-3
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ pub fn walk_trait_ref<'v, V>(visitor: &mut V, trait_ref: &'v TraitRef)
411411

412412
pub fn walk_item<'v, V: Visitor<'v>>(visitor: &mut V, item: &'v Item) {
413413
visitor.visit_vis(&item.vis);
414-
visitor.visit_name(item.span, item.name);
414+
visitor.visit_name(item.span, item.name.node);
415415
match item.node {
416416
ItemExternCrate(opt_name) => {
417417
visitor.visit_id(item.id);
@@ -428,7 +428,7 @@ pub fn walk_item<'v, V: Visitor<'v>>(visitor: &mut V, item: &'v Item) {
428428
visitor.visit_expr(expr);
429429
}
430430
ItemFn(ref declaration, unsafety, constness, abi, ref generics, body_id) => {
431-
visitor.visit_fn(FnKind::ItemFn(item.name,
431+
visitor.visit_fn(FnKind::ItemFn(item.name.node,
432432
generics,
433433
unsafety,
434434
constness,
@@ -475,7 +475,11 @@ pub fn walk_item<'v, V: Visitor<'v>>(visitor: &mut V, item: &'v Item) {
475475
ItemUnion(ref struct_definition, ref generics) => {
476476
visitor.visit_generics(generics);
477477
visitor.visit_id(item.id);
478-
visitor.visit_variant_data(struct_definition, item.name, generics, item.id, item.span);
478+
visitor.visit_variant_data(struct_definition,
479+
item.name.node,
480+
generics,
481+
item.id,
482+
item.span);
479483
}
480484
ItemTrait(_, ref generics, ref bounds, ref methods) => {
481485
visitor.visit_id(item.id);

src/librustc/hir/lowering.rs

+8-8
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ use std::mem;
5656
use syntax::ast::*;
5757
use syntax::errors;
5858
use syntax::ptr::P;
59-
use syntax::codemap::{self, respan, Spanned};
59+
use syntax::codemap::{self, dummy_spanned, respan, Spanned};
6060
use syntax::std_inject;
6161
use syntax::symbol::{Symbol, keywords};
6262
use syntax::util::small_vector::SmallVector;
@@ -314,7 +314,7 @@ impl<'a> LoweringContext<'a> {
314314
fn lower_variant(&mut self, v: &Variant) -> hir::Variant {
315315
Spanned {
316316
node: hir::Variant_ {
317-
name: v.node.name.name,
317+
name: v.node.name.node.name,
318318
attrs: self.lower_attrs(&v.node.attrs),
319319
data: self.lower_variant_data(&v.node.data),
320320
disr_expr: v.node.disr_expr.as_ref().map(|e| P(self.lower_expr(e))),
@@ -798,7 +798,7 @@ impl<'a> LoweringContext<'a> {
798798
path.span = span;
799799
self.items.insert(import.id, hir::Item {
800800
id: import.id,
801-
name: import.rename.unwrap_or(ident).name,
801+
name: dummy_spanned(import.rename.unwrap_or(ident).name),
802802
attrs: attrs.clone(),
803803
node: hir::ItemUse(P(path), hir::UseKind::Single),
804804
vis: vis.clone(),
@@ -900,7 +900,7 @@ impl<'a> LoweringContext<'a> {
900900
self.with_parent_def(i.id, |this| {
901901
hir::TraitItem {
902902
id: i.id,
903-
name: i.ident.name,
903+
name: i.ident.node.name,
904904
attrs: this.lower_attrs(&i.attrs),
905905
node: match i.node {
906906
TraitItemKind::Const(ref ty, ref default) => {
@@ -930,7 +930,7 @@ impl<'a> LoweringContext<'a> {
930930
self.with_parent_def(i.id, |this| {
931931
hir::ImplItem {
932932
id: i.id,
933-
name: i.ident.name,
933+
name: i.ident.node.name,
934934
attrs: this.lower_attrs(&i.attrs),
935935
vis: this.lower_visibility(&i.vis),
936936
defaultness: this.lower_defaultness(i.defaultness, true /* [1] */),
@@ -957,7 +957,7 @@ impl<'a> LoweringContext<'a> {
957957
fn lower_impl_item_ref(&mut self, i: &ImplItem) -> hir::ImplItemRef {
958958
hir::ImplItemRef {
959959
id: hir::ImplItemId { node_id: i.id },
960-
name: i.ident.name,
960+
name: i.ident.node.name,
961961
span: i.span,
962962
vis: self.lower_visibility(&i.vis),
963963
defaultness: self.lower_defaultness(i.defaultness, true /* [1] */),
@@ -1004,11 +1004,11 @@ impl<'a> LoweringContext<'a> {
10041004
}
10051005

10061006
pub fn lower_item(&mut self, i: &Item) -> hir::Item {
1007-
let mut name = i.ident.name;
1007+
let mut name = i.spanned_symbol();
10081008
let attrs = self.lower_attrs(&i.attrs);
10091009
let mut vis = self.lower_visibility(&i.vis);
10101010
let node = self.with_parent_def(i.id, |this| {
1011-
this.lower_item_kind(i.id, &mut name, &attrs, &mut vis, &i.node)
1011+
this.lower_item_kind(i.id, &mut name.node, &attrs, &mut vis, &i.node)
10121012
});
10131013

10141014
hir::Item {

src/librustc/hir/map/blocks.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ use hir::{Expr, FnDecl};
2727
use hir::intravisit::FnKind;
2828
use syntax::abi;
2929
use syntax::ast::{Attribute, Name, NodeId};
30+
use syntax::codemap::Spanned;
3031
use syntax_pos::Span;
3132

3233
/// An FnLikeNode is a Node that is like a fn, in that it has a decl
@@ -108,7 +109,7 @@ impl<'a> Code<'a> {
108109
/// These are all the components one can extract from a fn item for
109110
/// use when implementing FnLikeNode operations.
110111
struct ItemFnParts<'a> {
111-
name: Name,
112+
name: Spanned<Name>,
112113
decl: &'a ast::FnDecl,
113114
unsafety: ast::Unsafety,
114115
constness: ast::Constness,
@@ -210,7 +211,7 @@ impl<'a> FnLikeNode<'a> {
210211

211212
pub fn kind(self) -> FnKind<'a> {
212213
let item = |p: ItemFnParts<'a>| -> FnKind<'a> {
213-
FnKind::ItemFn(p.name, p.generics, p.unsafety, p.constness, p.abi, p.vis, p.attrs)
214+
FnKind::ItemFn(p.name.node, p.generics, p.unsafety, p.constness, p.abi, p.vis, p.attrs)
214215
};
215216
let closure = |c: ClosureParts<'a>| {
216217
FnKind::Closure(c.attrs)

src/librustc/hir/map/def_collector.rs

+13-13
Original file line numberDiff line numberDiff line change
@@ -146,13 +146,13 @@ impl<'a> visit::Visitor<'a> for DefCollector<'a> {
146146
DefPathData::Impl,
147147
ItemKind::Enum(..) | ItemKind::Struct(..) | ItemKind::Union(..) | ItemKind::Trait(..) |
148148
ItemKind::ExternCrate(..) | ItemKind::ForeignMod(..) | ItemKind::Ty(..) =>
149-
DefPathData::TypeNs(i.ident.name.as_str()),
150-
ItemKind::Mod(..) if i.ident == keywords::Invalid.ident() => {
149+
DefPathData::TypeNs(i.ident.node.name.as_str()),
150+
ItemKind::Mod(..) if i.ident.node == keywords::Invalid.ident() => {
151151
return visit::walk_item(self, i);
152152
}
153-
ItemKind::Mod(..) => DefPathData::Module(i.ident.name.as_str()),
153+
ItemKind::Mod(..) => DefPathData::Module(i.ident.node.name.as_str()),
154154
ItemKind::Static(..) | ItemKind::Const(..) | ItemKind::Fn(..) =>
155-
DefPathData::ValueNs(i.ident.name.as_str()),
155+
DefPathData::ValueNs(i.ident.node.name.as_str()),
156156
ItemKind::Mac(..) if i.id == DUMMY_NODE_ID => return, // Scope placeholder
157157
ItemKind::Mac(..) => return self.visit_macro_invoc(i.id, false),
158158
ItemKind::Use(ref view_path) => {
@@ -176,9 +176,9 @@ impl<'a> visit::Visitor<'a> for DefCollector<'a> {
176176
match i.node {
177177
ItemKind::Enum(ref enum_definition, _) => {
178178
for v in &enum_definition.variants {
179-
let variant_def_index =
180-
this.create_def(v.node.data.id(),
181-
DefPathData::EnumVariant(v.node.name.name.as_str()));
179+
let variant_def_index = this.create_def(
180+
v.node.data.id(),
181+
DefPathData::EnumVariant(v.node.name.node.name.as_str()));
182182
this.with_parent(variant_def_index, |this| {
183183
for (index, field) in v.node.data.fields().iter().enumerate() {
184184
let name = field.ident.map(|ident| ident.name)
@@ -231,8 +231,8 @@ impl<'a> visit::Visitor<'a> for DefCollector<'a> {
231231
fn visit_trait_item(&mut self, ti: &'a TraitItem) {
232232
let def_data = match ti.node {
233233
TraitItemKind::Method(..) | TraitItemKind::Const(..) =>
234-
DefPathData::ValueNs(ti.ident.name.as_str()),
235-
TraitItemKind::Type(..) => DefPathData::TypeNs(ti.ident.name.as_str()),
234+
DefPathData::ValueNs(ti.ident.node.name.as_str()),
235+
TraitItemKind::Type(..) => DefPathData::TypeNs(ti.ident.node.name.as_str()),
236236
TraitItemKind::Macro(..) => return self.visit_macro_invoc(ti.id, false),
237237
};
238238

@@ -249,8 +249,8 @@ impl<'a> visit::Visitor<'a> for DefCollector<'a> {
249249
fn visit_impl_item(&mut self, ii: &'a ImplItem) {
250250
let def_data = match ii.node {
251251
ImplItemKind::Method(..) | ImplItemKind::Const(..) =>
252-
DefPathData::ValueNs(ii.ident.name.as_str()),
253-
ImplItemKind::Type(..) => DefPathData::TypeNs(ii.ident.name.as_str()),
252+
DefPathData::ValueNs(ii.ident.node.name.as_str()),
253+
ImplItemKind::Type(..) => DefPathData::TypeNs(ii.ident.node.name.as_str()),
254254
ImplItemKind::Macro(..) => return self.visit_macro_invoc(ii.id, false),
255255
};
256256

@@ -349,9 +349,9 @@ impl<'ast> Visitor<'ast> for DefCollector<'ast> {
349349
hir::ItemEnum(..) | hir::ItemStruct(..) | hir::ItemUnion(..) |
350350
hir::ItemTrait(..) | hir::ItemExternCrate(..) | hir::ItemMod(..) |
351351
hir::ItemForeignMod(..) | hir::ItemTy(..) =>
352-
DefPathData::TypeNs(i.name.as_str()),
352+
DefPathData::TypeNs(i.name.node.as_str()),
353353
hir::ItemStatic(..) | hir::ItemConst(..) | hir::ItemFn(..) =>
354-
DefPathData::ValueNs(i.name.as_str()),
354+
DefPathData::ValueNs(i.name.node.as_str()),
355355
hir::ItemUse(..) => DefPathData::Misc,
356356
};
357357
let def = self.create_def(i.id, def_data);

src/librustc/hir/map/mod.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -707,7 +707,7 @@ impl<'ast> Map<'ast> {
707707
/// Returns the name associated with the given NodeId's AST.
708708
pub fn name(&self, id: NodeId) -> Name {
709709
match self.get(id) {
710-
NodeItem(i) => i.name,
710+
NodeItem(i) => i.name.node,
711711
NodeForeignItem(i) => i.name,
712712
NodeImplItem(ii) => ii.name,
713713
NodeTraitItem(ti) => ti.name,
@@ -764,7 +764,7 @@ impl<'ast> Map<'ast> {
764764
pub fn span(&self, id: NodeId) -> Span {
765765
self.read(id); // reveals span from node
766766
match self.find_entry(id) {
767-
Some(EntryItem(_, item)) => item.span,
767+
Some(EntryItem(_, item)) => item.name.span,
768768
Some(EntryForeignItem(_, foreign_item)) => foreign_item.span,
769769
Some(EntryTraitItem(_, trait_method)) => trait_method.span,
770770
Some(EntryImplItem(_, impl_item)) => impl_item.span,
@@ -843,7 +843,7 @@ impl<'a, 'ast> NodesMatchingSuffix<'a, 'ast> {
843843
match map.find(id) {
844844
None => return None,
845845
Some(NodeItem(item)) if item_is_mod(&item) =>
846-
return Some((id, item.name)),
846+
return Some((id, item.name.node)),
847847
_ => {}
848848
}
849849
let parent = map.get_parent(id);
@@ -899,7 +899,7 @@ trait Named {
899899

900900
impl<T:Named> Named for Spanned<T> { fn name(&self) -> Name { self.node.name() } }
901901

902-
impl Named for Item { fn name(&self) -> Name { self.name } }
902+
impl Named for Item { fn name(&self) -> Name { self.name.node } }
903903
impl Named for ForeignItem { fn name(&self) -> Name { self.name } }
904904
impl Named for Variant_ { fn name(&self) -> Name { self.name } }
905905
impl Named for StructField { fn name(&self) -> Name { self.name } }

src/librustc/hir/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1540,7 +1540,7 @@ pub struct ItemId {
15401540
/// The name might be a dummy name in case of anonymous items
15411541
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
15421542
pub struct Item {
1543-
pub name: Name,
1543+
pub name: Spanned<Name>,
15441544
pub attrs: HirVec<Attribute>,
15451545
pub id: NodeId,
15461546
pub node: Item_,

src/librustc/hir/print.rs

+12-12
Original file line numberDiff line numberDiff line change
@@ -673,7 +673,7 @@ impl<'a> State<'a> {
673673
word(&mut self.s, "as")?;
674674
space(&mut self.s)?;
675675
}
676-
self.print_name(item.name)?;
676+
self.print_name(item.name.node)?;
677677
word(&mut self.s, ";")?;
678678
self.end()?; // end inner head-block
679679
self.end()?; // end outer head-block
@@ -684,10 +684,10 @@ impl<'a> State<'a> {
684684

685685
match kind {
686686
hir::UseKind::Single => {
687-
if path.segments.last().unwrap().name != item.name {
687+
if path.segments.last().unwrap().name != item.name.node {
688688
space(&mut self.s)?;
689689
self.word_space("as")?;
690-
self.print_name(item.name)?;
690+
self.print_name(item.name.node)?;
691691
}
692692
word(&mut self.s, ";")?;
693693
}
@@ -702,7 +702,7 @@ impl<'a> State<'a> {
702702
if m == hir::MutMutable {
703703
self.word_space("mut")?;
704704
}
705-
self.print_name(item.name)?;
705+
self.print_name(item.name.node)?;
706706
self.word_space(":")?;
707707
self.print_type(&ty)?;
708708
space(&mut self.s)?;
@@ -715,7 +715,7 @@ impl<'a> State<'a> {
715715
}
716716
hir::ItemConst(ref ty, ref expr) => {
717717
self.head(&visibility_qualified(&item.vis, "const"))?;
718-
self.print_name(item.name)?;
718+
self.print_name(item.name.node)?;
719719
self.word_space(":")?;
720720
self.print_type(&ty)?;
721721
space(&mut self.s)?;
@@ -732,7 +732,7 @@ impl<'a> State<'a> {
732732
unsafety,
733733
constness,
734734
abi,
735-
Some(item.name),
735+
Some(item.name.node),
736736
typarams,
737737
&item.vis)?;
738738
word(&mut self.s, " ")?;
@@ -742,7 +742,7 @@ impl<'a> State<'a> {
742742
}
743743
hir::ItemMod(ref _mod) => {
744744
self.head(&visibility_qualified(&item.vis, "mod"))?;
745-
self.print_name(item.name)?;
745+
self.print_name(item.name.node)?;
746746
self.nbsp()?;
747747
self.bopen()?;
748748
self.print_mod(_mod, &item.attrs)?;
@@ -759,7 +759,7 @@ impl<'a> State<'a> {
759759
self.ibox(indent_unit)?;
760760
self.ibox(0)?;
761761
self.word_nbsp(&visibility_qualified(&item.vis, "type"))?;
762-
self.print_name(item.name)?;
762+
self.print_name(item.name.node)?;
763763
self.print_generics(params)?;
764764
self.end()?; // end the inner ibox
765765

@@ -771,15 +771,15 @@ impl<'a> State<'a> {
771771
self.end()?; // end the outer ibox
772772
}
773773
hir::ItemEnum(ref enum_definition, ref params) => {
774-
self.print_enum_def(enum_definition, params, item.name, item.span, &item.vis)?;
774+
self.print_enum_def(enum_definition, params, item.name.node, item.span, &item.vis)?;
775775
}
776776
hir::ItemStruct(ref struct_def, ref generics) => {
777777
self.head(&visibility_qualified(&item.vis, "struct"))?;
778-
self.print_struct(struct_def, generics, item.name, item.span, true)?;
778+
self.print_struct(struct_def, generics, item.name.node, item.span, true)?;
779779
}
780780
hir::ItemUnion(ref struct_def, ref generics) => {
781781
self.head(&visibility_qualified(&item.vis, "union"))?;
782-
self.print_struct(struct_def, generics, item.name, item.span, true)?;
782+
self.print_struct(struct_def, generics, item.name.node, item.span, true)?;
783783
}
784784
hir::ItemDefaultImpl(unsafety, ref trait_ref) => {
785785
self.head("")?;
@@ -841,7 +841,7 @@ impl<'a> State<'a> {
841841
self.print_visibility(&item.vis)?;
842842
self.print_unsafety(unsafety)?;
843843
self.word_nbsp("trait")?;
844-
self.print_name(item.name)?;
844+
self.print_name(item.name.node)?;
845845
self.print_generics(generics)?;
846846
let mut real_bounds = Vec::with_capacity(bounds.len());
847847
for b in bounds.iter() {

src/librustc/infer/error_reporting.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1052,7 +1052,7 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> {
10521052
ast_map::NodeItem(ref item) => {
10531053
match item.node {
10541054
hir::ItemFn(ref fn_decl, unsafety, constness, _, ref gen, _) => {
1055-
Some((fn_decl, gen, unsafety, constness, item.name, item.span))
1055+
Some((fn_decl, gen, unsafety, constness, item.name.node, item.span))
10561056
}
10571057
_ => None,
10581058
}

src/librustc/middle/dead.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,7 @@ impl<'a, 'tcx> Visitor<'tcx> for DeadVisitor<'a, 'tcx> {
519519
self.warn_dead_code(
520520
item.id,
521521
item.span,
522-
item.name,
522+
item.name.node,
523523
item.node.descriptive_variant()
524524
);
525525
} else {

src/librustc/middle/entry.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ fn entry_point_type(item: &Item, at_root: bool) -> EntryPointType {
9393
EntryPointType::Start
9494
} else if attr::contains_name(&item.attrs, "main") {
9595
EntryPointType::MainAttr
96-
} else if item.name == "main" {
96+
} else if item.name.node == "main" {
9797
if at_root {
9898
// This is a top-level function so can be 'main'
9999
EntryPointType::MainNamed

src/librustc_lint/bad_style.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -118,13 +118,13 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NonCamelCaseTypes {
118118
match it.node {
119119
hir::ItemTy(..) |
120120
hir::ItemStruct(..) |
121-
hir::ItemUnion(..) => self.check_case(cx, "type", it.name, it.span),
122-
hir::ItemTrait(..) => self.check_case(cx, "trait", it.name, it.span),
121+
hir::ItemUnion(..) => self.check_case(cx, "type", it.name.node, it.span),
122+
hir::ItemTrait(..) => self.check_case(cx, "trait", it.name.node, it.span),
123123
hir::ItemEnum(ref enum_definition, _) => {
124124
if has_extern_repr {
125125
return;
126126
}
127-
self.check_case(cx, "type", it.name, it.span);
127+
self.check_case(cx, "type", it.name.node, it.span);
128128
for variant in &enum_definition.variants {
129129
self.check_case(cx, "variant", variant.node.name, variant.span);
130130
}
@@ -267,7 +267,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NonSnakeCase {
267267

268268
fn check_item(&mut self, cx: &LateContext, it: &hir::Item) {
269269
if let hir::ItemMod(_) = it.node {
270-
self.check_snake_case(cx, "module", &it.name.as_str(), Some(it.span));
270+
self.check_snake_case(cx, "module", &it.name.node.as_str(), Some(it.span));
271271
}
272272
}
273273

@@ -352,10 +352,10 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NonUpperCaseGlobals {
352352
fn check_item(&mut self, cx: &LateContext, it: &hir::Item) {
353353
match it.node {
354354
hir::ItemStatic(..) => {
355-
NonUpperCaseGlobals::check_upper_case(cx, "static variable", it.name, it.span);
355+
NonUpperCaseGlobals::check_upper_case(cx, "static variable", it.name.node, it.span);
356356
}
357357
hir::ItemConst(..) => {
358-
NonUpperCaseGlobals::check_upper_case(cx, "constant", it.name, it.span);
358+
NonUpperCaseGlobals::check_upper_case(cx, "constant", it.name.node, it.span);
359359
}
360360
_ => {}
361361
}

0 commit comments

Comments
 (0)