record_extern_fqn(cx, did, clean::TypeModule);
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,
};
let fqn = csearch::get_item_path(tcx, did);
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
+ }
+}
pub struct FnStyleSpace(pub ast::FnStyle);
/// Wrapper struct for properly emitting a method declaration.
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 {
pub fn get(&self) -> Option<ast::Visibility> {
clean::Unique(ref t) => write!(f, "~{}", **t),
clean::Managed(ref t) => write!(f, "@{}", **t),
clean::RawPointer(m, ref t) => {
- write!(f, "*{}{}",
- match m {
- clean::Mutable => "mut ",
- clean::Immutable => "",
- }, **t)
+ write!(f, "*{}{}", MutableSpace(m), **t)
}
clean::BorrowedRef{ lifetime: ref l, mutability, type_: ref ty} => {
let lt = match *l {
Some(ref l) => format!("{} ", *l),
_ => "".to_string(),
};
- write!(f, "&{}{}{}",
- lt,
- match mutability {
- clean::Mutable => "mut ",
- clean::Immutable => "",
- },
- **ty)
+ write!(f, "&{}{}{}", lt, MutableSpace(mutability), **ty)
}
}
}
clean::SelfStatic => {},
clean::SelfValue => args.push_str("self"),
clean::SelfOwned => args.push_str("~self"),
- clean::SelfBorrowed(Some(ref lt), clean::Immutable) => {
- args.push_str(format!("&{} self", *lt).as_slice());
- }
- clean::SelfBorrowed(Some(ref lt), clean::Mutable) => {
- args.push_str(format!("&{} mut self", *lt).as_slice());
- }
- clean::SelfBorrowed(None, clean::Mutable) => {
- args.push_str("&mut self");
+ clean::SelfBorrowed(Some(ref lt), mtbl) => {
+ args.push_str(format!("&{} {}self", *lt,
+ MutableSpace(mtbl)).as_slice());
}
- clean::SelfBorrowed(None, clean::Immutable) => {
- args.push_str("&self");
+ clean::SelfBorrowed(None, mtbl) => {
+ args.push_str(format!("&{}self",
+ MutableSpace(mtbl)).as_slice());
}
}
for (i, input) in d.inputs.values.iter().enumerate() {
}
}
}
+
+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 "),
+ }
+ }
+}
use clean;
use doctree;
use fold::DocFolder;
-use html::format::{VisSpace, Method, FnStyleSpace};
+use html::format::{VisSpace, Method, FnStyleSpace, MutableSpace};
use html::highlight;
use html::item_type::{ItemType, shortty};
use html::item_type;
try!(write!(w, "
<tr>
- <td><code>{}static {}: {}</code>{}</td>
+ <td><code>{}static {}{}: {}</code>{}</td>
<td class='docblock'>{} </td>
</tr>
",
VisSpace(myitem.visibility),
+ MutableSpace(s.mutability),
*myitem.name.get_ref(),
s.type_,
Initializer(s.expr.as_slice(), Item { cx: cx, item: myitem }),