]> git.lizzy.rs Git - rust.git/commitdiff
rustdoc: Separate associated types from methods
authorTom Jakubowski <tom@crystae.net>
Wed, 14 Jan 2015 15:28:37 +0000 (07:28 -0800)
committerTom Jakubowski <tom@crystae.net>
Sun, 18 Jan 2015 06:54:23 +0000 (22:54 -0800)
Fix #21142

src/librustdoc/clean/inline.rs

index ccaefadc1fcd963e281e00a6e788792df3f8df60..432748b40e439d9da9dd1901e7f7a57d2b03ab3f 100644 (file)
@@ -147,14 +147,22 @@ pub fn record_extern_fqn(cx: &DocContext, did: ast::DefId, kind: clean::TypeKind
 
 pub fn build_external_trait(cx: &DocContext, tcx: &ty::ctxt,
                             did: ast::DefId) -> clean::Trait {
+    use clean::TraitMethod;
+
     let def = ty::lookup_trait_def(tcx, did);
     let trait_items = ty::trait_items(tcx, did).clean(cx);
     let provided = ty::provided_trait_methods(tcx, did);
     let items = trait_items.into_iter().map(|trait_item| {
-        if provided.iter().any(|a| a.def_id == trait_item.def_id) {
-            clean::ProvidedMethod(trait_item)
-        } else {
-            clean::RequiredMethod(trait_item)
+        match trait_item.inner {
+            clean::TyMethodItem(_) => {
+                if provided.iter().any(|a| a.def_id == trait_item.def_id) {
+                    TraitMethod::ProvidedMethod(trait_item)
+                } else {
+                    TraitMethod::RequiredMethod(trait_item)
+                }
+            },
+            clean::AssociatedTypeItem(_) => TraitMethod::TypeTraitItem(trait_item),
+            _ => unreachable!()
         }
     });
     let trait_def = ty::lookup_trait_def(tcx, did);