From 7ec3b66f7a3ac0a33cf435bc3596fdac542fc52a Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Sat, 20 Mar 2021 11:23:59 +0100 Subject: Turn Obligation into something similar to chalk_ir::DomainGoal This includes starting to make use of Chalk's `Cast` trait. --- crates/hir_ty/src/infer/unify.rs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'crates/hir_ty/src/infer/unify.rs') diff --git a/crates/hir_ty/src/infer/unify.rs b/crates/hir_ty/src/infer/unify.rs index 5b7b423fa..1fc03c8f4 100644 --- a/crates/hir_ty/src/infer/unify.rs +++ b/crates/hir_ty/src/infer/unify.rs @@ -5,7 +5,7 @@ use std::borrow::Cow; use chalk_ir::{FloatTy, IntTy, TyVariableKind}; use ena::unify::{InPlaceUnificationTable, NoError, UnifyKey, UnifyValue}; -use super::{InferenceContext, Obligation}; +use super::{DomainGoal, InferenceContext}; use crate::{ AliasEq, AliasTy, BoundVar, Canonical, DebruijnIndex, FnPointer, InEnvironment, InferenceVar, Interner, Scalar, Substitution, Ty, TyKind, TypeWalk, WhereClause, @@ -87,14 +87,11 @@ impl<'a, 'b> Canonicalizer<'a, 'b> { pub(crate) fn canonicalize_obligation( mut self, - obligation: InEnvironment, - ) -> Canonicalized> { + obligation: InEnvironment, + ) -> Canonicalized> { let result = match obligation.value { - Obligation::Trait(tr) => { - Obligation::Trait(self.do_canonicalize(tr, DebruijnIndex::INNERMOST)) - } - Obligation::AliasEq(alias_eq) => { - Obligation::AliasEq(self.do_canonicalize(alias_eq, DebruijnIndex::INNERMOST)) + DomainGoal::Holds(wc) => { + DomainGoal::Holds(self.do_canonicalize(wc, DebruijnIndex::INNERMOST)) } }; self.into_canonicalized(InEnvironment { -- cgit v1.2.3