Skip to content

Commit 04b57da

Browse files
committed
Rebase fixes
1 parent 7e48a62 commit 04b57da

File tree

2 files changed

+29
-17
lines changed

2 files changed

+29
-17
lines changed

chalk-ir/src/lib.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1512,13 +1512,17 @@ impl<T> UCanonical<T> {
15121512
binders
15131513
.iter()
15141514
.enumerate()
1515-
.map(|(index, pk)| match pk {
1516-
ParameterKind::Ty(_) => {
1517-
ParameterKind::Ty(TyData::BoundVar(index).intern(interner)).intern(interner)
1518-
}
1519-
ParameterKind::Lifetime(_) => {
1520-
ParameterKind::Lifetime(LifetimeData::BoundVar(index).intern(interner))
1521-
.intern(interner)
1515+
.map(|(index, pk)| {
1516+
let bound_var = BoundVar::new(DebruijnIndex::INNERMOST, index);
1517+
match pk {
1518+
ParameterKind::Ty(_) => {
1519+
ParameterKind::Ty(TyData::BoundVar(bound_var).intern(interner))
1520+
.intern(interner)
1521+
}
1522+
ParameterKind::Lifetime(_) => ParameterKind::Lifetime(
1523+
LifetimeData::BoundVar(bound_var).intern(interner),
1524+
)
1525+
.intern(interner),
15221526
}
15231527
})
15241528
.collect::<Vec<_>>(),

chalk-solve/src/clauses.rs

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -427,13 +427,13 @@ mod generalize {
427427
use chalk_ir::{
428428
fold::{Fold, Folder},
429429
interner::Interner,
430-
Binders, Lifetime, LifetimeData, ParameterKind, Ty, TyData,
430+
Binders, BoundVar, DebruijnIndex, Lifetime, LifetimeData, ParameterKind, Ty, TyData,
431431
};
432432
use std::collections::HashMap;
433433

434434
pub struct Generalize<'i, I: Interner> {
435435
binders: Vec<ParameterKind<()>>,
436-
mapping: HashMap<usize, usize>,
436+
mapping: HashMap<BoundVar, usize>,
437437
interner: &'i I,
438438
}
439439

@@ -444,7 +444,9 @@ mod generalize {
444444
mapping: HashMap::new(),
445445
interner,
446446
};
447-
let value = value.fold_with(&mut generalize, 0).unwrap();
447+
let value = value
448+
.fold_with(&mut generalize, DebruijnIndex::INNERMOST)
449+
.unwrap();
448450
Binders {
449451
binders: generalize.binders,
450452
value,
@@ -457,28 +459,34 @@ mod generalize {
457459
self
458460
}
459461

460-
fn fold_free_var_ty(&mut self, depth: usize, binders: usize) -> Fallible<Ty<I>> {
462+
fn fold_free_var_ty(
463+
&mut self,
464+
bound_var: BoundVar,
465+
outer_binder: DebruijnIndex,
466+
) -> Fallible<Ty<I>> {
461467
let binder_vec = &mut self.binders;
462-
let new_index = self.mapping.entry(depth).or_insert_with(|| {
468+
let new_index = self.mapping.entry(bound_var).or_insert_with(|| {
463469
let i = binder_vec.len();
464470
binder_vec.push(ParameterKind::Ty(()));
465471
i
466472
});
467-
Ok(TyData::BoundVar(*new_index + binders).intern(self.interner()))
473+
let new_var = BoundVar::new(outer_binder, *new_index);
474+
Ok(TyData::BoundVar(new_var).intern(self.interner()))
468475
}
469476

470477
fn fold_free_var_lifetime(
471478
&mut self,
472-
depth: usize,
473-
binders: usize,
479+
bound_var: BoundVar,
480+
outer_binder: DebruijnIndex,
474481
) -> Fallible<Lifetime<I>> {
475482
let binder_vec = &mut self.binders;
476-
let new_index = self.mapping.entry(depth).or_insert_with(|| {
483+
let new_index = self.mapping.entry(bound_var).or_insert_with(|| {
477484
let i = binder_vec.len();
478485
binder_vec.push(ParameterKind::Ty(()));
479486
i
480487
});
481-
Ok(LifetimeData::BoundVar(*new_index + binders).intern(self.interner()))
488+
let new_var = BoundVar::new(outer_binder, *new_index);
489+
Ok(LifetimeData::BoundVar(new_var).intern(self.interner()))
482490
}
483491

484492
fn interner(&self) -> &'i I {

0 commit comments

Comments
 (0)