Skip to content

Commit fc0ef54

Browse files
committed
opaque_type_storage to InferCtxtLike
1 parent 3ef8e64 commit fc0ef54

File tree

4 files changed

+61
-69
lines changed

4 files changed

+61
-69
lines changed

compiler/rustc_infer/src/infer/context.rs

+39
Original file line numberDiff line numberDiff line change
@@ -213,4 +213,43 @@ impl<'tcx> rustc_type_ir::InferCtxtLike for InferCtxt<'tcx> {
213213
fn register_ty_outlives(&self, ty: Ty<'tcx>, r: ty::Region<'tcx>, span: Span) {
214214
self.register_region_obligation_with_cause(ty, r, &ObligationCause::dummy_with_span(span));
215215
}
216+
217+
fn clone_opaque_types_lookup_table(&self) -> Vec<(ty::OpaqueTypeKey<'tcx>, Ty<'tcx>)> {
218+
self.inner.borrow_mut().opaque_types().iter_lookup_table().map(|(k, h)| (k, h.ty)).collect()
219+
}
220+
fn clone_duplicate_opaque_types(&self) -> Vec<(ty::OpaqueTypeKey<'tcx>, Ty<'tcx>)> {
221+
self.inner
222+
.borrow_mut()
223+
.opaque_types()
224+
.iter_duplicate_entries()
225+
.map(|(k, h)| (k, h.ty))
226+
.collect()
227+
}
228+
229+
fn register_hidden_type_in_storage(
230+
&self,
231+
opaque_type_key: ty::OpaqueTypeKey<'tcx>,
232+
hidden_ty: Ty<'tcx>,
233+
span: Span,
234+
) -> Option<Ty<'tcx>> {
235+
self.register_hidden_type_in_storage(
236+
opaque_type_key,
237+
ty::OpaqueHiddenType { span, ty: hidden_ty },
238+
)
239+
}
240+
fn add_duplicate_opaque_type(
241+
&self,
242+
opaque_type_key: ty::OpaqueTypeKey<'tcx>,
243+
hidden_ty: Ty<'tcx>,
244+
span: Span,
245+
) {
246+
self.inner
247+
.borrow_mut()
248+
.opaque_types()
249+
.add_duplicate(opaque_type_key, ty::OpaqueHiddenType { span, ty: hidden_ty })
250+
}
251+
252+
fn reset_opaque_types(&self) {
253+
let _ = self.take_opaque_types();
254+
}
216255
}

compiler/rustc_next_trait_solver/src/delegate.rs

-22
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,6 @@ pub trait SolverDelegate: Deref<Target = Self::Infcx> + Sized {
3939
term: <Self::Interner as Interner>::Term,
4040
) -> Option<Vec<Goal<Self::Interner, <Self::Interner as Interner>::Predicate>>>;
4141

42-
fn clone_opaque_types_lookup_table(
43-
&self,
44-
) -> Vec<(ty::OpaqueTypeKey<Self::Interner>, <Self::Interner as Interner>::Ty)>;
45-
fn clone_duplicate_opaque_types(
46-
&self,
47-
) -> Vec<(ty::OpaqueTypeKey<Self::Interner>, <Self::Interner as Interner>::Ty)>;
48-
4942
fn make_deduplicated_outlives_constraints(
5043
&self,
5144
) -> Vec<ty::OutlivesPredicate<Self::Interner, <Self::Interner as Interner>::GenericArg>>;
@@ -64,20 +57,6 @@ pub trait SolverDelegate: Deref<Target = Self::Infcx> + Sized {
6457
span: <Self::Interner as Interner>::Span,
6558
universe_map: impl Fn(ty::UniverseIndex) -> ty::UniverseIndex,
6659
) -> <Self::Interner as Interner>::GenericArg;
67-
68-
fn register_hidden_type_in_storage(
69-
&self,
70-
opaque_type_key: ty::OpaqueTypeKey<Self::Interner>,
71-
hidden_ty: <Self::Interner as Interner>::Ty,
72-
span: <Self::Interner as Interner>::Span,
73-
) -> Option<<Self::Interner as Interner>::Ty>;
74-
fn add_duplicate_opaque_type(
75-
&self,
76-
opaque_type_key: ty::OpaqueTypeKey<Self::Interner>,
77-
hidden_ty: <Self::Interner as Interner>::Ty,
78-
span: <Self::Interner as Interner>::Span,
79-
);
80-
8160
fn add_item_bounds_for_hidden_type(
8261
&self,
8362
def_id: <Self::Interner as Interner>::DefId,
@@ -86,7 +65,6 @@ pub trait SolverDelegate: Deref<Target = Self::Infcx> + Sized {
8665
hidden_ty: <Self::Interner as Interner>::Ty,
8766
goals: &mut Vec<Goal<Self::Interner, <Self::Interner as Interner>::Predicate>>,
8867
);
89-
fn reset_opaque_types(&self);
9068

9169
fn fetch_eligible_assoc_item(
9270
&self,

compiler/rustc_trait_selection/src/solve/delegate.rs

-47
Original file line numberDiff line numberDiff line change
@@ -104,25 +104,6 @@ impl<'tcx> rustc_next_trait_solver::delegate::SolverDelegate for SolverDelegate<
104104
.map(|obligations| obligations.into_iter().map(|obligation| obligation.as_goal()).collect())
105105
}
106106

107-
fn clone_opaque_types_lookup_table(&self) -> Vec<(ty::OpaqueTypeKey<'tcx>, Ty<'tcx>)> {
108-
self.0
109-
.inner
110-
.borrow_mut()
111-
.opaque_types()
112-
.iter_lookup_table()
113-
.map(|(k, h)| (k, h.ty))
114-
.collect()
115-
}
116-
fn clone_duplicate_opaque_types(&self) -> Vec<(ty::OpaqueTypeKey<'tcx>, Ty<'tcx>)> {
117-
self.0
118-
.inner
119-
.borrow_mut()
120-
.opaque_types()
121-
.iter_duplicate_entries()
122-
.map(|(k, h)| (k, h.ty))
123-
.collect()
124-
}
125-
126107
fn make_deduplicated_outlives_constraints(
127108
&self,
128109
) -> Vec<ty::OutlivesPredicate<'tcx, ty::GenericArg<'tcx>>> {
@@ -168,30 +149,6 @@ impl<'tcx> rustc_next_trait_solver::delegate::SolverDelegate for SolverDelegate<
168149
self.0.instantiate_canonical_var(span, cv_info, universe_map)
169150
}
170151

171-
fn register_hidden_type_in_storage(
172-
&self,
173-
opaque_type_key: ty::OpaqueTypeKey<'tcx>,
174-
hidden_ty: Ty<'tcx>,
175-
span: Span,
176-
) -> Option<Ty<'tcx>> {
177-
self.0.register_hidden_type_in_storage(
178-
opaque_type_key,
179-
ty::OpaqueHiddenType { span, ty: hidden_ty },
180-
)
181-
}
182-
fn add_duplicate_opaque_type(
183-
&self,
184-
opaque_type_key: ty::OpaqueTypeKey<'tcx>,
185-
hidden_ty: Ty<'tcx>,
186-
span: Span,
187-
) {
188-
self.0
189-
.inner
190-
.borrow_mut()
191-
.opaque_types()
192-
.add_duplicate(opaque_type_key, ty::OpaqueHiddenType { span, ty: hidden_ty })
193-
}
194-
195152
fn add_item_bounds_for_hidden_type(
196153
&self,
197154
def_id: DefId,
@@ -203,10 +160,6 @@ impl<'tcx> rustc_next_trait_solver::delegate::SolverDelegate for SolverDelegate<
203160
self.0.add_item_bounds_for_hidden_type(def_id, args, param_env, hidden_ty, goals);
204161
}
205162

206-
fn reset_opaque_types(&self) {
207-
let _ = self.take_opaque_types();
208-
}
209-
210163
fn fetch_eligible_assoc_item(
211164
&self,
212165
goal_trait_ref: ty::TraitRef<'tcx>,

compiler/rustc_type_ir/src/infer_ctxt.rs

+22
Original file line numberDiff line numberDiff line change
@@ -245,4 +245,26 @@ pub trait InferCtxtLike: Sized {
245245
r: <Self::Interner as Interner>::Region,
246246
span: <Self::Interner as Interner>::Span,
247247
);
248+
249+
fn clone_opaque_types_lookup_table(
250+
&self,
251+
) -> Vec<(ty::OpaqueTypeKey<Self::Interner>, <Self::Interner as Interner>::Ty)>;
252+
fn clone_duplicate_opaque_types(
253+
&self,
254+
) -> Vec<(ty::OpaqueTypeKey<Self::Interner>, <Self::Interner as Interner>::Ty)>;
255+
256+
fn register_hidden_type_in_storage(
257+
&self,
258+
opaque_type_key: ty::OpaqueTypeKey<Self::Interner>,
259+
hidden_ty: <Self::Interner as Interner>::Ty,
260+
span: <Self::Interner as Interner>::Span,
261+
) -> Option<<Self::Interner as Interner>::Ty>;
262+
fn add_duplicate_opaque_type(
263+
&self,
264+
opaque_type_key: ty::OpaqueTypeKey<Self::Interner>,
265+
hidden_ty: <Self::Interner as Interner>::Ty,
266+
span: <Self::Interner as Interner>::Span,
267+
);
268+
269+
fn reset_opaque_types(&self);
248270
}

0 commit comments

Comments
 (0)