clean::TypedefItem(clean::Typedef {
type_: t.ty.clean(cx),
generics: (&t.generics, &predicates, subst::TypeSpace).clean(cx),
- })
+ }, false)
}
pub fn build_impls(cx: &DocContext, tcx: &ty::ctxt,
subst::ParamSpace::TypeSpace).clean(cx);
Some(clean::Item {
name: Some(assoc_ty.name.clean(cx)),
- inner: clean::TypedefItem(typedef),
+ inner: clean::TypedefItem(typedef, true),
source: clean::Span::empty(),
attrs: vec![],
visibility: None,
EnumItem(Enum),
FunctionItem(Function),
ModuleItem(Module),
- TypedefItem(Typedef),
+ TypedefItem(Typedef, bool /* is associated type */),
StaticItem(Static),
ConstantItem(Constant),
TraitItem(Trait),
type_params: Vec::new(),
where_predicates: Vec::new()
},
- }),
+ }, true),
ast::MacImplItem(_) => {
MacroItem(Macro {
source: self.span.to_src(cx),
inner: TypedefItem(Typedef {
type_: self.ty.clean(cx),
generics: self.gen.clean(cx),
- }),
+ }, false),
}
}
}
for item in items {
let target = match item.inner {
- TypedefItem(ref t) => &t.type_,
+ TypedefItem(ref t, true) => &t.type_,
_ => continue,
};
let primitive = match *target {
clean::StructItem(ref s) => self.generics(&s.generics),
clean::EnumItem(ref e) => self.generics(&e.generics),
clean::FunctionItem(ref f) => self.generics(&f.generics),
- clean::TypedefItem(ref t) => self.generics(&t.generics),
+ clean::TypedefItem(ref t, _) => self.generics(&t.generics),
clean::TraitItem(ref t) => self.generics(&t.generics),
clean::ImplItem(ref i) => self.generics(&i.generics),
clean::TyMethodItem(ref i) => self.generics(&i.generics),
((Some(*last), path), true)
}
}
+ clean::TypedefItem(_, true) => {
+ // skip associated types in impls
+ ((None, None), false)
+ }
_ => ((None, Some(&*self.stack)), false)
};
let hidden_field = match item.inner {
clean::TraitItem(ref t) => item_trait(fmt, self.cx, self.item, t),
clean::StructItem(ref s) => item_struct(fmt, self.item, s),
clean::EnumItem(ref e) => item_enum(fmt, self.item, e),
- clean::TypedefItem(ref t) => item_typedef(fmt, self.item, t),
+ clean::TypedefItem(ref t, _) => item_typedef(fmt, self.item, t),
clean::MacroItem(ref m) => item_macro(fmt, self.item, m),
clean::PrimitiveItem(ref p) => item_primitive(fmt, self.item, p),
clean::StaticItem(ref i) | clean::ForeignStaticItem(ref i) =>
let deref_type = impl_.impl_.trait_.as_ref().unwrap();
let target = impl_.impl_.items.iter().filter_map(|item| {
match item.inner {
- clean::TypedefItem(ref t) => Some(&t.type_),
+ clean::TypedefItem(ref t, true) => Some(&t.type_),
_ => None,
}
- }).next().unwrap();
+ }).next().expect("Expected associated type binding");
let what = AssocItemRender::DerefFor { trait_: deref_type, type_: target };
match *target {
clean::ResolvedPath { did, .. } => render_assoc_items(w, did, what),
try!(render_assoc_item(w, item, link));
try!(write!(w, "</code></h4>\n"));
}
- clean::TypedefItem(ref tydef) => {
+ clean::TypedefItem(ref tydef, _) => {
let name = item.name.as_ref().unwrap();
try!(write!(w, "<h4 id='assoc_type.{}' class='{}'><code>",
*name,