Skip to content

Commit e6dec10

Browse files
authored
Merge pull request #378 from crlf0710/fn2substitution
Change `Vec<Parameter>` to `Substitution` in `Fn`
2 parents 30efe09 + b6223f5 commit e6dec10

File tree

8 files changed

+18
-13
lines changed

8 files changed

+18
-13
lines changed

chalk-integration/src/lowering.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
use chalk_ir::cast::{Cast, Caster};
22
use chalk_ir::interner::ChalkIr;
3-
use chalk_ir::{self, AssocTypeId, BoundVar, DebruijnIndex, ImplId, StructId, TraitId};
3+
use chalk_ir::{
4+
self, AssocTypeId, BoundVar, DebruijnIndex, ImplId, StructId, Substitution, TraitId,
5+
};
46
use chalk_parse::ast::*;
57
use chalk_rust_ir as rust_ir;
68
use chalk_rust_ir::{Anonymize, AssociatedTyValueId, IntoWhereClauses, ToParameter};
@@ -1070,7 +1072,10 @@ impl LowerTy for Ty {
10701072

10711073
let function = chalk_ir::Fn {
10721074
num_binders: lifetime_names.len(),
1073-
parameters: vec![ty.lower(&quantified_env)?.cast(interner)],
1075+
substitution: Substitution::from(
1076+
interner,
1077+
Some(ty.lower(&quantified_env)?.cast(interner)),
1078+
),
10741079
};
10751080
Ok(chalk_ir::TyData::Function(function).intern(interner))
10761081
}

chalk-ir/src/debug.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,9 +163,9 @@ impl<I: Interner> Debug for Fn<I> {
163163
// FIXME -- we should introduce some names or something here
164164
let Fn {
165165
num_binders,
166-
parameters,
166+
substitution,
167167
} = self;
168-
write!(fmt, "for<{}> {:?}", num_binders, parameters)
168+
write!(fmt, "for<{}> {:?}", num_binders, substitution)
169169
}
170170
}
171171

chalk-ir/src/fold/binder_impls.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ impl<I: Interner, TI: TargetInterner<I>> Fold<I, TI> for Fn<I> {
1919
{
2020
let Fn {
2121
num_binders,
22-
parameters,
22+
substitution,
2323
} = self;
2424
Ok(Fn {
2525
num_binders: *num_binders,
26-
parameters: parameters.fold_with(folder, outer_binder.shifted_in())?,
26+
substitution: substitution.fold_with(folder, outer_binder.shifted_in())?,
2727
})
2828
}
2929
}

chalk-ir/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -576,7 +576,7 @@ impl InferenceVar {
576576
#[derive(Clone, PartialEq, Eq, Hash, HasInterner)]
577577
pub struct Fn<I: Interner> {
578578
pub num_binders: usize,
579-
pub parameters: Vec<Parameter<I>>,
579+
pub substitution: Substitution<I>,
580580
}
581581

582582
#[derive(Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord, HasInterner)]

chalk-ir/src/macros.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ macro_rules! ty {
1212
(function $n:tt $($arg:tt)*) => {
1313
$crate::TyData::Function(Fn {
1414
num_binders: $n,
15-
parameters: vec![$(arg!($arg)),*],
15+
substitution: $crate::Substitution::from(&chalk_ir::interner::ChalkIr, vec![$(arg!($arg)),*] as Vec<$crate::Parameter<_>>),
1616
}).intern(&chalk_ir::interner::ChalkIr)
1717
};
1818

chalk-solve/src/clauses.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -362,8 +362,8 @@ fn match_ty<I: Interner>(
362362
TyData::Function(quantified_ty) => {
363363
builder.push_fact(WellFormed::Ty(ty.clone()));
364364
quantified_ty
365-
.parameters
366-
.iter()
365+
.substitution
366+
.iter(interner)
367367
.map(|p| p.assert_ty_ref(interner))
368368
.for_each(|ty| match_ty(builder, environment, &ty))
369369
}

chalk-solve/src/infer/instantiate.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,15 +123,15 @@ where
123123
I: Interner,
124124
{
125125
type Binders = std::iter::Map<std::ops::Range<usize>, fn(usize) -> chalk_ir::ParameterKind<()>>;
126-
type Value = &'a Vec<Parameter<I>>;
126+
type Value = &'a Substitution<I>;
127127

128128
fn into_binders_and_value(self) -> (Self::Binders, Self::Value) {
129129
fn make_lifetime(_: usize) -> ParameterKind<()> {
130130
ParameterKind::Lifetime(())
131131
}
132132

133133
let p: fn(usize) -> ParameterKind<()> = make_lifetime;
134-
((0..self.num_binders).map(p), &self.parameters)
134+
((0..self.num_binders).map(p), &self.substitution)
135135
}
136136
}
137137

chalk-solve/src/solve/slg/resolvent.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ impl<'i, I: Interner> Zipper<'i, I> for AnswerSubstitutor<'i, I> {
418418

419419
(TyData::Function(answer), TyData::Function(pending)) => {
420420
self.outer_binder.shift_in();
421-
Zip::zip_with(self, &answer.parameters, &pending.parameters)?;
421+
Zip::zip_with(self, &answer.substitution, &pending.substitution)?;
422422
self.outer_binder.shift_out();
423423
Ok(())
424424
}

0 commit comments

Comments
 (0)