1
Fork 0

deindent unsized suggestions

Move stuff out of loops. Use early returns.
This commit is contained in:
Taylor Yu 2021-06-01 20:15:12 -05:00
parent 437b2026e1
commit 69f0dc69a4

View file

@ -1803,20 +1803,24 @@ impl<'a, 'tcx> InferCtxtPrivExt<'tcx> for InferCtxt<'a, 'tcx> {
Some(generics) => generics, Some(generics) => generics,
None => return, None => return,
}; };
debug!("suggest_unsized_bound_if_applicable: generics.params={:?}", generics.params); let sized_trait = self.tcx.lang_items().sized_trait();
debug!( debug!("maybe_suggest_unsized_generics: generics.params={:?}", generics.params);
"suggest_unsized_bound_if_applicable: generics.where_clause={:?}", debug!("maybe_suggest_unsized_generics: generics.where_clause={:?}", generics.where_clause);
generics.where_clause let param = generics
); .params
for param in generics.params { .iter()
if param.span != span .filter(|param| param.span == span)
|| param.bounds.iter().any(|bound| { .filter(|param| {
bound.trait_ref().and_then(|trait_ref| trait_ref.trait_def_id()) param
== self.tcx.lang_items().sized_trait() .bounds
.iter()
.all(|bound| bound.trait_ref().and_then(|tr| tr.trait_def_id()) != sized_trait)
}) })
{ .next();
continue; let param = match param {
} Some(param) => param,
_ => return,
};
debug!("maybe_suggest_unsized_generics: param={:?}", param); debug!("maybe_suggest_unsized_generics: param={:?}", param);
match node { match node {
hir::Node::Item( hir::Node::Item(
@ -1824,9 +1828,7 @@ impl<'a, 'tcx> InferCtxtPrivExt<'tcx> for InferCtxt<'a, 'tcx> {
@ @
hir::Item { hir::Item {
kind: kind:
hir::ItemKind::Enum(..) hir::ItemKind::Enum(..) | hir::ItemKind::Struct(..) | hir::ItemKind::Union(..),
| hir::ItemKind::Struct(..)
| hir::ItemKind::Union(..),
.. ..
}, },
) => { ) => {
@ -1835,7 +1837,7 @@ impl<'a, 'tcx> InferCtxtPrivExt<'tcx> for InferCtxt<'a, 'tcx> {
} }
} }
_ => {} _ => {}
} };
let (span, separator) = match param.bounds { let (span, separator) = match param.bounds {
[] => (span.shrink_to_hi(), ":"), [] => (span.shrink_to_hi(), ":"),
[.., bound] => (bound.span().shrink_to_hi(), " +"), [.., bound] => (bound.span().shrink_to_hi(), " +"),
@ -1846,8 +1848,6 @@ impl<'a, 'tcx> InferCtxtPrivExt<'tcx> for InferCtxt<'a, 'tcx> {
format!("{} ?Sized", separator), format!("{} ?Sized", separator),
Applicability::MachineApplicable, Applicability::MachineApplicable,
); );
return;
}
} }
fn maybe_indirection_for_unsized( fn maybe_indirection_for_unsized(
@ -1862,7 +1862,9 @@ impl<'a, 'tcx> InferCtxtPrivExt<'tcx> for InferCtxt<'a, 'tcx> {
let mut visitor = let mut visitor =
FindTypeParam { param: param.name.ident().name, invalid_spans: vec![], nested: false }; FindTypeParam { param: param.name.ident().name, invalid_spans: vec![], nested: false };
visitor.visit_item(item); visitor.visit_item(item);
if !visitor.invalid_spans.is_empty() { if visitor.invalid_spans.is_empty() {
return false;
}
let mut multispan: MultiSpan = param.span.into(); let mut multispan: MultiSpan = param.span.into();
multispan.push_span_label( multispan.push_span_label(
param.span, param.span,
@ -1882,9 +1884,7 @@ impl<'a, 'tcx> InferCtxtPrivExt<'tcx> for InferCtxt<'a, 'tcx> {
T = param.name.ident(), T = param.name.ident(),
), ),
); );
return true; true
}
false
} }
fn is_recursive_obligation( fn is_recursive_obligation(