mirror of https://github.com/rust-lang/rust.git
Auto merge of #59033 - GuillaumeGomez:duplicated-bounds, r=Dylan-DPC
Fix duplicated bounds printing in rustdoc Fixes #56331. Once again, I couldn't find out how to reproduce it with a small code so no test... :-/ r? @QuietMisdreavus
This commit is contained in:
commit
61d286e9d0
|
@ -9,6 +9,7 @@ use std::borrow::Cow;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
use rustc::hir::def_id::DefId;
|
use rustc::hir::def_id::DefId;
|
||||||
|
use rustc::util::nodemap::FxHashSet;
|
||||||
use rustc_target::spec::abi::Abi;
|
use rustc_target::spec::abi::Abi;
|
||||||
use rustc::hir;
|
use rustc::hir;
|
||||||
|
|
||||||
|
@ -107,8 +108,10 @@ impl<'a, T: fmt::Display> fmt::Display for CommaSep<'a, T> {
|
||||||
|
|
||||||
impl<'a> fmt::Display for GenericBounds<'a> {
|
impl<'a> fmt::Display for GenericBounds<'a> {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
|
let mut bounds_dup = FxHashSet::default();
|
||||||
let &GenericBounds(bounds) = self;
|
let &GenericBounds(bounds) = self;
|
||||||
for (i, bound) in bounds.iter().enumerate() {
|
|
||||||
|
for (i, bound) in bounds.iter().filter(|b| bounds_dup.insert(b.to_string())).enumerate() {
|
||||||
if i > 0 {
|
if i > 0 {
|
||||||
f.write_str(" + ")?;
|
f.write_str(" + ")?;
|
||||||
}
|
}
|
||||||
|
@ -206,16 +209,13 @@ impl<'a> fmt::Display for WhereClause<'a> {
|
||||||
clause.push_str(&format!("{}: {}", ty, GenericBounds(bounds)));
|
clause.push_str(&format!("{}: {}", ty, GenericBounds(bounds)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&clean::WherePredicate::RegionPredicate { ref lifetime,
|
&clean::WherePredicate::RegionPredicate { ref lifetime, ref bounds } => {
|
||||||
ref bounds } => {
|
clause.push_str(&format!("{}: {}",
|
||||||
clause.push_str(&format!("{}: ", lifetime));
|
lifetime,
|
||||||
for (i, lifetime) in bounds.iter().enumerate() {
|
bounds.iter()
|
||||||
if i > 0 {
|
.map(|b| b.to_string())
|
||||||
clause.push_str(" + ");
|
.collect::<Vec<_>>()
|
||||||
}
|
.join(" + ")));
|
||||||
|
|
||||||
clause.push_str(&lifetime.to_string());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
&clean::WherePredicate::EqPredicate { ref lhs, ref rhs } => {
|
&clean::WherePredicate::EqPredicate { ref lhs, ref rhs } => {
|
||||||
if f.alternate() {
|
if f.alternate() {
|
||||||
|
|
Loading…
Reference in New Issue