Skip to content

Commit 8cf6537

Browse files
committed
change ucanonicalize from folder to visitor
1 parent 22f04dd commit 8cf6537

File tree

1 file changed

+12
-16
lines changed

1 file changed

+12
-16
lines changed

chalk-solve/src/infer/ucanonicalize.rs

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
use chalk_engine::fallible::*;
22
use chalk_ir::fold::{Fold, Folder};
3+
use chalk_ir::visit::{Visit, Visitor};
34
use chalk_ir::interner::Interner;
45
use chalk_ir::*;
56

67
use super::InferenceTable;
78

89
impl<I: Interner> InferenceTable<I> {
9-
pub(crate) fn u_canonicalize<T: Fold<I>>(
10+
pub(crate) fn u_canonicalize<T: Fold<I> + Visit<I>>(
1011
&mut self,
1112
interner: &I,
1213
value0: &Canonical<T>,
@@ -17,14 +18,13 @@ impl<I: Interner> InferenceTable<I> {
1718
let mut universes = UniverseMap::new();
1819
value0
1920
.value
20-
.fold_with(
21+
.visit_with(
2122
&mut UCollector {
2223
universes: &mut universes,
2324
interner,
2425
},
2526
DebruijnIndex::INNERMOST,
26-
)
27-
.unwrap();
27+
);
2828

2929
// Now re-map the universes found in value. We have to do this
3030
// in a second pass because it is only then that we know the
@@ -239,30 +239,30 @@ struct UCollector<'q, 'i, I> {
239239
interner: &'i I,
240240
}
241241

242-
impl<'i, I: Interner> Folder<'i, I> for UCollector<'_, 'i, I>
242+
impl<'i, I: Interner> Visitor<'i, I> for UCollector<'_, 'i, I>
243243
where
244244
I: 'i,
245245
{
246-
fn as_dyn(&mut self) -> &mut dyn Folder<'i, I> {
246+
type Result = ();
247+
248+
fn as_dyn(&mut self) -> &mut dyn Visitor<'i, I, Result = ()> {
247249
self
248250
}
249251

250-
fn fold_free_placeholder_ty(
252+
fn visit_free_placeholder_ty(
251253
&mut self,
252254
universe: PlaceholderIndex,
253255
_outer_binder: DebruijnIndex,
254-
) -> Fallible<Ty<I>> {
256+
) {
255257
self.universes.add(universe.ui);
256-
Ok(universe.to_ty::<I>(self.interner()))
257258
}
258259

259-
fn fold_free_placeholder_lifetime(
260+
fn visit_free_placeholder_lifetime(
260261
&mut self,
261262
universe: PlaceholderIndex,
262263
_outer_binder: DebruijnIndex,
263-
) -> Fallible<Lifetime<I>> {
264+
) {
264265
self.universes.add(universe.ui);
265-
Ok(universe.to_lifetime(self.interner()))
266266
}
267267

268268
fn forbid_inference_vars(&self) -> bool {
@@ -272,10 +272,6 @@ where
272272
fn interner(&self) -> &'i I {
273273
self.interner
274274
}
275-
276-
fn target_interner(&self) -> &'i I {
277-
self.interner()
278-
}
279275
}
280276

281277
struct UMapToCanonical<'q, I> {

0 commit comments

Comments
 (0)