Skip to content

Commit 476160e

Browse files
committed
Use and_then/filter/map chain for child_args in delegation
Refactor child_args construction to use .filter() in the method chain instead of an early return with an empty slice inside .map(). When child_args is None (filtered out), unwrap_or_default() returns an empty slice.
1 parent b1035f8 commit 476160e

1 file changed

Lines changed: 28 additions & 28 deletions

File tree

compiler/rustc_hir_analysis/src/delegation.rs

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -596,35 +596,35 @@ fn get_delegation_user_specified_args<'tcx>(
596596
.as_slice()
597597
});
598598

599-
let child_args = info.child_args_segment_id.and_then(get_segment).map(|(segment, def_id)| {
600-
if !matches!(tcx.def_kind(def_id), DefKind::Fn | DefKind::AssocFn) {
601-
return &[][..];
602-
}
603-
604-
let parent_args = if let Some(parent_args) = parent_args {
605-
parent_args
606-
} else {
607-
let parent = tcx.parent(def_id);
608-
if matches!(tcx.def_kind(parent), DefKind::Trait) {
609-
ty::GenericArgs::identity_for_item(tcx, parent).as_slice()
599+
let child_args = info
600+
.child_args_segment_id
601+
.and_then(get_segment)
602+
.filter(|(_, def_id)| matches!(tcx.def_kind(*def_id), DefKind::Fn | DefKind::AssocFn))
603+
.map(|(segment, def_id)| {
604+
let parent_args = if let Some(parent_args) = parent_args {
605+
parent_args
610606
} else {
611-
&[]
612-
}
613-
};
614-
615-
let args = lowerer
616-
.lower_generic_args_of_path(
617-
segment.ident.span,
618-
def_id,
619-
parent_args,
620-
segment,
621-
None,
622-
GenericArgPosition::Value,
623-
)
624-
.0;
625-
626-
&args[parent_args.len()..]
627-
});
607+
let parent = tcx.parent(def_id);
608+
if matches!(tcx.def_kind(parent), DefKind::Trait) {
609+
ty::GenericArgs::identity_for_item(tcx, parent).as_slice()
610+
} else {
611+
&[]
612+
}
613+
};
614+
615+
let args = lowerer
616+
.lower_generic_args_of_path(
617+
segment.ident.span,
618+
def_id,
619+
parent_args,
620+
segment,
621+
None,
622+
GenericArgPosition::Value,
623+
)
624+
.0;
625+
626+
&args[parent_args.len()..]
627+
});
628628

629629
(parent_args.unwrap_or_default(), child_args.unwrap_or_default())
630630
}

0 commit comments

Comments
 (0)