VariantSizeDifferences: bail on SizeOverflow
This commit is contained in:
parent
5da2e53f47
commit
81099c27dd
@ -998,10 +998,8 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for VariantSizeDifferences {
|
|||||||
let ty = cx.tcx.erase_regions(&t);
|
let ty = cx.tcx.erase_regions(&t);
|
||||||
let layout = match cx.layout_of(ty) {
|
let layout = match cx.layout_of(ty) {
|
||||||
Ok(layout) => layout,
|
Ok(layout) => layout,
|
||||||
Err(ty::layout::LayoutError::Unknown(_)) => return,
|
Err(ty::layout::LayoutError::Unknown(_))
|
||||||
Err(err @ ty::layout::LayoutError::SizeOverflow(_)) => {
|
| Err(ty::layout::LayoutError::SizeOverflow(_)) => return,
|
||||||
bug!("failed to get layout for `{}`: {}", t, err);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
let (variants, tag) = match layout.variants {
|
let (variants, tag) = match layout.variants {
|
||||||
layout::Variants::Multiple {
|
layout::Variants::Multiple {
|
||||||
|
10
src/test/ui/lint/issue-69485-var-size-diffs-too-large.rs
Normal file
10
src/test/ui/lint/issue-69485-var-size-diffs-too-large.rs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
// build-fail
|
||||||
|
// only-x86_64
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
Bug::V([0; !0]); //~ ERROR is too big for the current
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Bug {
|
||||||
|
V([u8; !0]),
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
error: the type `[u8; 18446744073709551615]` is too big for the current architecture
|
||||||
|
--> $DIR/issue-69485-var-size-diffs-too-large.rs:5:12
|
||||||
|
|
|
||||||
|
LL | Bug::V([0; !0]);
|
||||||
|
| ^^^^^^^
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
Loading…
Reference in New Issue
Block a user