Skip to content

Commit

Permalink
Auto merge of rust-lang#65099 - pnkfelix:issue-63154-needed-more-norm…
Browse files Browse the repository at this point in the history
…alize, r=nagisa

MIR typeck needed more normalize

Add some missing normalization calls (@nagisa [was right](rust-lang#63154 (comment))).

Fix rust-lang#63154
  • Loading branch information
bors committed Oct 13, 2019
2 parents 80b861b + 00bf29b commit 3da6836
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/librustc_mir/borrow_check/nll/type_check/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down Expand Up @@ -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),
Expand Down
34 changes: 34 additions & 0 deletions src/test/ui/nll/issue-63154-normalize.rs
Original file line number Diff line number Diff line change
@@ -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();
}

0 comments on commit 3da6836

Please sign in to comment.