diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-10-02 16:23:54 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-02 16:23:54 +0200 |
| commit | cfe9e136275d575e101d22ca1b185e20c8b9a936 (patch) | |
| tree | 1d72bed159c7fa10af8070bbe90023e711f12939 | |
| parent | b3853ccc9d1f0f444682441d1c1a73453960fb04 (diff) | |
| parent | dbc2cc8717dd8c8006595d9e9c91ad472109165a (diff) | |
| download | rust-cfe9e136275d575e101d22ca1b185e20c8b9a936.tar.gz rust-cfe9e136275d575e101d22ca1b185e20c8b9a936.zip | |
Rollup merge of #116340 - lcnr:early-binder-skip_binder, r=compiler-errors
`skip_binder` to `instantiate_identity`
| -rw-r--r-- | compiler/rustc_middle/src/ty/instance.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/compiler/rustc_middle/src/ty/instance.rs b/compiler/rustc_middle/src/ty/instance.rs index 0b0a708e42b..0a425be52ff 100644 --- a/compiler/rustc_middle/src/ty/instance.rs +++ b/compiler/rustc_middle/src/ty/instance.rs @@ -617,12 +617,17 @@ impl<'tcx> Instance<'tcx> { v: EarlyBinder<T>, ) -> Result<T, NormalizationError<'tcx>> where - T: TypeFoldable<TyCtxt<'tcx>> + Clone, + T: TypeFoldable<TyCtxt<'tcx>>, { if let Some(args) = self.args_for_mir_body() { tcx.try_instantiate_and_normalize_erasing_regions(args, param_env, v) } else { - tcx.try_normalize_erasing_regions(param_env, v.skip_binder()) + // We're using `instantiate_identity` as e.g. + // `FnPtrShim` is separately generated for every + // instantiation of the `FnDef`, so the MIR body + // is already instantiated. Any generic parameters it + // contains are generic parameters from the caller. + tcx.try_normalize_erasing_regions(param_env, v.instantiate_identity()) } } |
