]> git.lizzy.rs Git - rust.git/blobdiff - compiler/rustc_ty_utils/src/implied_bounds.rs
Rollup merge of #107422 - Nilstrieb:erase-the-ice, r=compiler-errors
[rust.git] / compiler / rustc_ty_utils / src / implied_bounds.rs
index d890a04599b1caf93ce87096561a11ea5ddcdfb6..961c04974e508bc6ca69dc8b320a423ab5afb000 100644 (file)
@@ -9,12 +9,12 @@ pub fn provide(providers: &mut ty::query::Providers) {
 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();
@@ -22,9 +22,9 @@ fn assumed_wf_types(tcx: TyCtxt<'_>, def_id: DefId) -> &ty::List<Ty<'_>> {
             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