diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index 630d41fa7e2..8045dab6c2d 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -1165,12 +1165,19 @@ pub enum Type { mutability: Mutability, type_: Box, }, + + // ::Name QPath { name: String, self_type: Box, trait_: Box }, - // region, raw, other boxes, mutable + + // _ + Infer, + + // for<'a> Foo(&'a) + PolyTraitRef(Vec), } #[deriving(Clone, Encodable, Decodable, PartialEq, Eq, Hash)] @@ -1307,11 +1314,18 @@ impl Clean for ast::Ty { } } TyClosure(ref c) => Closure(box c.clean(cx)), - TyProc(ref c) => Proc(box c.clean(cx)), TyBareFn(ref barefn) => BareFunction(box barefn.clean(cx)), TyParen(ref ty) => ty.clean(cx), TyQPath(ref qp) => qp.clean(cx), - ref x => panic!("Unimplemented type {}", x), + TyPolyTraitRef(ref bounds) => { + PolyTraitRef(bounds.clean(cx)) + }, + TyInfer(..) => { + Infer + }, + TyTypeof(..) => { + panic!("Unimplemented type {}", self.node) + }, } } } diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs index 484eed649bb..cf92a71369f 100644 --- a/src/librustdoc/html/format.rs +++ b/src/librustdoc/html/format.rs @@ -390,6 +390,16 @@ impl fmt::Show for clean::Type { try!(resolved_path(f, did, path, false)); tybounds(f, typarams) } + clean::PolyTraitRef(ref bounds) => { + for (i, bound) in bounds.iter().enumerate() { + if i != 0 { + try!(write!(f, " + ")); + } + try!(write!(f, "{}", *bound)); + } + Ok(()) + } + clean::Infer => write!(f, "_"), clean::Self(..) => f.write("Self".as_bytes()), clean::Primitive(prim) => primitive_link(f, prim, prim.to_string()), clean::Closure(ref decl) => {