Rollup merge of #90646 - BoxyUwU:funky_ice, r=estebank
type error go brrrrrrrr Fixes #90444 when we relate something like: `fn(fn((), (), u32))` with `fn(fn((), (), ()))` we relate the inner fn ptrs: `fn((), (), u32)` with `fn((), (), ())` yielding a `TypeError::ArgumentSorts(_, 2)` which we then use as the `TypeError` for the `fn(fn(..))` which later causes the ICE as the `2` does not correspond to any input or output types in `fn(_)` r? `@estebank`
This commit is contained in:
commit
43fee0e0a9
4 changed files with 51 additions and 2 deletions
|
@ -187,8 +187,12 @@ impl<'tcx> Relate<'tcx> for ty::FnSig<'tcx> {
|
|||
})
|
||||
.enumerate()
|
||||
.map(|(i, r)| match r {
|
||||
Err(TypeError::Sorts(exp_found)) => Err(TypeError::ArgumentSorts(exp_found, i)),
|
||||
Err(TypeError::Mutability) => Err(TypeError::ArgumentMutability(i)),
|
||||
Err(TypeError::Sorts(exp_found) | TypeError::ArgumentSorts(exp_found, _)) => {
|
||||
Err(TypeError::ArgumentSorts(exp_found, i))
|
||||
}
|
||||
Err(TypeError::Mutability | TypeError::ArgumentMutability(_)) => {
|
||||
Err(TypeError::ArgumentMutability(i))
|
||||
}
|
||||
r => r,
|
||||
});
|
||||
Ok(ty::FnSig {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue