|
1 | 1 | use super::program_clauses::ToProgramClauses; |
2 | 2 | use crate::clauses::builder::ClauseBuilder; |
3 | 3 | use crate::clauses::{match_alias_ty, match_ty}; |
4 | | -use crate::AliasEq; |
5 | 4 | use crate::DomainGoal; |
6 | 5 | use crate::FromEnv; |
7 | 6 | use crate::ProgramClause; |
8 | 7 | use crate::RustIrDatabase; |
9 | 8 | use crate::Ty; |
10 | | -use crate::WhereClause; |
11 | 9 | use crate::{debug_span, TyData}; |
12 | 10 | use chalk_ir::interner::Interner; |
13 | 11 | use chalk_ir::visit::{Visit, Visitor}; |
@@ -89,32 +87,25 @@ impl<'me, I: Interner> Visitor<'me, I> for EnvElaborator<'me, I> { |
89 | 87 | } |
90 | 88 |
|
91 | 89 | fn visit_domain_goal(&mut self, domain_goal: &DomainGoal<I>, outer_binder: DebruijnIndex) { |
92 | | - match domain_goal { |
93 | | - DomainGoal::FromEnv(from_env) => { |
94 | | - debug_span!("visit_domain_goal", ?from_env); |
95 | | - match from_env { |
96 | | - FromEnv::Trait(trait_ref) => { |
97 | | - let trait_datum = self.db.trait_datum(trait_ref.trait_id); |
| 90 | + if let DomainGoal::FromEnv(from_env) = domain_goal { |
| 91 | + debug_span!("visit_domain_goal", ?from_env); |
| 92 | + match from_env { |
| 93 | + FromEnv::Trait(trait_ref) => { |
| 94 | + let trait_datum = self.db.trait_datum(trait_ref.trait_id); |
98 | 95 |
|
99 | | - trait_datum.to_program_clauses(&mut self.builder, self.environment); |
| 96 | + trait_datum.to_program_clauses(&mut self.builder, self.environment); |
100 | 97 |
|
101 | | - // If we know that `T: Iterator`, then we also know |
102 | | - // things about `<T as Iterator>::Item`, so push those |
103 | | - // implied bounds too: |
104 | | - for &associated_ty_id in &trait_datum.associated_ty_ids { |
105 | | - self.db |
106 | | - .associated_ty_data(associated_ty_id) |
107 | | - .to_program_clauses(&mut self.builder, self.environment); |
108 | | - } |
| 98 | + // If we know that `T: Iterator`, then we also know |
| 99 | + // things about `<T as Iterator>::Item`, so push those |
| 100 | + // implied bounds too: |
| 101 | + for &associated_ty_id in &trait_datum.associated_ty_ids { |
| 102 | + self.db |
| 103 | + .associated_ty_data(associated_ty_id) |
| 104 | + .to_program_clauses(&mut self.builder, self.environment); |
109 | 105 | } |
110 | | - FromEnv::Ty(ty) => ty.visit_with(self, outer_binder), |
111 | 106 | } |
| 107 | + FromEnv::Ty(ty) => ty.visit_with(self, outer_binder), |
112 | 108 | } |
113 | | - DomainGoal::Holds(WhereClause::AliasEq(AliasEq { alias, ty })) => { |
114 | | - match_alias_ty(&mut self.builder, self.environment, alias); |
115 | | - ty.visit_with(self, outer_binder); |
116 | | - } |
117 | | - _ => {} |
118 | 109 | } |
119 | 110 | } |
120 | 111 | } |
0 commit comments