]>
git.proxmox.com Git - rustc.git/blob - src/librustdoc/doctree.rs
1 //! This module is used to store stuff from Rust's AST in a more convenient
2 //! manner (and with prettier names) before cleaning.
3 pub use self::StructType
::*;
7 use syntax_pos
::hygiene
::MacroKind
;
8 use syntax_pos
::{self, Span}
;
11 use rustc
::hir
::def_id
::CrateNum
;
12 use rustc
::hir
::ptr
::P
;
14 pub struct Module
<'hir
> {
15 pub name
: Option
<Name
>,
16 pub attrs
: &'hir
[ast
::Attribute
],
17 pub where_outer
: Span
,
18 pub where_inner
: Span
,
19 pub extern_crates
: Vec
<ExternCrate
<'hir
>>,
20 pub imports
: Vec
<Import
<'hir
>>,
21 pub structs
: Vec
<Struct
<'hir
>>,
22 pub unions
: Vec
<Union
<'hir
>>,
23 pub enums
: Vec
<Enum
<'hir
>>,
24 pub fns
: Vec
<Function
<'hir
>>,
25 pub mods
: Vec
<Module
<'hir
>>,
27 pub typedefs
: Vec
<Typedef
<'hir
>>,
28 pub opaque_tys
: Vec
<OpaqueTy
<'hir
>>,
29 pub statics
: Vec
<Static
<'hir
>>,
30 pub constants
: Vec
<Constant
<'hir
>>,
31 pub traits
: Vec
<Trait
<'hir
>>,
32 pub vis
: &'hir hir
::Visibility
,
33 pub impls
: Vec
<Impl
<'hir
>>,
34 pub foreigns
: Vec
<ForeignItem
<'hir
>>,
35 pub macros
: Vec
<Macro
<'hir
>>,
36 pub proc_macros
: Vec
<ProcMacro
<'hir
>>,
37 pub trait_aliases
: Vec
<TraitAlias
<'hir
>>,
44 attrs
: &'hir
[ast
::Attribute
],
45 vis
: &'hir hir
::Visibility
,
49 id
: hir
::CRATE_HIR_ID
,
51 where_outer
: syntax_pos
::DUMMY_SP
,
52 where_inner
: syntax_pos
::DUMMY_SP
,
54 extern_crates
: Vec
::new(),
61 typedefs
: Vec
::new(),
62 opaque_tys
: Vec
::new(),
64 constants
: Vec
::new(),
67 foreigns
: Vec
::new(),
69 proc_macros
: Vec
::new(),
70 trait_aliases
: Vec
::new(),
76 #[derive(Debug, Clone, Copy)]
86 pub struct Struct
<'hir
> {
87 pub vis
: &'hir hir
::Visibility
,
89 pub struct_type
: StructType
,
91 pub generics
: &'hir hir
::Generics
,
92 pub attrs
: &'hir
[ast
::Attribute
],
93 pub fields
: &'hir
[hir
::StructField
],
97 pub struct Union
<'hir
> {
98 pub vis
: &'hir hir
::Visibility
,
100 pub struct_type
: StructType
,
102 pub generics
: &'hir hir
::Generics
,
103 pub attrs
: &'hir
[ast
::Attribute
],
104 pub fields
: &'hir
[hir
::StructField
],
108 pub struct Enum
<'hir
> {
109 pub vis
: &'hir hir
::Visibility
,
110 pub variants
: Vec
<Variant
<'hir
>>,
111 pub generics
: &'hir hir
::Generics
,
112 pub attrs
: &'hir
[ast
::Attribute
],
118 pub struct Variant
<'hir
> {
121 pub attrs
: &'hir
[ast
::Attribute
],
122 pub def
: &'hir hir
::VariantData
,
126 pub struct Function
<'hir
> {
127 pub decl
: &'hir hir
::FnDecl
,
128 pub attrs
: &'hir
[ast
::Attribute
],
131 pub vis
: &'hir hir
::Visibility
,
132 pub header
: hir
::FnHeader
,
134 pub generics
: &'hir hir
::Generics
,
135 pub body
: hir
::BodyId
,
138 pub struct Typedef
<'hir
> {
139 pub ty
: &'hir P
<hir
::Ty
>,
140 pub gen
: &'hir hir
::Generics
,
143 pub attrs
: &'hir
[ast
::Attribute
],
145 pub vis
: &'hir hir
::Visibility
,
148 pub struct OpaqueTy
<'hir
> {
149 pub opaque_ty
: &'hir hir
::OpaqueTy
,
152 pub attrs
: &'hir
[ast
::Attribute
],
154 pub vis
: &'hir hir
::Visibility
,
158 pub struct Static
<'hir
> {
159 pub type_
: &'hir P
<hir
::Ty
>,
160 pub mutability
: hir
::Mutability
,
161 pub expr
: hir
::BodyId
,
163 pub attrs
: &'hir
[ast
::Attribute
],
164 pub vis
: &'hir hir
::Visibility
,
169 pub struct Constant
<'hir
> {
170 pub type_
: &'hir P
<hir
::Ty
>,
171 pub expr
: hir
::BodyId
,
173 pub attrs
: &'hir
[ast
::Attribute
],
174 pub vis
: &'hir hir
::Visibility
,
179 pub struct Trait
<'hir
> {
180 pub is_auto
: hir
::IsAuto
,
181 pub unsafety
: hir
::Unsafety
,
183 pub items
: Vec
<&'hir hir
::TraitItem
>,
184 pub generics
: &'hir hir
::Generics
,
185 pub bounds
: &'hir
[hir
::GenericBound
],
186 pub attrs
: &'hir
[ast
::Attribute
],
189 pub vis
: &'hir hir
::Visibility
,
192 pub struct TraitAlias
<'hir
> {
194 pub generics
: &'hir hir
::Generics
,
195 pub bounds
: &'hir
[hir
::GenericBound
],
196 pub attrs
: &'hir
[ast
::Attribute
],
199 pub vis
: &'hir hir
::Visibility
,
203 pub struct Impl
<'hir
> {
204 pub unsafety
: hir
::Unsafety
,
205 pub polarity
: hir
::ImplPolarity
,
206 pub defaultness
: hir
::Defaultness
,
207 pub generics
: &'hir hir
::Generics
,
208 pub trait_
: &'hir Option
<hir
::TraitRef
>,
209 pub for_
: &'hir P
<hir
::Ty
>,
210 pub items
: Vec
<&'hir hir
::ImplItem
>,
211 pub attrs
: &'hir
[ast
::Attribute
],
213 pub vis
: &'hir hir
::Visibility
,
217 pub struct ForeignItem
<'hir
> {
218 pub vis
: &'hir hir
::Visibility
,
221 pub kind
: &'hir hir
::ForeignItemKind
,
222 pub attrs
: &'hir
[ast
::Attribute
],
226 // For Macro we store the DefId instead of the NodeId, since we also create
227 // these imported macro_rules (which only have a DUMMY_NODE_ID).
228 pub struct Macro
<'hir
> {
231 pub def_id
: hir
::def_id
::DefId
,
232 pub attrs
: &'hir
[ast
::Attribute
],
234 pub matchers
: hir
::HirVec
<Span
>,
235 pub imported_from
: Option
<Name
>,
238 pub struct ExternCrate
<'hir
> {
241 pub path
: Option
<String
>,
242 pub vis
: &'hir hir
::Visibility
,
243 pub attrs
: &'hir
[ast
::Attribute
],
247 pub struct Import
<'hir
> {
250 pub vis
: &'hir hir
::Visibility
,
251 pub attrs
: &'hir
[ast
::Attribute
],
252 pub path
: &'hir hir
::Path
,
257 pub struct ProcMacro
<'hir
> {
261 pub helpers
: Vec
<Name
>,
262 pub attrs
: &'hir
[ast
::Attribute
],
266 pub fn struct_type_from_def(vdata
: &hir
::VariantData
) -> StructType
{
268 hir
::VariantData
::Struct(..) => Plain
,
269 hir
::VariantData
::Tuple(..) => Tuple
,
270 hir
::VariantData
::Unit(..) => Unit
,