Skip to content

Commit

Permalink
reveal_all when sanity-checking MIR assignment types
Browse files Browse the repository at this point in the history
  • Loading branch information
RalfJung committed Jun 22, 2020
1 parent 9576e30 commit 8200771
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions src/librustc_mir/transform/validate.rs
Expand Up @@ -90,8 +90,11 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
return true;
}
// Normalize projections and things like that.
let src = self.tcx.normalize_erasing_regions(self.param_env, src);
let dest = self.tcx.normalize_erasing_regions(self.param_env, dest);
// FIXME: We need to reveal_all, as some optimizations change types in ways
// that requires unfolding opaque types.
let param_env = self.param_env.with_reveal_all();
let src = self.tcx.normalize_erasing_regions(param_env, src);
let dest = self.tcx.normalize_erasing_regions(param_env, dest);
// It's worth checking equality again.
if src == dest {
return true;
Expand Down Expand Up @@ -119,7 +122,7 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
// lead to wrong errors.
lt_op: |_| self.tcx.lifetimes.re_erased,
// Evaluate consts.
ct_op: |ct| ct.eval(self.tcx, self.param_env),
ct_op: |ct| ct.eval(self.tcx, param_env),
})
};
normalize(src) == normalize(dest)
Expand Down

0 comments on commit 8200771

Please sign in to comment.