Skip to content

Commit 9d732cd

Browse files
committed
fmt and add gat test
1 parent d0c37db commit 9d732cd

File tree

6 files changed

+55
-22
lines changed

6 files changed

+55
-22
lines changed

chalk-integration/src/lowering.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,6 @@ impl<'k> Env<'k> {
140140
Err(RustIrError::InvalidConstName(name))
141141
}
142142

143-
144143
fn struct_kind(&self, id: chalk_ir::StructId<ChalkIr>) -> &TypeKind {
145144
&self.struct_kinds[&id]
146145
}
@@ -703,7 +702,7 @@ impl LowerLeafGoal for LeafGoal {
703702
a: a.lower(env)?.cast(interner),
704703
b: b.lower(env)?.cast(interner),
705704
}
706-
.cast::<chalk_ir::Goal<ChalkIr>>(interner)
705+
.cast::<chalk_ir::Goal<ChalkIr>>(interner),
707706
})
708707
}
709708
}
@@ -1120,19 +1119,20 @@ impl LowerParameter for Parameter {
11201119
}
11211120

11221121
trait LowerConst {
1123-
fn lower(&self, env: &Env) -> LowerResult<chalk_ir::Const<ChalkIr>>;
1122+
fn lower(&self, env: &Env) -> LowerResult<chalk_ir::Const<ChalkIr>>;
11241123
}
11251124

11261125
impl LowerConst for Const {
11271126
fn lower(&self, env: &Env) -> LowerResult<chalk_ir::Const<ChalkIr>> {
11281127
let interner = env.interner();
11291128
match *self {
11301129
Const::Id { name } => match env.lookup_const(name)? {
1131-
ConstLookup::Parameter(d) => {
1132-
Ok(chalk_ir::ConstData::BoundVar(d).intern(interner))
1133-
}
1130+
ConstLookup::Parameter(d) => Ok(chalk_ir::ConstData::BoundVar(d).intern(interner)),
11341131
},
1135-
Const::Value{ value } => Ok(chalk_ir::ConstData::Evaluated(chalk_ir::ConstEvaluated { interned: value }).intern(interner))
1132+
Const::Value { value } => Ok(chalk_ir::ConstData::Evaluated(
1133+
chalk_ir::ConstEvaluated { interned: value },
1134+
)
1135+
.intern(interner)),
11361136
}
11371137
}
11381138
}

chalk-ir/src/debug.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,10 @@ impl<I: Interner> Debug for Const<I> {
4141

4242
impl<I: Interner> Debug for ConstEvaluated<I> {
4343
fn fmt(&self, fmt: &mut Formatter<'_>) -> Result<(), Error> {
44-
write!(fmt, "{:?}", self.interned)
44+
write!(fmt, "{:?}", self.interned)
4545
}
4646
}
4747

48-
4948
impl<I: Interner> Debug for Parameter<I> {
5049
fn fmt(&self, fmt: &mut Formatter<'_>) -> Result<(), Error> {
5150
I::debug_parameter(self, fmt).unwrap_or_else(|| write!(fmt, "{:?}", self.interned))

chalk-ir/src/fold/shift.rs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,7 @@ impl<'i, I: Interner> Folder<'i, I> for Shifter<'i, I> {
9898
bound_var: BoundVar,
9999
outer_binder: DebruijnIndex,
100100
) -> Fallible<Const<I>> {
101-
Ok(
102-
ConstData::<I>::BoundVar(self.adjust(bound_var, outer_binder))
103-
.intern(self.interner()),
104-
)
101+
Ok(ConstData::<I>::BoundVar(self.adjust(bound_var, outer_binder)).intern(self.interner()))
105102
}
106103

107104
fn interner(&self) -> &'i I {
@@ -169,10 +166,7 @@ impl<'i, I: Interner> Folder<'i, I> for DownShifter<'i, I> {
169166
bound_var: BoundVar,
170167
outer_binder: DebruijnIndex,
171168
) -> Fallible<Const<I>> {
172-
Ok(
173-
ConstData::<I>::BoundVar(self.adjust(bound_var, outer_binder)?)
174-
.intern(self.interner()),
175-
)
169+
Ok(ConstData::<I>::BoundVar(self.adjust(bound_var, outer_binder)?).intern(self.interner()))
176170
}
177171

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

chalk-parse/src/ast.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ pub enum ParameterKind {
8888
pub enum Parameter {
8989
Ty(Ty),
9090
Lifetime(Lifetime),
91-
Const(Const)
91+
Const(Const),
9292
}
9393

9494
#[derive(Clone, PartialEq, Eq, Debug)]

chalk-solve/src/infer/canonicalize.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -222,10 +222,7 @@ where
222222
let free_var = ParameterKind::Const(self.table.unify.find(var));
223223
let bound_var = BoundVar::new(DebruijnIndex::INNERMOST, self.add(free_var));
224224
debug!("not yet unified: position={:?}", bound_var);
225-
Ok(
226-
ConstData::BoundVar(bound_var.shifted_in_from(outer_binder))
227-
.intern(interner),
228-
)
225+
Ok(ConstData::BoundVar(bound_var.shifted_in_from(outer_binder)).intern(interner))
229226
}
230227
}
231228
}

tests/test/projection.rs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,49 @@ fn normalize_gat2() {
232232
}
233233
}
234234

235+
#[test]
236+
fn normalize_gat_const() {
237+
test! {
238+
program {
239+
trait StreamingIterator<T> { type Item<$N>; }
240+
struct Span<$N, T> { }
241+
struct StreamIterMut<T> { }
242+
struct u32 { }
243+
impl<T> StreamingIterator<T> for StreamIterMut<T> {
244+
type Item<$N> = Span<$N, T>;
245+
}
246+
}
247+
248+
goal {
249+
forall<$N, T> {
250+
exists<U> {
251+
Normalize(<StreamIterMut<T> as StreamingIterator<T>>::Item<$N> -> U)
252+
}
253+
}
254+
} yields {
255+
"Unique; substitution [?0 := Span<!1_0, !1_1>], lifetime constraints []"
256+
}
257+
258+
goal {
259+
forall<$N, T> {
260+
<StreamIterMut<T> as StreamingIterator<T>>::Item<$N> = Span<$N, T>
261+
}
262+
} yields {
263+
"Unique; substitution [], lifetime constraints []"
264+
}
265+
266+
goal {
267+
forall<$N, T, U> {
268+
if (T: StreamingIterator<U, Item<$N> = Span<$N, U>>) {
269+
<T as StreamingIterator<U>>::Item<$N> = Span<$N, U>
270+
}
271+
}
272+
} yields {
273+
"Unique; substitution [], lifetime constraints []"
274+
}
275+
}
276+
}
277+
235278
#[test]
236279
fn normalize_gat_with_where_clause() {
237280
test! {

0 commit comments

Comments
 (0)