about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2023-10-02 16:23:54 +0200
committerGitHub <noreply@github.com>2023-10-02 16:23:54 +0200
commitcfe9e136275d575e101d22ca1b185e20c8b9a936 (patch)
tree1d72bed159c7fa10af8070bbe90023e711f12939
parentb3853ccc9d1f0f444682441d1c1a73453960fb04 (diff)
parentdbc2cc8717dd8c8006595d9e9c91ad472109165a (diff)
downloadrust-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.rs9
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())
         }
     }