Make Canonical::new a free-standing function

This commit is contained in:
Florian Diebold 2021-04-07 20:47:04 +02:00
parent 9b4ecd3723
commit d1b645d236
2 changed files with 13 additions and 11 deletions

View file

@ -1808,7 +1808,7 @@ impl Type {
.push(self.ty.clone()) .push(self.ty.clone())
.fill(args.iter().map(|t| t.ty.clone())) .fill(args.iter().map(|t| t.ty.clone()))
.build(); .build();
let goal = Canonical::new( let goal = hir_ty::make_canonical(
InEnvironment::new( InEnvironment::new(
self.env.env.clone(), self.env.env.clone(),
AliasEq { AliasEq {

View file

@ -107,16 +107,18 @@ pub fn make_only_type_binders<T>(num_vars: usize, value: T) -> Binders<T> {
) )
} }
impl<T> Canonical<T> { // FIXME: get rid of this
pub fn new(value: T, kinds: impl IntoIterator<Item = TyVariableKind>) -> Self { pub fn make_canonical<T>(
let kinds = kinds.into_iter().map(|tk| { value: T,
chalk_ir::CanonicalVarKind::new( kinds: impl IntoIterator<Item = TyVariableKind>,
chalk_ir::VariableKind::Ty(tk), ) -> Canonical<T> {
chalk_ir::UniverseIndex::ROOT, let kinds = kinds.into_iter().map(|tk| {
) chalk_ir::CanonicalVarKind::new(
}); chalk_ir::VariableKind::Ty(tk),
Self { value, binders: chalk_ir::CanonicalVarKinds::from_iter(&Interner, kinds) } chalk_ir::UniverseIndex::ROOT,
} )
});
Canonical { value, binders: chalk_ir::CanonicalVarKinds::from_iter(&Interner, kinds) }
} }
/// A function signature as seen by type inference: Several parameter types and /// A function signature as seen by type inference: Several parameter types and