1
1
use chalk_engine:: fallible:: * ;
2
2
use chalk_ir:: fold:: { Fold , Folder } ;
3
+ use chalk_ir:: visit:: { Visit , Visitor } ;
3
4
use chalk_ir:: interner:: Interner ;
4
5
use chalk_ir:: * ;
5
6
6
7
use super :: InferenceTable ;
7
8
8
9
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 > > (
10
11
& mut self ,
11
12
interner : & I ,
12
13
value0 : & Canonical < T > ,
@@ -17,14 +18,13 @@ impl<I: Interner> InferenceTable<I> {
17
18
let mut universes = UniverseMap :: new ( ) ;
18
19
value0
19
20
. value
20
- . fold_with (
21
+ . visit_with (
21
22
& mut UCollector {
22
23
universes : & mut universes,
23
24
interner,
24
25
} ,
25
26
DebruijnIndex :: INNERMOST ,
26
- )
27
- . unwrap ( ) ;
27
+ ) ;
28
28
29
29
// Now re-map the universes found in value. We have to do this
30
30
// in a second pass because it is only then that we know the
@@ -239,30 +239,30 @@ struct UCollector<'q, 'i, I> {
239
239
interner : & ' i I ,
240
240
}
241
241
242
- impl < ' i , I : Interner > Folder < ' i , I > for UCollector < ' _ , ' i , I >
242
+ impl < ' i , I : Interner > Visitor < ' i , I > for UCollector < ' _ , ' i , I >
243
243
where
244
244
I : ' i ,
245
245
{
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 = ( ) > {
247
249
self
248
250
}
249
251
250
- fn fold_free_placeholder_ty (
252
+ fn visit_free_placeholder_ty (
251
253
& mut self ,
252
254
universe : PlaceholderIndex ,
253
255
_outer_binder : DebruijnIndex ,
254
- ) -> Fallible < Ty < I > > {
256
+ ) {
255
257
self . universes . add ( universe. ui ) ;
256
- Ok ( universe. to_ty :: < I > ( self . interner ( ) ) )
257
258
}
258
259
259
- fn fold_free_placeholder_lifetime (
260
+ fn visit_free_placeholder_lifetime (
260
261
& mut self ,
261
262
universe : PlaceholderIndex ,
262
263
_outer_binder : DebruijnIndex ,
263
- ) -> Fallible < Lifetime < I > > {
264
+ ) {
264
265
self . universes . add ( universe. ui ) ;
265
- Ok ( universe. to_lifetime ( self . interner ( ) ) )
266
266
}
267
267
268
268
fn forbid_inference_vars ( & self ) -> bool {
@@ -272,10 +272,6 @@ where
272
272
fn interner ( & self ) -> & ' i I {
273
273
self . interner
274
274
}
275
-
276
- fn target_interner ( & self ) -> & ' i I {
277
- self . interner ( )
278
- }
279
275
}
280
276
281
277
struct UMapToCanonical < ' q , I > {
0 commit comments