mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-02 15:32:06 +00:00
Auto merge of #33338 - birkenfeld:issue-25356, r=jseyfried
typeck: limit number of candidates shown for a single error No idea if 10/11 is a good limit. Are there any other such limits in rustc currently? Fixes: #25356
This commit is contained in:
commit
e88defe718
@ -101,8 +101,10 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
|
||||
|
||||
sources.sort();
|
||||
sources.dedup();
|
||||
// Dynamic limit to avoid hiding just one candidate, which is silly.
|
||||
let limit = if sources.len() == 5 { 5 } else { 4 };
|
||||
|
||||
for (idx, source) in sources.iter().enumerate() {
|
||||
for (idx, source) in sources.iter().take(limit).enumerate() {
|
||||
match *source {
|
||||
CandidateSource::ImplSource(impl_did) => {
|
||||
// Provide the best span we can. Use the item, if local to crate, else
|
||||
@ -151,6 +153,9 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
|
||||
}
|
||||
}
|
||||
}
|
||||
if sources.len() > limit {
|
||||
err.note(&format!("and {} others", sources.len() - limit));
|
||||
}
|
||||
};
|
||||
|
||||
match error {
|
||||
@ -295,11 +300,15 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
|
||||
|
||||
err.help(&msg[..]);
|
||||
|
||||
for (i, trait_did) in candidates.iter().enumerate() {
|
||||
let limit = if candidates.len() == 5 { 5 } else { 4 };
|
||||
for (i, trait_did) in candidates.iter().take(limit).enumerate() {
|
||||
err.help(&format!("candidate #{}: `use {}`",
|
||||
i + 1,
|
||||
self.tcx.item_path_str(*trait_did)));
|
||||
}
|
||||
if candidates.len() > limit {
|
||||
err.note(&format!("and {} others", candidates.len() - limit));
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user