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,
/// 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,
#[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
}
}
}
}
- pub fn rename(&self) -> Option<Ident> {
+ pub fn rename(&self) -> Option<Name> {
match *self {
PathListIdent { rename, .. } | PathListMod { rename, .. } => rename
}
/// or just
///
/// `foo::bar::baz` (with `as baz` implicitly on the right)
- ViewPathSimple(Ident, Path),
+ ViewPathSimple(Name, Path),
/// `foo::bar::*`
ViewPathGlob(Path),
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))
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
}
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,
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(())
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")
ResolutionError::SelfImportsOnlyAllowedWithin);
}
- let subclass = SingleImport(binding.name,
- source_name);
+ let subclass = SingleImport(binding, source_name);
self.build_import_directive(&**parent,
module_path,
subclass,
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,
}
};
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)
}
};
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);
}
}
///
/// 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,
(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)))
}
};
}
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 {
}
- 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,
}
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 {
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,