diff options
Diffstat (limited to 'crates/hir_ty/src/infer')
-rw-r--r-- | crates/hir_ty/src/infer/unify.rs | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/crates/hir_ty/src/infer/unify.rs b/crates/hir_ty/src/infer/unify.rs index 4738ec08a..5b7b423fa 100644 --- a/crates/hir_ty/src/infer/unify.rs +++ b/crates/hir_ty/src/infer/unify.rs | |||
@@ -7,8 +7,8 @@ use ena::unify::{InPlaceUnificationTable, NoError, UnifyKey, UnifyValue}; | |||
7 | 7 | ||
8 | use super::{InferenceContext, Obligation}; | 8 | use super::{InferenceContext, Obligation}; |
9 | use crate::{ | 9 | use crate::{ |
10 | AliasEq, AliasTy, BoundVar, Canonical, DebruijnIndex, FnPointer, GenericPredicate, | 10 | AliasEq, AliasTy, BoundVar, Canonical, DebruijnIndex, FnPointer, InEnvironment, InferenceVar, |
11 | InEnvironment, InferenceVar, Interner, Scalar, Substitution, Ty, TyKind, TypeWalk, | 11 | Interner, Scalar, Substitution, Ty, TyKind, TypeWalk, WhereClause, |
12 | }; | 12 | }; |
13 | 13 | ||
14 | impl<'a> InferenceContext<'a> { | 14 | impl<'a> InferenceContext<'a> { |
@@ -382,21 +382,16 @@ impl InferenceTable { | |||
382 | } | 382 | } |
383 | } | 383 | } |
384 | 384 | ||
385 | fn unify_preds( | 385 | fn unify_preds(&mut self, pred1: &WhereClause, pred2: &WhereClause, depth: usize) -> bool { |
386 | &mut self, | ||
387 | pred1: &GenericPredicate, | ||
388 | pred2: &GenericPredicate, | ||
389 | depth: usize, | ||
390 | ) -> bool { | ||
391 | match (pred1, pred2) { | 386 | match (pred1, pred2) { |
392 | (GenericPredicate::Implemented(tr1), GenericPredicate::Implemented(tr2)) | 387 | (WhereClause::Implemented(tr1), WhereClause::Implemented(tr2)) |
393 | if tr1.trait_id == tr2.trait_id => | 388 | if tr1.trait_id == tr2.trait_id => |
394 | { | 389 | { |
395 | self.unify_substs(&tr1.substitution, &tr2.substitution, depth + 1) | 390 | self.unify_substs(&tr1.substitution, &tr2.substitution, depth + 1) |
396 | } | 391 | } |
397 | ( | 392 | ( |
398 | GenericPredicate::AliasEq(AliasEq { alias: alias1, ty: ty1 }), | 393 | WhereClause::AliasEq(AliasEq { alias: alias1, ty: ty1 }), |
399 | GenericPredicate::AliasEq(AliasEq { alias: alias2, ty: ty2 }), | 394 | WhereClause::AliasEq(AliasEq { alias: alias2, ty: ty2 }), |
400 | ) => { | 395 | ) => { |
401 | let (substitution1, substitution2) = match (alias1, alias2) { | 396 | let (substitution1, substitution2) = match (alias1, alias2) { |
402 | (AliasTy::Projection(projection_ty1), AliasTy::Projection(projection_ty2)) | 397 | (AliasTy::Projection(projection_ty1), AliasTy::Projection(projection_ty2)) |