diff options
| author | Ralf Jung <post@ralfj.de> | 2020-06-01 21:04:11 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2020-06-22 09:19:08 +0200 |
| commit | 9576e307a7b8ac0c812fac927d247761662e7d1a (patch) | |
| tree | 5423fea0b435a3d6bff7095a409cb47c0ff8d448 | |
| parent | 93e3552d040edfa67cdedfe2fe4a44fe0c4ead59 (diff) | |
| download | rust-9576e307a7b8ac0c812fac927d247761662e7d1a.tar.gz rust-9576e307a7b8ac0c812fac927d247761662e7d1a.zip | |
also normalize_erasing_regions
| -rw-r--r-- | src/librustc_mir/transform/validate.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/librustc_mir/transform/validate.rs b/src/librustc_mir/transform/validate.rs index 14c67c2372c..40189ca5c12 100644 --- a/src/librustc_mir/transform/validate.rs +++ b/src/librustc_mir/transform/validate.rs @@ -89,6 +89,13 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> { // Equal types, all is good. 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); + // It's worth checking equality again. + if src == dest { + return true; + } // Type-changing assignments can happen for (at least) two reasons: // 1. `&mut T` -> `&T` gets optimized from a reborrow to a mere assignment. |
