diff --git a/src/librustc/front/map/collector.rs b/src/librustc/front/map/collector.rs index 7f66b56b2d31..4ae03b1b9d72 100644 --- a/src/librustc/front/map/collector.rs +++ b/src/librustc/front/map/collector.rs @@ -133,11 +133,16 @@ impl<'ast> Visitor<'ast> for NodeCollector<'ast> { // Pick the def data. This need not be unique, but the more // information we encapsulate into let def_data = match i.node { - ItemDefaultImpl(..) | ItemImpl(..) => DefPathData::Impl(i.name), - ItemEnum(..) | ItemStruct(..) | ItemTrait(..) => DefPathData::Type(i.name), - ItemExternCrate(..) | ItemMod(..) => DefPathData::Mod(i.name), - ItemStatic(..) | ItemConst(..) | ItemFn(..) => DefPathData::Value(i.name), - _ => DefPathData::Misc, + ItemDefaultImpl(..) | ItemImpl(..) => + DefPathData::Impl, + ItemEnum(..) | ItemStruct(..) | ItemTrait(..) | + ItemExternCrate(..) | ItemMod(..) | ItemForeignMod(..) | + ItemTy(..) => + DefPathData::TypeNs(i.name), + ItemStatic(..) | ItemConst(..) | ItemFn(..) => + DefPathData::ValueNs(i.name), + ItemUse(..) => + DefPathData::Misc, }; self.insert_def(i.id, NodeItem(i), def_data); @@ -202,7 +207,7 @@ impl<'ast> Visitor<'ast> for NodeCollector<'ast> { fn visit_foreign_item(&mut self, foreign_item: &'ast ForeignItem) { self.insert_def(foreign_item.id, NodeForeignItem(foreign_item), - DefPathData::Value(foreign_item.name)); + DefPathData::ValueNs(foreign_item.name)); let parent_node = self.parent_node; self.parent_node = foreign_item.id; @@ -222,8 +227,8 @@ impl<'ast> Visitor<'ast> for NodeCollector<'ast> { fn visit_trait_item(&mut self, ti: &'ast TraitItem) { let def_data = match ti.node { - MethodTraitItem(..) | ConstTraitItem(..) => DefPathData::Value(ti.name), - TypeTraitItem(..) => DefPathData::Type(ti.name), + MethodTraitItem(..) | ConstTraitItem(..) => DefPathData::ValueNs(ti.name), + TypeTraitItem(..) => DefPathData::TypeNs(ti.name), }; self.insert(ti.id, NodeTraitItem(ti)); @@ -246,8 +251,8 @@ impl<'ast> Visitor<'ast> for NodeCollector<'ast> { fn visit_impl_item(&mut self, ii: &'ast ImplItem) { let def_data = match ii.node { - ImplItemKind::Method(..) | ImplItemKind::Const(..) => DefPathData::Value(ii.name), - ImplItemKind::Type(..) => DefPathData::Type(ii.name), + ImplItemKind::Method(..) | ImplItemKind::Const(..) => DefPathData::ValueNs(ii.name), + ImplItemKind::Type(..) => DefPathData::TypeNs(ii.name), }; self.insert_def(ii.id, NodeImplItem(ii), def_data); diff --git a/src/librustc/front/map/definitions.rs b/src/librustc/front/map/definitions.rs index 4d5da12cad23..82574b852297 100644 --- a/src/librustc/front/map/definitions.rs +++ b/src/librustc/front/map/definitions.rs @@ -144,10 +144,9 @@ pub enum DefPathData { Misc, // Different kinds of items and item-like things: - Impl(ast::Name), - Type(ast::Name), - Mod(ast::Name), - Value(ast::Name), + Impl, + TypeNs(ast::Name), // something in the type NS + ValueNs(ast::Name), // something in the value NS MacroDef(ast::Name), ClosureExpr, @@ -159,10 +158,6 @@ pub enum DefPathData { StructCtor, // implicit ctor for a tuple-like struct Initializer, // initializer for a const Binding(ast::Name), // pattern binding - - // An external crate that does not have an `extern crate` in this - // crate. - DetachedCrate(ast::Name), } impl Definitions { @@ -247,20 +242,21 @@ impl DefPathData { pub fn as_interned_str(&self) -> InternedString { use self::DefPathData::*; match *self { - Impl(name) | - Type(name) | - Mod(name) | - Value(name) | + TypeNs(name) | + ValueNs(name) | MacroDef(name) | TypeParam(name) | LifetimeDef(name) | EnumVariant(name) | - DetachedCrate(name) | Binding(name) | Field(name) => { name.as_str() } + Impl => { + InternedString::new("{{impl}}") + } + // note that this does not show up in user printouts CrateRoot => { InternedString::new("{{root}}")