Skip to content

Commit e7d2d95

Browse files
Uplift PredefinedOpaquesData
1 parent dba4147 commit e7d2d95

File tree

4 files changed

+22
-12
lines changed

4 files changed

+22
-12
lines changed

compiler/rustc_middle/src/arena.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ macro_rules! arena_types {
111111
rustc_middle::ty::EarlyBinder<'tcx, rustc_middle::ty::Ty<'tcx>>
112112
>,
113113
[] external_constraints: rustc_middle::traits::solve::ExternalConstraintsData<rustc_middle::ty::TyCtxt<'tcx>>,
114-
[] predefined_opaques_in_body: rustc_middle::traits::solve::PredefinedOpaquesData<'tcx>,
114+
[] predefined_opaques_in_body: rustc_middle::traits::solve::PredefinedOpaquesData<rustc_middle::ty::TyCtxt<'tcx>>,
115115
[decode] doc_link_resolutions: rustc_hir::def::DocLinkResMap,
116116
[] stripped_cfg_items: rustc_ast::expand::StrippedCfgItem,
117117
[] mod_child: rustc_middle::metadata::ModChild,

compiler/rustc_middle/src/traits/solve.rs

+3-9
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use rustc_type_ir as ir;
55
pub use rustc_type_ir::solve::*;
66

77
use crate::ty::{
8-
self, FallibleTypeFolder, Ty, TyCtxt, TypeFoldable, TypeFolder, TypeVisitable, TypeVisitor,
8+
self, FallibleTypeFolder, TyCtxt, TypeFoldable, TypeFolder, TypeVisitable, TypeVisitor,
99
};
1010

1111
mod cache;
@@ -19,17 +19,11 @@ pub type CandidateSource<'tcx> = ir::solve::CandidateSource<TyCtxt<'tcx>>;
1919
pub type CanonicalInput<'tcx, P = ty::Predicate<'tcx>> = ir::solve::CanonicalInput<TyCtxt<'tcx>, P>;
2020
pub type CanonicalResponse<'tcx> = ir::solve::CanonicalResponse<TyCtxt<'tcx>>;
2121

22-
/// Additional constraints returned on success.
23-
#[derive(Debug, PartialEq, Eq, Clone, Hash, HashStable, Default)]
24-
pub struct PredefinedOpaquesData<'tcx> {
25-
pub opaque_types: Vec<(ty::OpaqueTypeKey<'tcx>, Ty<'tcx>)>,
26-
}
27-
2822
#[derive(Debug, PartialEq, Eq, Copy, Clone, Hash, HashStable)]
29-
pub struct PredefinedOpaques<'tcx>(pub(crate) Interned<'tcx, PredefinedOpaquesData<'tcx>>);
23+
pub struct PredefinedOpaques<'tcx>(pub(crate) Interned<'tcx, PredefinedOpaquesData<TyCtxt<'tcx>>>);
3024

3125
impl<'tcx> std::ops::Deref for PredefinedOpaques<'tcx> {
32-
type Target = PredefinedOpaquesData<'tcx>;
26+
type Target = PredefinedOpaquesData<TyCtxt<'tcx>>;
3327

3428
fn deref(&self) -> &Self::Target {
3529
&self.0

compiler/rustc_middle/src/ty/context.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ pub struct CtxtInterners<'tcx> {
405405
layout: InternedSet<'tcx, LayoutS<FieldIdx, VariantIdx>>,
406406
adt_def: InternedSet<'tcx, AdtDefData>,
407407
external_constraints: InternedSet<'tcx, ExternalConstraintsData<TyCtxt<'tcx>>>,
408-
predefined_opaques_in_body: InternedSet<'tcx, PredefinedOpaquesData<'tcx>>,
408+
predefined_opaques_in_body: InternedSet<'tcx, PredefinedOpaquesData<TyCtxt<'tcx>>>,
409409
fields: InternedSet<'tcx, List<FieldIdx>>,
410410
local_def_ids: InternedSet<'tcx, List<LocalDefId>>,
411411
captures: InternedSet<'tcx, List<&'tcx ty::CapturedPlace<'tcx>>>,
@@ -2117,7 +2117,7 @@ direct_interners! {
21172117
adt_def: pub mk_adt_def_from_data(AdtDefData): AdtDef -> AdtDef<'tcx>,
21182118
external_constraints: pub mk_external_constraints(ExternalConstraintsData<TyCtxt<'tcx>>):
21192119
ExternalConstraints -> ExternalConstraints<'tcx>,
2120-
predefined_opaques_in_body: pub mk_predefined_opaques_in_body(PredefinedOpaquesData<'tcx>):
2120+
predefined_opaques_in_body: pub mk_predefined_opaques_in_body(PredefinedOpaquesData<TyCtxt<'tcx>>):
21212121
PredefinedOpaques -> PredefinedOpaques<'tcx>,
21222122
}
21232123

compiler/rustc_type_ir/src/solve.rs

+16
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,22 @@ pub struct QueryInput<I: Interner, P> {
156156
pub predefined_opaques_in_body: I::PredefinedOpaques,
157157
}
158158

159+
/// Opaques that are defined in the inference context before a query is called.
160+
#[derive(derivative::Derivative)]
161+
#[derivative(
162+
Clone(bound = ""),
163+
Hash(bound = ""),
164+
PartialEq(bound = ""),
165+
Eq(bound = ""),
166+
Debug(bound = ""),
167+
Default(bound = "")
168+
)]
169+
#[derive(TypeVisitable_Generic, TypeFoldable_Generic)]
170+
#[cfg_attr(feature = "nightly", derive(TyDecodable, TyEncodable, HashStable_NoContext))]
171+
pub struct PredefinedOpaquesData<I: Interner> {
172+
pub opaque_types: Vec<(ty::OpaqueTypeKey<I>, I::Ty)>,
173+
}
174+
159175
/// Possible ways the given goal can be proven.
160176
#[derive(derivative::Derivative)]
161177
#[derivative(

0 commit comments

Comments
 (0)