diff options
| author | Michael Goulet <michael@errs.io> | 2023-06-21 01:57:26 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2023-06-21 16:32:26 +0000 |
| commit | 7563909a28a2add4e41cb653e4d7ebd50c97bce4 (patch) | |
| tree | b1183fdd9e045959ee848a96b1c39313d253fc2b /compiler/rustc_hir_analysis/src/check | |
| parent | 38b44eb2335885844137f918c44c437f5a8da951 (diff) | |
| download | rust-7563909a28a2add4e41cb653e4d7ebd50c97bce4.tar.gz rust-7563909a28a2add4e41cb653e4d7ebd50c97bce4.zip | |
Liberate bound vars properly when suggesting missing AFIT
Diffstat (limited to 'compiler/rustc_hir_analysis/src/check')
| -rw-r--r-- | compiler/rustc_hir_analysis/src/check/mod.rs | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/compiler/rustc_hir_analysis/src/check/mod.rs b/compiler/rustc_hir_analysis/src/check/mod.rs index 4247869ce76..1dfe053b215 100644 --- a/compiler/rustc_hir_analysis/src/check/mod.rs +++ b/compiler/rustc_hir_analysis/src/check/mod.rs @@ -470,19 +470,16 @@ fn suggestion_signature<'tcx>( ); match assoc.kind { - ty::AssocKind::Fn => { - // We skip the binder here because the binder would deanonymize all - // late-bound regions, and we don't want method signatures to show up - // `as for<'r> fn(&'r MyType)`. Pretty-printing handles late-bound - // regions just fine, showing `fn(&MyType)`. - fn_sig_suggestion( - tcx, - tcx.fn_sig(assoc.def_id).subst(tcx, substs).skip_binder(), - assoc.ident(tcx), - tcx.predicates_of(assoc.def_id).instantiate_own(tcx, substs), - assoc, - ) - } + ty::AssocKind::Fn => fn_sig_suggestion( + tcx, + tcx.liberate_late_bound_regions( + assoc.def_id, + tcx.fn_sig(assoc.def_id).subst(tcx, substs), + ), + assoc.ident(tcx), + tcx.predicates_of(assoc.def_id).instantiate_own(tcx, substs), + assoc, + ), ty::AssocKind::Type => { let (generics, where_clauses) = bounds_from_generic_predicates( tcx, |
