diff options
Diffstat (limited to 'src/librustdoc/doctree.rs')
| -rw-r--r-- | src/librustdoc/doctree.rs | 202 |
1 files changed, 108 insertions, 94 deletions
diff --git a/src/librustdoc/doctree.rs b/src/librustdoc/doctree.rs index 7a528e50e9c..51deb4e9b97 100644 --- a/src/librustdoc/doctree.rs +++ b/src/librustdoc/doctree.rs @@ -7,52 +7,55 @@ use syntax::ast::{Name, NodeId}; use syntax::attr; use syntax::ext::base::MacroKind; use syntax::ptr::P; -use syntax::source_map::Spanned; use syntax_pos::{self, Span}; use rustc::hir; use rustc::hir::def_id::CrateNum; -pub struct Module { +pub struct Module<'hir> { pub name: Option<Name>, - pub attrs: hir::HirVec<ast::Attribute>, + pub attrs: &'hir hir::HirVec<ast::Attribute>, pub where_outer: Span, pub where_inner: Span, - pub extern_crates: Vec<ExternCrate>, - pub imports: Vec<Import>, - pub structs: Vec<Struct>, - pub unions: Vec<Union>, - pub enums: Vec<Enum>, - pub fns: Vec<Function>, - pub mods: Vec<Module>, + pub extern_crates: Vec<ExternCrate<'hir>>, + pub imports: Vec<Import<'hir>>, + pub structs: Vec<Struct<'hir>>, + pub unions: Vec<Union<'hir>>, + pub enums: Vec<Enum<'hir>>, + pub fns: Vec<Function<'hir>>, + pub mods: Vec<Module<'hir>>, pub id: NodeId, - pub typedefs: Vec<Typedef>, - pub existentials: Vec<Existential>, - pub statics: Vec<Static>, - pub constants: Vec<Constant>, - pub traits: Vec<Trait>, - pub vis: hir::Visibility, + pub typedefs: Vec<Typedef<'hir>>, + pub existentials: Vec<Existential<'hir>>, + pub statics: Vec<Static<'hir>>, + pub constants: Vec<Constant<'hir>>, + pub traits: Vec<Trait<'hir>>, + pub vis: &'hir hir::Visibility, pub stab: Option<attr::Stability>, pub depr: Option<attr::Deprecation>, - pub impls: Vec<Impl>, - pub foreigns: Vec<hir::ForeignMod>, - pub macros: Vec<Macro>, - pub proc_macros: Vec<ProcMacro>, - pub trait_aliases: Vec<TraitAlias>, + pub impls: Vec<Impl<'hir>>, + pub foreigns: Vec<ForeignItem<'hir>>, + pub macros: Vec<Macro<'hir>>, + pub proc_macros: Vec<ProcMacro<'hir>>, + pub trait_aliases: Vec<TraitAlias<'hir>>, pub is_crate: bool, } -impl Module { - pub fn new(name: Option<Name>) -> Module { +impl Module<'hir> { + pub fn new( + name: Option<Name>, + attrs: &'hir hir::HirVec<ast::Attribute>, + vis: &'hir hir::Visibility, + ) -> Module<'hir> { Module { name : name, id: ast::CRATE_NODE_ID, - vis: Spanned { span: syntax_pos::DUMMY_SP, node: hir::VisibilityKind::Inherited }, + vis, stab: None, depr: None, where_outer: syntax_pos::DUMMY_SP, where_inner: syntax_pos::DUMMY_SP, - attrs : hir::HirVec::new(), + attrs, extern_crates: Vec::new(), imports : Vec::new(), structs : Vec::new(), @@ -85,167 +88,178 @@ pub enum StructType { Unit, } -pub struct Struct { - pub vis: hir::Visibility, +pub struct Struct<'hir> { + pub vis: &'hir hir::Visibility, pub stab: Option<attr::Stability>, pub depr: Option<attr::Deprecation>, pub id: hir::HirId, pub struct_type: StructType, pub name: Name, - pub generics: hir::Generics, - pub attrs: hir::HirVec<ast::Attribute>, - pub fields: hir::HirVec<hir::StructField>, + pub generics: &'hir hir::Generics, + pub attrs: &'hir hir::HirVec<ast::Attribute>, + pub fields: &'hir [hir::StructField], pub whence: Span, } -pub struct Union { - pub vis: hir::Visibility, +pub struct Union<'hir> { + pub vis: &'hir hir::Visibility, pub stab: Option<attr::Stability>, pub depr: Option<attr::Deprecation>, pub id: hir::HirId, pub struct_type: StructType, pub name: Name, - pub generics: hir::Generics, - pub attrs: hir::HirVec<ast::Attribute>, - pub fields: hir::HirVec<hir::StructField>, + pub generics: &'hir hir::Generics, + pub attrs: &'hir hir::HirVec<ast::Attribute>, + pub fields: &'hir [hir::StructField], pub whence: Span, } -pub struct Enum { - pub vis: hir::Visibility, +pub struct Enum<'hir> { + pub vis: &'hir hir::Visibility, pub stab: Option<attr::Stability>, pub depr: Option<attr::Deprecation>, - pub variants: hir::HirVec<Variant>, - pub generics: hir::Generics, - pub attrs: hir::HirVec<ast::Attribute>, + pub variants: Vec<Variant<'hir>>, + pub generics: &'hir hir::Generics, + pub attrs: &'hir hir::HirVec<ast::Attribute>, pub id: hir::HirId, pub whence: Span, pub name: Name, } -pub struct Variant { +pub struct Variant<'hir> { pub name: Name, pub id: hir::HirId, - pub attrs: hir::HirVec<ast::Attribute>, - pub def: hir::VariantData, + pub attrs: &'hir hir::HirVec<ast::Attribute>, + pub def: &'hir hir::VariantData, pub stab: Option<attr::Stability>, pub depr: Option<attr::Deprecation>, pub whence: Span, } -pub struct Function { - pub decl: hir::FnDecl, - pub attrs: hir::HirVec<ast::Attribute>, +pub struct Function<'hir> { + pub decl: &'hir hir::FnDecl, + pub attrs: &'hir hir::HirVec<ast::Attribute>, pub id: hir::HirId, pub name: Name, - pub vis: hir::Visibility, + pub vis: &'hir hir::Visibility, pub stab: Option<attr::Stability>, pub depr: Option<attr::Deprecation>, pub header: hir::FnHeader, pub whence: Span, - pub generics: hir::Generics, + pub generics: &'hir hir::Generics, pub body: hir::BodyId, } -pub struct Typedef { - pub ty: P<hir::Ty>, - pub gen: hir::Generics, +pub struct Typedef<'hir> { + pub ty: &'hir P<hir::Ty>, + pub gen: &'hir hir::Generics, pub name: Name, pub id: hir::HirId, - pub attrs: hir::HirVec<ast::Attribute>, + pub attrs: &'hir hir::HirVec<ast::Attribute>, pub whence: Span, - pub vis: hir::Visibility, + pub vis: &'hir hir::Visibility, pub stab: Option<attr::Stability>, pub depr: Option<attr::Deprecation>, } -pub struct Existential { - pub exist_ty: hir::ExistTy, +pub struct Existential<'hir> { + pub exist_ty: &'hir hir::ExistTy, pub name: Name, pub id: hir::HirId, - pub attrs: hir::HirVec<ast::Attribute>, + pub attrs: &'hir hir::HirVec<ast::Attribute>, pub whence: Span, - pub vis: hir::Visibility, + pub vis: &'hir hir::Visibility, pub stab: Option<attr::Stability>, pub depr: Option<attr::Deprecation>, } #[derive(Debug)] -pub struct Static { - pub type_: P<hir::Ty>, +pub struct Static<'hir> { + pub type_: &'hir P<hir::Ty>, pub mutability: hir::Mutability, pub expr: hir::BodyId, pub name: Name, - pub attrs: hir::HirVec<ast::Attribute>, - pub vis: hir::Visibility, + pub attrs: &'hir hir::HirVec<ast::Attribute>, + pub vis: &'hir hir::Visibility, pub stab: Option<attr::Stability>, pub depr: Option<attr::Deprecation>, pub id: hir::HirId, pub whence: Span, } -pub struct Constant { - pub type_: P<hir::Ty>, +pub struct Constant<'hir> { + pub type_: &'hir P<hir::Ty>, pub expr: hir::BodyId, pub name: Name, - pub attrs: hir::HirVec<ast::Attribute>, - pub vis: hir::Visibility, + pub attrs: &'hir hir::HirVec<ast::Attribute>, + pub vis: &'hir hir::Visibility, pub stab: Option<attr::Stability>, pub depr: Option<attr::Deprecation>, pub id: hir::HirId, pub whence: Span, } -pub struct Trait { +pub struct Trait<'hir> { pub is_auto: hir::IsAuto, pub unsafety: hir::Unsafety, pub name: Name, - pub items: hir::HirVec<hir::TraitItem>, - pub generics: hir::Generics, - pub bounds: hir::HirVec<hir::GenericBound>, - pub attrs: hir::HirVec<ast::Attribute>, + pub items: Vec<&'hir hir::TraitItem>, + pub generics: &'hir hir::Generics, + pub bounds: &'hir hir::HirVec<hir::GenericBound>, + pub attrs: &'hir hir::HirVec<ast::Attribute>, pub id: hir::HirId, pub whence: Span, - pub vis: hir::Visibility, + pub vis: &'hir hir::Visibility, pub stab: Option<attr::Stability>, pub depr: Option<attr::Deprecation>, } -pub struct TraitAlias { +pub struct TraitAlias<'hir> { pub name: Name, - pub generics: hir::Generics, - pub bounds: hir::HirVec<hir::GenericBound>, - pub attrs: hir::HirVec<ast::Attribute>, + pub generics: &'hir hir::Generics, + pub bounds: &'hir hir::HirVec<hir::GenericBound>, + pub attrs: &'hir hir::HirVec<ast::Attribute>, pub id: hir::HirId, pub whence: Span, - pub vis: hir::Visibility, + pub vis: &'hir hir::Visibility, pub stab: Option<attr::Stability>, pub depr: Option<attr::Deprecation>, } #[derive(Debug)] -pub struct Impl { +pub struct Impl<'hir> { pub unsafety: hir::Unsafety, pub polarity: hir::ImplPolarity, pub defaultness: hir::Defaultness, - pub generics: hir::Generics, - pub trait_: Option<hir::TraitRef>, - pub for_: P<hir::Ty>, - pub items: hir::HirVec<hir::ImplItem>, - pub attrs: hir::HirVec<ast::Attribute>, + pub generics: &'hir hir::Generics, + pub trait_: &'hir Option<hir::TraitRef>, + pub for_: &'hir P<hir::Ty>, + pub items: Vec<&'hir hir::ImplItem>, + pub attrs: &'hir hir::HirVec<ast::Attribute>, pub whence: Span, - pub vis: hir::Visibility, + pub vis: &'hir hir::Visibility, pub stab: Option<attr::Stability>, pub depr: Option<attr::Deprecation>, pub id: hir::HirId, } +pub struct ForeignItem<'hir> { + pub vis: &'hir hir::Visibility, + pub stab: Option<attr::Stability>, + pub depr: Option<attr::Deprecation>, + pub id: hir::HirId, + pub name: Name, + pub kind: &'hir hir::ForeignItemKind, + pub attrs: &'hir hir::HirVec<ast::Attribute>, + pub whence: Span, +} + // For Macro we store the DefId instead of the NodeId, since we also create // these imported macro_rules (which only have a DUMMY_NODE_ID). -pub struct Macro { +pub struct Macro<'hir> { pub name: Name, pub def_id: hir::def_id::DefId, - pub attrs: hir::HirVec<ast::Attribute>, + pub attrs: &'hir hir::HirVec<ast::Attribute>, pub whence: Span, pub matchers: hir::HirVec<Span>, pub stab: Option<attr::Stability>, @@ -253,31 +267,31 @@ pub struct Macro { pub imported_from: Option<Name>, } -pub struct ExternCrate { +pub struct ExternCrate<'hir> { pub name: Name, pub cnum: CrateNum, pub path: Option<String>, - pub vis: hir::Visibility, - pub attrs: hir::HirVec<ast::Attribute>, + pub vis: &'hir hir::Visibility, + pub attrs: &'hir hir::HirVec<ast::Attribute>, pub whence: Span, } -pub struct Import { +pub struct Import<'hir> { pub name: Name, pub id: hir::HirId, - pub vis: hir::Visibility, - pub attrs: hir::HirVec<ast::Attribute>, - pub path: hir::Path, + pub vis: &'hir hir::Visibility, + pub attrs: &'hir hir::HirVec<ast::Attribute>, + pub path: &'hir hir::Path, pub glob: bool, pub whence: Span, } -pub struct ProcMacro { +pub struct ProcMacro<'hir> { pub name: Name, pub id: hir::HirId, pub kind: MacroKind, pub helpers: Vec<Name>, - pub attrs: hir::HirVec<ast::Attribute>, + pub attrs: &'hir hir::HirVec<ast::Attribute>, pub whence: Span, pub stab: Option<attr::Stability>, pub depr: Option<attr::Deprecation>, |
