Use BoundTy and BoundRegion instead of kind of PlaceholderTy and PlaceholderRegion
This commit is contained in:
parent
c934ce9e0a
commit
4646b3df6a
20 changed files with 121 additions and 75 deletions
|
@ -300,14 +300,20 @@ impl<'tcx> TypeFolder<TyCtxt<'tcx>> for Canonicalizer<'_, 'tcx> {
|
|||
ty::Placeholder(placeholder) => match self.canonicalize_mode {
|
||||
CanonicalizeMode::Input => CanonicalVarKind::PlaceholderTy(ty::Placeholder {
|
||||
universe: placeholder.universe,
|
||||
name: BoundTyKind::Anon(self.variables.len() as u32),
|
||||
bound: ty::BoundTy {
|
||||
var: ty::BoundVar::from_usize(self.variables.len()),
|
||||
kind: ty::BoundTyKind::Anon(self.variables.len() as u32),
|
||||
},
|
||||
}),
|
||||
CanonicalizeMode::Response { .. } => CanonicalVarKind::PlaceholderTy(placeholder),
|
||||
},
|
||||
ty::Param(_) => match self.canonicalize_mode {
|
||||
CanonicalizeMode::Input => CanonicalVarKind::PlaceholderTy(ty::Placeholder {
|
||||
universe: ty::UniverseIndex::ROOT,
|
||||
name: ty::BoundTyKind::Anon(self.variables.len() as u32),
|
||||
bound: ty::BoundTy {
|
||||
var: ty::BoundVar::from_usize(self.variables.len()),
|
||||
kind: ty::BoundTyKind::Anon(self.variables.len() as u32),
|
||||
},
|
||||
}),
|
||||
CanonicalizeMode::Response { .. } => bug!("param ty in response: {t:?}"),
|
||||
},
|
||||
|
@ -373,7 +379,7 @@ impl<'tcx> TypeFolder<TyCtxt<'tcx>> for Canonicalizer<'_, 'tcx> {
|
|||
CanonicalizeMode::Input => CanonicalVarKind::PlaceholderConst(
|
||||
ty::Placeholder {
|
||||
universe: placeholder.universe,
|
||||
name: ty::BoundVar::from(self.variables.len()),
|
||||
bound: ty::BoundVar::from(self.variables.len()),
|
||||
},
|
||||
c.ty(),
|
||||
),
|
||||
|
@ -385,7 +391,7 @@ impl<'tcx> TypeFolder<TyCtxt<'tcx>> for Canonicalizer<'_, 'tcx> {
|
|||
CanonicalizeMode::Input => CanonicalVarKind::PlaceholderConst(
|
||||
ty::Placeholder {
|
||||
universe: ty::UniverseIndex::ROOT,
|
||||
name: ty::BoundVar::from(self.variables.len()),
|
||||
bound: ty::BoundVar::from(self.variables.len()),
|
||||
},
|
||||
c.ty(),
|
||||
),
|
||||
|
|
|
@ -772,7 +772,7 @@ impl<'tcx> TypeFolder<TyCtxt<'tcx>> for BoundVarReplacer<'_, 'tcx> {
|
|||
}
|
||||
ty::ReLateBound(debruijn, br) if debruijn >= self.current_index => {
|
||||
let universe = self.universe_for(debruijn);
|
||||
let p = ty::PlaceholderRegion { universe, name: br.kind };
|
||||
let p = ty::PlaceholderRegion { universe, bound: br };
|
||||
self.mapped_regions.insert(p, br);
|
||||
self.infcx.tcx.mk_re_placeholder(p)
|
||||
}
|
||||
|
@ -790,7 +790,7 @@ impl<'tcx> TypeFolder<TyCtxt<'tcx>> for BoundVarReplacer<'_, 'tcx> {
|
|||
}
|
||||
ty::Bound(debruijn, bound_ty) if debruijn >= self.current_index => {
|
||||
let universe = self.universe_for(debruijn);
|
||||
let p = ty::PlaceholderType { universe, name: bound_ty.kind };
|
||||
let p = ty::PlaceholderType { universe, bound: bound_ty };
|
||||
self.mapped_types.insert(p, bound_ty);
|
||||
self.infcx.tcx.mk_placeholder(p)
|
||||
}
|
||||
|
@ -809,7 +809,7 @@ impl<'tcx> TypeFolder<TyCtxt<'tcx>> for BoundVarReplacer<'_, 'tcx> {
|
|||
}
|
||||
ty::ConstKind::Bound(debruijn, bound_const) if debruijn >= self.current_index => {
|
||||
let universe = self.universe_for(debruijn);
|
||||
let p = ty::PlaceholderConst { universe, name: bound_const };
|
||||
let p = ty::PlaceholderConst { universe, bound: bound_const };
|
||||
self.mapped_consts.insert(p, bound_const);
|
||||
self.infcx.tcx.mk_const(p, ct.ty())
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue