Skip to content

Commit 3244583

Browse files
committed
use visit_free_var for everything instead for visit_free_var_* and remove visit_bound_var
1 parent abd029d commit 3244583

File tree

3 files changed

+14
-81
lines changed

3 files changed

+14
-81
lines changed

chalk-ir/src/visit.rs

Lines changed: 8 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -139,60 +139,9 @@ where
139139
false
140140
}
141141

142-
/// Invoked for `TyData::BoundVar` instances that are not bound
142+
/// Invoked for `BoundVar` instances that are not bound
143143
/// within the type being visited over:
144-
fn visit_free_var_ty(
145-
&mut self,
146-
bound_var: BoundVar,
147-
outer_binder: DebruijnIndex,
148-
) -> Self::Result {
149-
if self.forbid_free_vars() {
150-
panic!(
151-
"unexpected free variable `{:?}` with outer binder {:?}",
152-
bound_var, outer_binder
153-
)
154-
} else {
155-
Self::Result::new()
156-
}
157-
}
158-
159-
fn visit_bound_var_ty(
160-
&mut self,
161-
_bound_var: BoundVar,
162-
_outer_binder: DebruijnIndex,
163-
) -> Self::Result {
164-
Self::Result::new()
165-
}
166-
167-
/// As `visit_free_var_ty`, but for lifetimes.
168-
fn visit_free_var_lifetime(
169-
&mut self,
170-
bound_var: BoundVar,
171-
outer_binder: DebruijnIndex,
172-
) -> Self::Result {
173-
if self.forbid_free_vars() {
174-
panic!(
175-
"unexpected free variable `{:?}` with outer binder {:?}",
176-
bound_var, outer_binder
177-
)
178-
} else {
179-
Self::Result::new()
180-
}
181-
}
182-
183-
fn visit_bound_var_lifetime(
184-
&mut self,
185-
_bound_var: BoundVar,
186-
_outer_binder: DebruijnIndex,
187-
) -> Self::Result {
188-
Self::Result::new()
189-
}
190-
191-
fn visit_free_var_const(
192-
&mut self,
193-
bound_var: BoundVar,
194-
outer_binder: DebruijnIndex,
195-
) -> Self::Result {
144+
fn visit_free_var(&mut self, bound_var: BoundVar, outer_binder: DebruijnIndex) -> Self::Result {
196145
if self.forbid_free_vars() {
197146
panic!(
198147
"unexpected free variable `{:?}` with outer binder {:?}",
@@ -203,14 +152,6 @@ where
203152
}
204153
}
205154

206-
fn visit_bound_var_const(
207-
&mut self,
208-
_bound_var: BoundVar,
209-
_outer_binder: DebruijnIndex,
210-
) -> Self::Result {
211-
Self::Result::new()
212-
}
213-
214155
/// If overridden to return true, we will panic when a free
215156
/// placeholder type/lifetime is encountered.
216157
fn forbid_free_placeholders(&self) -> bool {
@@ -376,9 +317,9 @@ where
376317
match self.data(interner) {
377318
TyData::BoundVar(bound_var) => {
378319
if let Some(_) = bound_var.shifted_out_to(outer_binder) {
379-
visitor.visit_free_var_lifetime(*bound_var, outer_binder)
320+
visitor.visit_free_var(*bound_var, outer_binder)
380321
} else {
381-
visitor.visit_bound_var_lifetime(*bound_var, outer_binder)
322+
R::new()
382323
}
383324
}
384325
TyData::Dyn(clauses) => clauses.visit_with(visitor, outer_binder),
@@ -417,9 +358,9 @@ impl<I: Interner> SuperVisit<I> for Lifetime<I> {
417358
match self.data(interner) {
418359
LifetimeData::BoundVar(bound_var) => {
419360
if let Some(_) = bound_var.shifted_out_to(outer_binder) {
420-
visitor.visit_free_var_lifetime(*bound_var, outer_binder)
361+
visitor.visit_free_var(*bound_var, outer_binder)
421362
} else {
422-
visitor.visit_bound_var_lifetime(*bound_var, outer_binder)
363+
R::new()
423364
}
424365
}
425366
LifetimeData::InferenceVar(var) => visitor.visit_inference_lifetime(*var, outer_binder),
@@ -457,9 +398,9 @@ impl<I: Interner> SuperVisit<I> for Const<I> {
457398
match self.data(interner) {
458399
ConstData::BoundVar(bound_var) => {
459400
if let Some(_) = bound_var.shifted_out_to(outer_binder) {
460-
visitor.visit_free_var_const(*bound_var, outer_binder)
401+
visitor.visit_free_var(*bound_var, outer_binder)
461402
} else {
462-
visitor.visit_bound_var_const(*bound_var, outer_binder)
403+
R::new()
463404
}
464405
}
465406
ConstData::InferenceVar(var) => visitor.visit_inference_const(*var, outer_binder),

chalk-ir/src/visit/visitors.rs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,7 @@ impl<'i, I: Interner> Visitor<'i, I> for FindFreeVarsVisitor<'i, I> {
5555
self.interner
5656
}
5757

58-
fn visit_free_var_ty(
59-
&mut self,
60-
_bound_var: BoundVar,
61-
_outer_binder: DebruijnIndex,
62-
) -> Self::Result {
63-
FindAny::FOUND
64-
}
65-
66-
fn visit_free_var_lifetime(
58+
fn visit_free_var(
6759
&mut self,
6860
_bound_var: BoundVar,
6961
_outer_binder: DebruijnIndex,

chalk-solve/src/infer/unify.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,11 @@ impl<'t, I: Interner> Unifier<'t, I> {
8585
fn unify_ty_ty<'a>(&mut self, a: &'a Ty<I>, b: &'a Ty<I>) -> Fallible<()> {
8686
let interner = self.interner;
8787
// ^^ ^^ ^^ FIXME rustc bug
88-
if let Some(n_a) = self.table.normalize_ty_shallow(interner, a) {
89-
return self.unify_ty_ty(&n_a, b);
90-
} else if let Some(n_b) = self.table.normalize_ty_shallow(interner, b) {
91-
return self.unify_ty_ty(a, &n_b);
92-
}
88+
89+
let n_a = self.table.normalize_ty_shallow(interner, a);
90+
let n_b = self.table.normalize_ty_shallow(interner, b);
91+
let a = n_a.as_ref().unwrap_or(a);
92+
let b = n_b.as_ref().unwrap_or(b);
9393

9494
debug_heading!(
9595
"unify_ty_ty(a={:?}\

0 commit comments

Comments
 (0)