Auto merge of #65099 - pnkfelix:issue-63154-needed-more-normalize, r=nagisa
MIR typeck needed more normalize Add some missing normalization calls (@nagisa [was right](https://github.com/rust-lang/rust/issues/63154#issuecomment-517305589)). Fix #63154
This commit is contained in:
commit
3da6836cc9
2 changed files with 37 additions and 0 deletions
|
@ -1396,7 +1396,9 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
|
|||
};
|
||||
|
||||
let place_ty = place.ty(body, tcx).ty;
|
||||
let place_ty = self.normalize(place_ty, location);
|
||||
let rv_ty = rv.ty(body, tcx);
|
||||
let rv_ty = self.normalize(rv_ty, location);
|
||||
if let Err(terr) =
|
||||
self.sub_types_or_anon(rv_ty, place_ty, location.to_locations(), category)
|
||||
{
|
||||
|
@ -1672,6 +1674,7 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
|
|||
match *destination {
|
||||
Some((ref dest, _target_block)) => {
|
||||
let dest_ty = dest.ty(body, tcx).ty;
|
||||
let dest_ty = self.normalize(dest_ty, term_location);
|
||||
let category = match *dest {
|
||||
Place {
|
||||
base: PlaceBase::Local(RETURN_PLACE),
|
||||
|
|
34
src/test/ui/nll/issue-63154-normalize.rs
Normal file
34
src/test/ui/nll/issue-63154-normalize.rs
Normal file
|
@ -0,0 +1,34 @@
|
|||
// Regression test for rust-lang/rust#63154
|
||||
//
|
||||
// Before, we would ICE after failing to normalize the destination type
|
||||
// when checking call destinations and also when checking MIR
|
||||
// assignment statements.
|
||||
|
||||
// check-pass
|
||||
|
||||
trait HasAssocType {
|
||||
type Inner;
|
||||
}
|
||||
|
||||
impl HasAssocType for () {
|
||||
type Inner = ();
|
||||
}
|
||||
|
||||
trait Tr<I, T>: Fn(I) -> Option<T> {}
|
||||
impl<I, T, Q: Fn(I) -> Option<T>> Tr<I, T> for Q {}
|
||||
|
||||
fn f<T: HasAssocType>() -> impl Tr<T, T::Inner> {
|
||||
|_| None
|
||||
}
|
||||
|
||||
fn g<T, Y>(f: impl Tr<T, Y>) -> impl Tr<T, Y> {
|
||||
f
|
||||
}
|
||||
|
||||
fn h() {
|
||||
g(f())(());
|
||||
}
|
||||
|
||||
fn main() {
|
||||
h();
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue