Skip to content

Commit 8200771

Browse files
committed
reveal_all when sanity-checking MIR assignment types
1 parent 9576e30 commit 8200771

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/librustc_mir/transform/validate.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,11 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
9090
return true;
9191
}
9292
// Normalize projections and things like that.
93-
let src = self.tcx.normalize_erasing_regions(self.param_env, src);
94-
let dest = self.tcx.normalize_erasing_regions(self.param_env, dest);
93+
// FIXME: We need to reveal_all, as some optimizations change types in ways
94+
// that requires unfolding opaque types.
95+
let param_env = self.param_env.with_reveal_all();
96+
let src = self.tcx.normalize_erasing_regions(param_env, src);
97+
let dest = self.tcx.normalize_erasing_regions(param_env, dest);
9598
// It's worth checking equality again.
9699
if src == dest {
97100
return true;
@@ -119,7 +122,7 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
119122
// lead to wrong errors.
120123
lt_op: |_| self.tcx.lifetimes.re_erased,
121124
// Evaluate consts.
122-
ct_op: |ct| ct.eval(self.tcx, self.param_env),
125+
ct_op: |ct| ct.eval(self.tcx, param_env),
123126
})
124127
};
125128
normalize(src) == normalize(dest)

0 commit comments

Comments
 (0)