Skip to content

Commit 9437f6d

Browse files
Remove get_inner_ty
1 parent 05c8753 commit 9437f6d

File tree

1 file changed

+9
-28
lines changed

1 file changed

+9
-28
lines changed

compiler/rustc_hir/src/hir.rs

+9-28
Original file line numberDiff line numberDiff line change
@@ -651,38 +651,19 @@ impl<'hir> Generics<'hir> {
651651
&self,
652652
param_def_id: LocalDefId,
653653
) -> Option<(Span, Option<Span>)> {
654-
fn get_inner_ty<'a, 'b>(bound: &'a GenericBound<'b>) -> Option<&'a Ty<'b>> {
655-
match bound {
656-
GenericBound::Trait(data, _) => {
657-
let segment = data.trait_ref.path.segments.first()?;
658-
if segment.args().parenthesized != GenericArgsParentheses::ParenSugar {
659-
return None;
660-
}
661-
let binding = segment.args().bindings.first()?;
662-
if let TypeBindingKind::Equality { term: Term::Ty(ty) } = binding.kind {
663-
Some(ty)
664-
} else {
665-
None
666-
}
667-
}
668-
_ => None,
669-
}
670-
}
671-
672654
self.bounds_for_param(param_def_id).flat_map(|bp| bp.bounds.iter().rev()).find_map(
673655
|bound| {
674-
let span_for_parentheses = get_inner_ty(bound).and_then(|ty| {
675-
if let TyKind::TraitObject(
676-
_,
677-
_,
678-
TraitObjectSyntax::Dyn | TraitObjectSyntax::DynStar,
679-
) = ty.kind
680-
{
681-
ty.span.can_be_used_for_suggestions().then_some(ty.span)
656+
let span_for_parentheses = if let Some(trait_ref) = bound.trait_ref()
657+
&& let [.., segment] = trait_ref.path.segments
658+
&& segment.args().parenthesized == GenericArgsParentheses::ParenSugar
659+
&& let [binding] = segment.args().bindings
660+
&& let TypeBindingKind::Equality { term: Term::Ty(ret_ty) } = binding.kind
661+
&& let TyKind::TraitObject(_, _, TraitObjectSyntax::Dyn | TraitObjectSyntax::DynStar) = ret_ty.kind
662+
&& ret_ty.span.can_be_used_for_suggestions() {
663+
Some(ret_ty.span)
682664
} else {
683665
None
684-
}
685-
});
666+
};
686667

687668
span_for_parentheses.map_or_else(
688669
|| {

0 commit comments

Comments
 (0)