fn assumed_wf_types(tcx: TyCtxt<'_>, def_id: DefId) -> &ty::List<Ty<'_>> {
match tcx.def_kind(def_id) {
DefKind::Fn => {
- let sig = tcx.fn_sig(def_id);
+ let sig = tcx.fn_sig(def_id).subst_identity();
let liberated_sig = tcx.liberate_late_bound_regions(def_id, sig);
liberated_sig.inputs_and_output
}
DefKind::AssocFn => {
- let sig = tcx.fn_sig(def_id);
+ let sig = tcx.fn_sig(def_id).subst_identity();
let liberated_sig = tcx.liberate_late_bound_regions(def_id, sig);
let mut assumed_wf_types: Vec<_> =
tcx.assumed_wf_types(tcx.parent(def_id)).as_slice().into();
tcx.intern_type_list(&assumed_wf_types)
}
DefKind::Impl => {
- match tcx.bound_impl_trait_ref(def_id).map(ty::EarlyBinder::subst_identity) {
+ match tcx.impl_trait_ref(def_id) {
Some(trait_ref) => {
- let types: Vec<_> = trait_ref.substs.types().collect();
+ let types: Vec<_> = trait_ref.skip_binder().substs.types().collect();
tcx.intern_type_list(&types)
}
// Only the impl self type