Skip to content

Commit

Permalink
Merge #11718
Browse files Browse the repository at this point in the history
11718: Fix const generic panic r=lnicola a=HKalbasi

fix #11688 (comment)

Co-authored-by: hkalbasi <hamidrezakalbasi@protonmail.com>
  • Loading branch information
bors[bot] and HKalbasi authored Mar 15, 2022
2 parents 7308b3e + 1f3d187 commit fb9e66d
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 3 deletions.
17 changes: 14 additions & 3 deletions crates/hir_ty/src/infer/expr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1088,9 +1088,20 @@ impl<'a> InferenceContext<'a> {
}
}
};
let supplied_params = substs.len();
for _ in supplied_params..total_len {
substs.push(GenericArgData::Ty(self.table.new_type_var()).intern(Interner));
for (id, data) in def_generics.iter().skip(substs.len()) {
match data {
TypeOrConstParamData::TypeParamData(_) => {
substs.push(GenericArgData::Ty(self.table.new_type_var()).intern(Interner))
}
TypeOrConstParamData::ConstParamData(_) => {
substs.push(
GenericArgData::Const(self.table.new_const_var(
self.db.const_param_ty(ConstParamId::from_unchecked(id)),
))
.intern(Interner),
)
}
}
}
assert_eq!(substs.len(), total_len);
Substitution::from_iter(Interner, substs)
Expand Down
23 changes: 23 additions & 0 deletions crates/hir_ty/src/tests/regression.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1431,3 +1431,26 @@ fn nalgebra_factorial() {
"#,
)
}

#[test]
fn regression_11688_1() {
check_no_mismatches(
r#"
pub struct Buffer<T>(T);
type Writer = Buffer<u8>;
impl<T> Buffer<T> {
fn extend_from_array<const N: usize>(&mut self, xs: &[T; N]) {
loop {}
}
}
trait Encode<S> {
fn encode(self, w: &mut Writer, s: &mut S);
}
impl<S> Encode<S> for u8 {
fn encode(self, w: &mut Writer, _: &mut S) {
w.extend_from_array(&self.to_le_bytes());
}
}
"#,
);
}

0 comments on commit fb9e66d

Please sign in to comment.