Skip to content

Commit 9b2f61d

Browse files
committed
Fix function pointers of different param counts unifying
1 parent 514ca40 commit 9b2f61d

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

chalk-ir/src/zip.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,9 @@ impl<I: Interner> Zip<I> for FnSubst<I> {
524524
b: &Self,
525525
) -> Fallible<()> {
526526
let interner = zipper.interner();
527+
if a.0.len(interner) != b.0.len(interner) {
528+
return Err(NoSolution);
529+
}
527530
// Parameters
528531
for (a, b) in a.0.as_slice(interner)[..a.0.len(interner) - 1]
529532
.iter()

tests/test/unify.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,13 @@ fn forall_equality() {
149149
expect![["Unique"]]
150150
}
151151

152+
goal {
153+
// Function pointers with different parameters should not be equal.
154+
fn(u32): Eq<fn(u32, u32)>
155+
} yields {
156+
expect![["No possible solution"]]
157+
}
158+
152159
goal {
153160
// Variadic function pointers should not be equal to non-variadic fn pointers.
154161
fn(u8, ...): Eq<fn(u8)>

0 commit comments

Comments
 (0)