Use Names in path fragments and MacroDef
This commit is contained in:
parent
64fb709f99
commit
a636a83caa
10 changed files with 40 additions and 39 deletions
|
@ -1787,7 +1787,7 @@ fn encode_macro_defs(rbml_w: &mut Encoder,
|
|||
for def in &krate.exported_macros {
|
||||
rbml_w.start_tag(tag_macro_def);
|
||||
|
||||
encode_name(rbml_w, def.ident.name);
|
||||
encode_name(rbml_w, def.name);
|
||||
encode_attributes(rbml_w, &def.attrs);
|
||||
|
||||
rbml_w.wr_tagged_str(tag_macro_def_body,
|
||||
|
|
|
@ -333,11 +333,11 @@ pub struct Crate {
|
|||
/// Not parsed directly, but created on macro import or `macro_rules!` expansion.
|
||||
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
|
||||
pub struct MacroDef {
|
||||
pub ident: Ident,
|
||||
pub name: Name,
|
||||
pub attrs: Vec<Attribute>,
|
||||
pub id: NodeId,
|
||||
pub span: Span,
|
||||
pub imported_from: Option<Ident>,
|
||||
pub imported_from: Option<Name>,
|
||||
pub export: bool,
|
||||
pub use_locally: bool,
|
||||
pub allow_internal_unstable: bool,
|
||||
|
@ -1039,14 +1039,14 @@ pub type Variant = Spanned<Variant_>;
|
|||
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug, Copy)]
|
||||
pub enum PathListItem_ {
|
||||
PathListIdent {
|
||||
name: Ident,
|
||||
name: Name,
|
||||
/// renamed in list, eg `use foo::{bar as baz};`
|
||||
rename: Option<Ident>,
|
||||
rename: Option<Name>,
|
||||
id: NodeId
|
||||
},
|
||||
PathListMod {
|
||||
/// renamed in list, eg `use foo::{self as baz};`
|
||||
rename: Option<Ident>,
|
||||
rename: Option<Name>,
|
||||
id: NodeId
|
||||
}
|
||||
}
|
||||
|
@ -1058,7 +1058,7 @@ impl PathListItem_ {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn rename(&self) -> Option<Ident> {
|
||||
pub fn rename(&self) -> Option<Name> {
|
||||
match *self {
|
||||
PathListIdent { rename, .. } | PathListMod { rename, .. } => rename
|
||||
}
|
||||
|
@ -1077,7 +1077,7 @@ pub enum ViewPath_ {
|
|||
/// or just
|
||||
///
|
||||
/// `foo::bar::baz` (with `as baz` implicitly on the right)
|
||||
ViewPathSimple(Ident, Path),
|
||||
ViewPathSimple(Name, Path),
|
||||
|
||||
/// `foo::bar::*`
|
||||
ViewPathGlob(Path),
|
||||
|
|
|
@ -22,7 +22,7 @@ pub fn lower_view_path(view_path: &ViewPath) -> P<hir::ViewPath> {
|
|||
P(Spanned {
|
||||
node: match view_path.node {
|
||||
ViewPathSimple(ident, ref path) => {
|
||||
hir::ViewPathSimple(ident, lower_path(path))
|
||||
hir::ViewPathSimple(ident.name, lower_path(path))
|
||||
}
|
||||
ViewPathGlob(ref path) => {
|
||||
hir::ViewPathGlob(lower_path(path))
|
||||
|
@ -35,11 +35,14 @@ pub fn lower_view_path(view_path: &ViewPath) -> P<hir::ViewPath> {
|
|||
PathListIdent { id, name, rename } =>
|
||||
hir::PathListIdent {
|
||||
id: id,
|
||||
name: name,
|
||||
rename: rename.clone(),
|
||||
name: name.name,
|
||||
rename: rename.map(|x| x.name),
|
||||
},
|
||||
PathListMod { id, rename } =>
|
||||
hir::PathListMod { id: id, rename: rename.clone() }
|
||||
hir::PathListMod {
|
||||
id: id,
|
||||
rename: rename.map(|x| x.name)
|
||||
}
|
||||
},
|
||||
span: path_list_ident.span
|
||||
}
|
||||
|
@ -526,11 +529,11 @@ pub fn lower_crate(c: &Crate) -> hir::Crate {
|
|||
|
||||
pub fn lower_macro_def(m: &MacroDef) -> hir::MacroDef {
|
||||
hir::MacroDef {
|
||||
ident: m.ident,
|
||||
name: m.ident.name,
|
||||
attrs: m.attrs.clone(),
|
||||
id: m.id,
|
||||
span: m.span,
|
||||
imported_from: m.imported_from,
|
||||
imported_from: m.imported_from.map(|x| x.name),
|
||||
export: m.export,
|
||||
use_locally: m.use_locally,
|
||||
allow_internal_unstable: m.allow_internal_unstable,
|
||||
|
|
|
@ -2174,15 +2174,14 @@ impl<'a> State<'a> {
|
|||
|
||||
pub fn print_view_path(&mut self, vp: &hir::ViewPath) -> io::Result<()> {
|
||||
match vp.node {
|
||||
hir::ViewPathSimple(ident, ref path) => {
|
||||
hir::ViewPathSimple(name, ref path) => {
|
||||
try!(self.print_path(path, false, 0));
|
||||
|
||||
// FIXME(#6993) can't compare identifiers directly here
|
||||
if path.segments.last().unwrap().identifier.name !=
|
||||
ident.name {
|
||||
if path.segments.last().unwrap().identifier.name != name {
|
||||
try!(space(&mut self.s));
|
||||
try!(self.word_space("as"));
|
||||
try!(self.print_ident(ident));
|
||||
try!(self.print_name(name));
|
||||
}
|
||||
|
||||
Ok(())
|
||||
|
@ -2203,7 +2202,7 @@ impl<'a> State<'a> {
|
|||
try!(self.commasep(Inconsistent, &idents[..], |s, w| {
|
||||
match w.node {
|
||||
hir::PathListIdent { name, .. } => {
|
||||
s.print_ident(name)
|
||||
s.print_name(name)
|
||||
},
|
||||
hir::PathListMod { .. } => {
|
||||
word(&mut s.s, "self")
|
||||
|
|
|
@ -312,8 +312,7 @@ impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> {
|
|||
ResolutionError::SelfImportsOnlyAllowedWithin);
|
||||
}
|
||||
|
||||
let subclass = SingleImport(binding.name,
|
||||
source_name);
|
||||
let subclass = SingleImport(binding, source_name);
|
||||
self.build_import_directive(&**parent,
|
||||
module_path,
|
||||
subclass,
|
||||
|
@ -343,7 +342,7 @@ impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> {
|
|||
for source_item in source_items {
|
||||
let (module_path, name, rename) = match source_item.node {
|
||||
PathListIdent { name, rename, .. } =>
|
||||
(module_path.clone(), name.name, rename.unwrap_or(name).name),
|
||||
(module_path.clone(), name, rename.unwrap_or(name)),
|
||||
PathListMod { rename, .. } => {
|
||||
let name = match module_path.last() {
|
||||
Some(name) => *name,
|
||||
|
@ -358,7 +357,7 @@ impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> {
|
|||
}
|
||||
};
|
||||
let module_path = module_path.split_last().unwrap().1;
|
||||
let rename = rename.map(|n| n.name).unwrap_or(name);
|
||||
let rename = rename.unwrap_or(name);
|
||||
(module_path.to_vec(), name, rename)
|
||||
}
|
||||
};
|
||||
|
|
|
@ -2210,23 +2210,23 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
|||
|
||||
ItemUse(ref view_path) => {
|
||||
// check for imports shadowing primitive types
|
||||
let check_rename = |this: &Self, id, ident: Ident| {
|
||||
let check_rename = |this: &Self, id, name| {
|
||||
match this.def_map.borrow().get(&id).map(|d| d.full_def()) {
|
||||
Some(DefTy(..)) | Some(DefStruct(..)) | Some(DefTrait(..)) | None => {
|
||||
this.check_if_primitive_type_name(ident.name, item.span);
|
||||
this.check_if_primitive_type_name(name, item.span);
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
};
|
||||
|
||||
match view_path.node {
|
||||
hir::ViewPathSimple(ident, _) => {
|
||||
check_rename(self, item.id, ident);
|
||||
hir::ViewPathSimple(name, _) => {
|
||||
check_rename(self, item.id, name);
|
||||
}
|
||||
hir::ViewPathList(ref prefix, ref items) => {
|
||||
for item in items {
|
||||
if let Some(ident) = item.node.rename() {
|
||||
check_rename(self, item.node.id(), ident);
|
||||
if let Some(name) = item.node.rename() {
|
||||
check_rename(self, item.node.id(), name);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ use super::{Clean, ToSource};
|
|||
///
|
||||
/// The returned value is `None` if the `id` could not be inlined, and `Some`
|
||||
/// of a vector of items if it was successfully expanded.
|
||||
pub fn try_inline(cx: &DocContext, id: ast::NodeId, into: Option<ast::Ident>)
|
||||
pub fn try_inline(cx: &DocContext, id: ast::NodeId, into: Option<ast::Name>)
|
||||
-> Option<Vec<clean::Item>> {
|
||||
let tcx = match cx.tcx_opt() {
|
||||
Some(tcx) => tcx,
|
||||
|
|
|
@ -2386,14 +2386,14 @@ impl Clean<Vec<Item>> for doctree::Import {
|
|||
(ret, ImportList(resolve_use_source(cx, p.clean(cx), self.id),
|
||||
remaining))
|
||||
}
|
||||
hir::ViewPathSimple(i, ref p) => {
|
||||
hir::ViewPathSimple(name, ref p) => {
|
||||
if !denied {
|
||||
match inline::try_inline(cx, self.id, Some(i)) {
|
||||
match inline::try_inline(cx, self.id, Some(name)) {
|
||||
Some(items) => return items,
|
||||
None => {}
|
||||
}
|
||||
}
|
||||
(vec![], SimpleImport(i.clean(cx),
|
||||
(vec![], SimpleImport(name.clean(cx),
|
||||
resolve_use_source(cx, p.clean(cx), self.id)))
|
||||
}
|
||||
};
|
||||
|
|
|
@ -210,12 +210,12 @@ pub struct DefaultImpl {
|
|||
}
|
||||
|
||||
pub struct Macro {
|
||||
pub name: Ident,
|
||||
pub name: Name,
|
||||
pub id: ast::NodeId,
|
||||
pub attrs: Vec<ast::Attribute>,
|
||||
pub whence: Span,
|
||||
pub stab: Option<attr::Stability>,
|
||||
pub imported_from: Option<Ident>,
|
||||
pub imported_from: Option<Name>,
|
||||
}
|
||||
|
||||
pub struct ExternCrate {
|
||||
|
|
|
@ -199,7 +199,7 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> {
|
|||
|
||||
}
|
||||
|
||||
fn resolve_id(&mut self, id: ast::NodeId, renamed: Option<ast::Ident>,
|
||||
fn resolve_id(&mut self, id: ast::NodeId, renamed: Option<ast::Name>,
|
||||
glob: bool, om: &mut Module, please_inline: bool) -> bool {
|
||||
let tcx = match self.cx.tcx_opt() {
|
||||
Some(tcx) => tcx,
|
||||
|
@ -241,9 +241,9 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> {
|
|||
}
|
||||
|
||||
pub fn visit_item(&mut self, item: &hir::Item,
|
||||
renamed: Option<ast::Ident>, om: &mut Module) {
|
||||
renamed: Option<ast::Name>, om: &mut Module) {
|
||||
debug!("Visiting item {:?}", item);
|
||||
let name = renamed.map_or(item.name, |x| x.name);
|
||||
let name = renamed.unwrap_or(item.name);
|
||||
match item.node {
|
||||
hir::ItemExternCrate(ref p) => {
|
||||
let path = match *p {
|
||||
|
@ -398,7 +398,7 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> {
|
|||
Macro {
|
||||
id: def.id,
|
||||
attrs: def.attrs.clone(),
|
||||
name: def.ident,
|
||||
name: def.name,
|
||||
whence: def.span,
|
||||
stab: self.stability(def.id),
|
||||
imported_from: def.imported_from,
|
||||
|
|
Loading…
Reference in a new issue