diff options
| author | lcnr <rust@lcnr.de> | 2025-05-04 17:35:39 +0000 |
|---|---|---|
| committer | lcnr <rust@lcnr.de> | 2025-05-07 17:58:20 +0000 |
| commit | fc0ef54fd9fab0c31f89c53ae83f7afdb767829d (patch) | |
| tree | 98c912c42ace8780fc51362dd26a3c83f9982d07 /compiler/rustc_infer/src/infer/context.rs | |
| parent | 3ef8e64ce9f72ee8d600d55bc43b36eed069b252 (diff) | |
| download | rust-fc0ef54fd9fab0c31f89c53ae83f7afdb767829d.tar.gz rust-fc0ef54fd9fab0c31f89c53ae83f7afdb767829d.zip | |
opaque_type_storage to InferCtxtLike
Diffstat (limited to 'compiler/rustc_infer/src/infer/context.rs')
| -rw-r--r-- | compiler/rustc_infer/src/infer/context.rs | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/compiler/rustc_infer/src/infer/context.rs b/compiler/rustc_infer/src/infer/context.rs index 22d7ce79bb4..ad9e176c592 100644 --- a/compiler/rustc_infer/src/infer/context.rs +++ b/compiler/rustc_infer/src/infer/context.rs @@ -213,4 +213,43 @@ impl<'tcx> rustc_type_ir::InferCtxtLike for InferCtxt<'tcx> { fn register_ty_outlives(&self, ty: Ty<'tcx>, r: ty::Region<'tcx>, span: Span) { self.register_region_obligation_with_cause(ty, r, &ObligationCause::dummy_with_span(span)); } + + fn clone_opaque_types_lookup_table(&self) -> Vec<(ty::OpaqueTypeKey<'tcx>, Ty<'tcx>)> { + self.inner.borrow_mut().opaque_types().iter_lookup_table().map(|(k, h)| (k, h.ty)).collect() + } + fn clone_duplicate_opaque_types(&self) -> Vec<(ty::OpaqueTypeKey<'tcx>, Ty<'tcx>)> { + self.inner + .borrow_mut() + .opaque_types() + .iter_duplicate_entries() + .map(|(k, h)| (k, h.ty)) + .collect() + } + + fn register_hidden_type_in_storage( + &self, + opaque_type_key: ty::OpaqueTypeKey<'tcx>, + hidden_ty: Ty<'tcx>, + span: Span, + ) -> Option<Ty<'tcx>> { + self.register_hidden_type_in_storage( + opaque_type_key, + ty::OpaqueHiddenType { span, ty: hidden_ty }, + ) + } + fn add_duplicate_opaque_type( + &self, + opaque_type_key: ty::OpaqueTypeKey<'tcx>, + hidden_ty: Ty<'tcx>, + span: Span, + ) { + self.inner + .borrow_mut() + .opaque_types() + .add_duplicate(opaque_type_key, ty::OpaqueHiddenType { span, ty: hidden_ty }) + } + + fn reset_opaque_types(&self) { + let _ = self.take_opaque_types(); + } } |
