diff options
author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-05-16 20:12:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-16 20:12:17 +0200 |
commit | 6dc365003bce4cdc11e73fcfe4c61c6da56acd65 (patch) | |
tree | 5ba226a580143e2e73db8d6628432780fe322a8a /compiler | |
parent | 426dbcdf9208ff7c58b248e8adb4e933babd8ab1 (diff) | |
parent | bd31d9ee9c772e10fb256ba177b738170862ac9e (diff) | |
download | rust-6dc365003bce4cdc11e73fcfe4c61c6da56acd65.tar.gz |
Rollup merge of #111573 - compiler-errors:erase-re-error, r=WaffleLapkin
Erase `ReError` properly
Fixes #111341
Since we check whether a type has free regions before erasing (to short circuit unnecesary folding), we need to consider `ReError` as a free region, or else we'll skip it when erasing a type that only mentions `ReError`.
cc `@nnethercote`
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/rustc_middle/src/ty/sty.rs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/compiler/rustc_middle/src/ty/sty.rs b/compiler/rustc_middle/src/ty/sty.rs index d175cf72d67..e6d51c4ec97 100644 --- a/compiler/rustc_middle/src/ty/sty.rs +++ b/compiler/rustc_middle/src/ty/sty.rs @@ -1708,7 +1708,9 @@ impl<'tcx> Region<'tcx> { ty::ReErased => { flags = flags | TypeFlags::HAS_RE_ERASED; } - ty::ReError(_) => {} + ty::ReError(_) => { + flags = flags | TypeFlags::HAS_FREE_REGIONS; + } } debug!("type_flags({:?}) = {:?}", self, flags); |