about summary refs log tree commit diff
path: root/compiler/rustc_hir_analysis/src/check/writeback.rs
diff options
context:
space:
mode:
authorOli Scherer <git-spam-no-reply9815368754983@oli-obk.de>2022-09-27 13:02:44 +0000
committerOli Scherer <git-spam-no-reply9815368754983@oli-obk.de>2022-10-07 19:43:46 +0000
commit70d39abbc294ef54a9c900a5d0075f3973c91ece (patch)
tree9febd7587e7882ba0871a74894bbe40cf8360c28 /compiler/rustc_hir_analysis/src/check/writeback.rs
parent9eb69e82e0e4bcbedb4f21f392210204ad8588ab (diff)
downloadrust-70d39abbc294ef54a9c900a5d0075f3973c91ece.tar.gz
rust-70d39abbc294ef54a9c900a5d0075f3973c91ece.zip
Remap hidden types from typeck before storing them in the TypeckResult
Diffstat (limited to 'compiler/rustc_hir_analysis/src/check/writeback.rs')
-rw-r--r--compiler/rustc_hir_analysis/src/check/writeback.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/compiler/rustc_hir_analysis/src/check/writeback.rs b/compiler/rustc_hir_analysis/src/check/writeback.rs
index f789978ae7e..9aeee091fdd 100644
--- a/compiler/rustc_hir_analysis/src/check/writeback.rs
+++ b/compiler/rustc_hir_analysis/src/check/writeback.rs
@@ -536,7 +536,8 @@ impl<'cx, 'tcx> WritebackCx<'cx, 'tcx> {
         let opaque_types =
             self.fcx.infcx.inner.borrow_mut().opaque_type_storage.take_opaque_types();
         for (opaque_type_key, decl) in opaque_types {
-            let hidden_type = self.resolve(decl.hidden_type.ty, &decl.hidden_type.span);
+            let hidden_type = self.resolve(decl.hidden_type, &decl.hidden_type.span);
+            let opaque_type_key = self.resolve(opaque_type_key, &decl.hidden_type.span);
 
             struct RecursionChecker {
                 def_id: LocalDefId,
@@ -559,6 +560,14 @@ impl<'cx, 'tcx> WritebackCx<'cx, 'tcx> {
                 continue;
             }
 
+            let hidden_type = hidden_type
+                .remap_generic_params_to_declaration_params(
+                    opaque_type_key,
+                    self.fcx.infcx.tcx,
+                    true,
+                )
+                .ty;
+
             self.typeck_results.concrete_opaque_types.insert(opaque_type_key.def_id, hidden_type);
         }
     }