diff options
| author | Jared Roesch <roeschinc@gmail.com> | 2014-12-23 01:08:00 -0800 |
|---|---|---|
| committer | Jared Roesch <roeschinc@gmail.com> | 2014-12-23 13:58:49 -0800 |
| commit | 6948a2df318d1bc2d668d8b29a653f15db1653d8 (patch) | |
| tree | a3639e5e2578aa2cec6d7b4bcb3bde1d6863e04c | |
| parent | 62fb41c32bd97c4e9bc286a1db5d7126a06b8b91 (diff) | |
| download | rust-6948a2df318d1bc2d668d8b29a653f15db1653d8.tar.gz rust-6948a2df318d1bc2d668d8b29a653f15db1653d8.zip | |
Support all variants of WherePredicate
Adds support for all variants of ast::WherePredicate in clean/mod.rs. Fixes #20048, but will need modification when EqualityPredicates are fully implemented in #20041.
| -rw-r--r-- | src/librustdoc/clean/mod.rs | 23 | ||||
| -rw-r--r-- | src/librustdoc/html/format.rs | 22 |
2 files changed, 36 insertions, 9 deletions
diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index 0dd6c2a7ce7..a0e4d0a30a0 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -683,23 +683,32 @@ impl Clean<Option<Lifetime>> for ty::Region { } #[deriving(Clone, RustcEncodable, RustcDecodable, PartialEq)] -pub struct WherePredicate { - pub ty: Type, - pub bounds: Vec<TyParamBound> +pub enum WherePredicate { + BoundPredicate { ty: Type, bounds: Vec<TyParamBound> }, + RegionPredicate { lifetime: Lifetime, bounds: Vec<Lifetime>}, + // FIXME (#20041) + EqPredicate } impl Clean<WherePredicate> for ast::WherePredicate { fn clean(&self, cx: &DocContext) -> WherePredicate { match *self { ast::WherePredicate::BoundPredicate(ref wbp) => { - WherePredicate { + WherePredicate::BoundPredicate { ty: wbp.bounded_ty.clean(cx), bounds: wbp.bounds.clean(cx) } } - // FIXME(#20048) - _ => { - unimplemented!(); + + ast::WherePredicate::RegionPredicate(ref wrp) => { + WherePredicate::RegionPredicate { + lifetime: wrp.lifetime.clean(cx), + bounds: wrp.bounds.clean(cx) + } + } + + ast::WherePredicate::EqPredicate(_) => { + WherePredicate::EqPredicate } } } diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs index a2d5530692c..9b39b223f8e 100644 --- a/src/librustdoc/html/format.rs +++ b/src/librustdoc/html/format.rs @@ -128,8 +128,26 @@ impl<'a> fmt::Show for WhereClause<'a> { if i > 0 { try!(f.write(", ".as_bytes())); } - let bounds = pred.bounds.as_slice(); - try!(write!(f, "{}: {}", pred.ty, TyParamBounds(bounds))); + match pred { + &clean::WherePredicate::BoundPredicate {ref ty, ref bounds } => { + let bounds = bounds.as_slice(); + try!(write!(f, "{}: {}", ty, TyParamBounds(bounds))); + }, + &clean::WherePredicate::RegionPredicate { ref lifetime, + ref bounds } => { + try!(write!(f, "{}: ", lifetime)); + for (i, lifetime) in bounds.iter().enumerate() { + if i > 0 { + try!(f.write(" + ".as_bytes())); + } + + try!(write!(f, "{}", lifetime)); + } + }, + &clean::WherePredicate::EqPredicate => { + unimplemented!() + } + } } Ok(()) } |
