diff options
Diffstat (limited to 'crates/ra_hir/src/ty/lower.rs')
-rw-r--r-- | crates/ra_hir/src/ty/lower.rs | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/crates/ra_hir/src/ty/lower.rs b/crates/ra_hir/src/ty/lower.rs index a39beb2a0..b76929501 100644 --- a/crates/ra_hir/src/ty/lower.rs +++ b/crates/ra_hir/src/ty/lower.rs | |||
@@ -19,8 +19,8 @@ use hir_def::{ | |||
19 | use ra_arena::map::ArenaMap; | 19 | use ra_arena::map::ArenaMap; |
20 | 20 | ||
21 | use super::{ | 21 | use super::{ |
22 | FnSig, GenericPredicate, ProjectionPredicate, ProjectionTy, Substs, TraitRef, Ty, TypeCtor, | 22 | FnSig, GenericPredicate, ProjectionPredicate, ProjectionTy, Substs, TraitEnvironment, TraitRef, |
23 | TypeWalk, | 23 | Ty, TypeCtor, TypeWalk, |
24 | }; | 24 | }; |
25 | use crate::{ | 25 | use crate::{ |
26 | db::HirDatabase, | 26 | db::HirDatabase, |
@@ -591,16 +591,15 @@ pub(crate) fn generic_predicates_for_param_query( | |||
591 | .collect() | 591 | .collect() |
592 | } | 592 | } |
593 | 593 | ||
594 | pub(crate) fn trait_env( | 594 | impl TraitEnvironment { |
595 | db: &impl HirDatabase, | 595 | pub(crate) fn lower(db: &impl HirDatabase, resolver: &Resolver) -> Arc<TraitEnvironment> { |
596 | resolver: &Resolver, | 596 | let predicates = resolver |
597 | ) -> Arc<super::TraitEnvironment> { | 597 | .where_predicates_in_scope() |
598 | let predicates = resolver | 598 | .flat_map(|pred| GenericPredicate::from_where_predicate(db, &resolver, pred)) |
599 | .where_predicates_in_scope() | 599 | .collect::<Vec<_>>(); |
600 | .flat_map(|pred| GenericPredicate::from_where_predicate(db, &resolver, pred)) | ||
601 | .collect::<Vec<_>>(); | ||
602 | 600 | ||
603 | Arc::new(super::TraitEnvironment { predicates }) | 601 | Arc::new(TraitEnvironment { predicates }) |
602 | } | ||
604 | } | 603 | } |
605 | 604 | ||
606 | /// Resolve the where clause(s) of an item with generics. | 605 | /// Resolve the where clause(s) of an item with generics. |