rustdoc: Inline static documentation across crates
This commit is contained in:
parent
2290dbb8cc
commit
06f3f9a0c9
@ -88,6 +88,10 @@ fn try_inline_def(cx: &core::DocContext,
|
|||||||
record_extern_fqn(cx, did, clean::TypeModule);
|
record_extern_fqn(cx, did, clean::TypeModule);
|
||||||
clean::ModuleItem(build_module(cx, tcx, did))
|
clean::ModuleItem(build_module(cx, tcx, did))
|
||||||
}
|
}
|
||||||
|
ast::DefStatic(did, mtbl) => {
|
||||||
|
record_extern_fqn(cx, did, clean::TypeStatic);
|
||||||
|
clean::StaticItem(build_static(tcx, did, mtbl))
|
||||||
|
}
|
||||||
_ => return None,
|
_ => return None,
|
||||||
};
|
};
|
||||||
let fqn = csearch::get_item_path(tcx, did);
|
let fqn = csearch::get_item_path(tcx, did);
|
||||||
@ -343,3 +347,13 @@ fn build_module(cx: &core::DocContext, tcx: &ty::ctxt,
|
|||||||
is_crate: false,
|
is_crate: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn build_static(tcx: &ty::ctxt,
|
||||||
|
did: ast::DefId,
|
||||||
|
mutable: bool) -> clean::Static {
|
||||||
|
clean::Static {
|
||||||
|
type_: ty::lookup_item_type(tcx, did).ty.clean(),
|
||||||
|
mutability: if mutable {clean::Mutable} else {clean::Immutable},
|
||||||
|
expr: "\n\n\n".to_string(), // trigger the "[definition]" links
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -35,6 +35,8 @@ pub struct VisSpace(pub Option<ast::Visibility>);
|
|||||||
pub struct FnStyleSpace(pub ast::FnStyle);
|
pub struct FnStyleSpace(pub ast::FnStyle);
|
||||||
/// Wrapper struct for properly emitting a method declaration.
|
/// Wrapper struct for properly emitting a method declaration.
|
||||||
pub struct Method<'a>(pub &'a clean::SelfTy, pub &'a clean::FnDecl);
|
pub struct Method<'a>(pub &'a clean::SelfTy, pub &'a clean::FnDecl);
|
||||||
|
/// Similar to VisSpace, but used for mutability
|
||||||
|
pub struct MutableSpace(pub clean::Mutability);
|
||||||
|
|
||||||
impl VisSpace {
|
impl VisSpace {
|
||||||
pub fn get(&self) -> Option<ast::Visibility> {
|
pub fn get(&self) -> Option<ast::Visibility> {
|
||||||
@ -438,24 +440,14 @@ impl fmt::Show for clean::Type {
|
|||||||
clean::Unique(ref t) => write!(f, "~{}", **t),
|
clean::Unique(ref t) => write!(f, "~{}", **t),
|
||||||
clean::Managed(ref t) => write!(f, "@{}", **t),
|
clean::Managed(ref t) => write!(f, "@{}", **t),
|
||||||
clean::RawPointer(m, ref t) => {
|
clean::RawPointer(m, ref t) => {
|
||||||
write!(f, "*{}{}",
|
write!(f, "*{}{}", MutableSpace(m), **t)
|
||||||
match m {
|
|
||||||
clean::Mutable => "mut ",
|
|
||||||
clean::Immutable => "",
|
|
||||||
}, **t)
|
|
||||||
}
|
}
|
||||||
clean::BorrowedRef{ lifetime: ref l, mutability, type_: ref ty} => {
|
clean::BorrowedRef{ lifetime: ref l, mutability, type_: ref ty} => {
|
||||||
let lt = match *l {
|
let lt = match *l {
|
||||||
Some(ref l) => format!("{} ", *l),
|
Some(ref l) => format!("{} ", *l),
|
||||||
_ => "".to_string(),
|
_ => "".to_string(),
|
||||||
};
|
};
|
||||||
write!(f, "&{}{}{}",
|
write!(f, "&{}{}{}", lt, MutableSpace(mutability), **ty)
|
||||||
lt,
|
|
||||||
match mutability {
|
|
||||||
clean::Mutable => "mut ",
|
|
||||||
clean::Immutable => "",
|
|
||||||
},
|
|
||||||
**ty)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -494,17 +486,13 @@ impl<'a> fmt::Show for Method<'a> {
|
|||||||
clean::SelfStatic => {},
|
clean::SelfStatic => {},
|
||||||
clean::SelfValue => args.push_str("self"),
|
clean::SelfValue => args.push_str("self"),
|
||||||
clean::SelfOwned => args.push_str("~self"),
|
clean::SelfOwned => args.push_str("~self"),
|
||||||
clean::SelfBorrowed(Some(ref lt), clean::Immutable) => {
|
clean::SelfBorrowed(Some(ref lt), mtbl) => {
|
||||||
args.push_str(format!("&{} self", *lt).as_slice());
|
args.push_str(format!("&{} {}self", *lt,
|
||||||
|
MutableSpace(mtbl)).as_slice());
|
||||||
}
|
}
|
||||||
clean::SelfBorrowed(Some(ref lt), clean::Mutable) => {
|
clean::SelfBorrowed(None, mtbl) => {
|
||||||
args.push_str(format!("&{} mut self", *lt).as_slice());
|
args.push_str(format!("&{}self",
|
||||||
}
|
MutableSpace(mtbl)).as_slice());
|
||||||
clean::SelfBorrowed(None, clean::Mutable) => {
|
|
||||||
args.push_str("&mut self");
|
|
||||||
}
|
|
||||||
clean::SelfBorrowed(None, clean::Immutable) => {
|
|
||||||
args.push_str("&self");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (i, input) in d.inputs.values.iter().enumerate() {
|
for (i, input) in d.inputs.values.iter().enumerate() {
|
||||||
@ -605,3 +593,12 @@ impl fmt::Show for clean::ViewListIdent {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl fmt::Show for MutableSpace {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
match *self {
|
||||||
|
MutableSpace(clean::Immutable) => Ok(()),
|
||||||
|
MutableSpace(clean::Mutable) => write!(f, "mut "),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -51,7 +51,7 @@ use rustc::util::nodemap::NodeSet;
|
|||||||
use clean;
|
use clean;
|
||||||
use doctree;
|
use doctree;
|
||||||
use fold::DocFolder;
|
use fold::DocFolder;
|
||||||
use html::format::{VisSpace, Method, FnStyleSpace};
|
use html::format::{VisSpace, Method, FnStyleSpace, MutableSpace};
|
||||||
use html::highlight;
|
use html::highlight;
|
||||||
use html::item_type::{ItemType, shortty};
|
use html::item_type::{ItemType, shortty};
|
||||||
use html::item_type;
|
use html::item_type;
|
||||||
@ -1441,11 +1441,12 @@ fn item_module(w: &mut fmt::Formatter, cx: &Context,
|
|||||||
|
|
||||||
try!(write!(w, "
|
try!(write!(w, "
|
||||||
<tr>
|
<tr>
|
||||||
<td><code>{}static {}: {}</code>{}</td>
|
<td><code>{}static {}{}: {}</code>{}</td>
|
||||||
<td class='docblock'>{} </td>
|
<td class='docblock'>{} </td>
|
||||||
</tr>
|
</tr>
|
||||||
",
|
",
|
||||||
VisSpace(myitem.visibility),
|
VisSpace(myitem.visibility),
|
||||||
|
MutableSpace(s.mutability),
|
||||||
*myitem.name.get_ref(),
|
*myitem.name.get_ref(),
|
||||||
s.type_,
|
s.type_,
|
||||||
Initializer(s.expr.as_slice(), Item { cx: cx, item: myitem }),
|
Initializer(s.expr.as_slice(), Item { cx: cx, item: myitem }),
|
||||||
|
Loading…
Reference in New Issue
Block a user