Auto merge of #91255 - b-naber:normalization-ice, r=jackh276
Implement version of normalize_erasing_regions that allows for normalization failure Fixes https://github.com/rust-lang/rust/issues/59324 Fixes https://github.com/rust-lang/rust/issues/67684 Fixes https://github.com/rust-lang/rust/issues/69398 Fixes https://github.com/rust-lang/rust/issues/71113 Fixes https://github.com/rust-lang/rust/issues/82079 Fixes #85103 Fixes https://github.com/rust-lang/rust/issues/88856 Fixes #91231 Fixes https://github.com/rust-lang/rust/issues/91234 Previously we called `normalize_erasing_regions` inside `layout_of`. `normalize_erasing_regions` assumes that the normalization succeeds. Since some `layout_of` calls happen before typecheck has finished, we introduce a new variant that allows for returning an error.
This commit is contained in:
commit
f04a2f4b8e
18 changed files with 600 additions and 5 deletions
|
@ -1337,7 +1337,9 @@ impl<'tcx> LateLintPass<'tcx> for VariantSizeDifferences {
|
|||
let layout = match cx.layout_of(ty) {
|
||||
Ok(layout) => layout,
|
||||
Err(
|
||||
ty::layout::LayoutError::Unknown(_) | ty::layout::LayoutError::SizeOverflow(_),
|
||||
ty::layout::LayoutError::Unknown(_)
|
||||
| ty::layout::LayoutError::SizeOverflow(_)
|
||||
| ty::layout::LayoutError::NormalizationFailure(_, _),
|
||||
) => return,
|
||||
};
|
||||
let (variants, tag) = match layout.variants {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue