Skip to content

Commit

Permalink
VariantSizeDifferences: bail on SizeOverflow
Browse files Browse the repository at this point in the history
  • Loading branch information
Centril committed Mar 10, 2020
1 parent 3dbade6 commit 9263cbb
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 4 deletions.
6 changes: 2 additions & 4 deletions src/librustc_lint/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -998,10 +998,8 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for VariantSizeDifferences {
let ty = cx.tcx.erase_regions(&t);
let layout = match cx.layout_of(ty) {
Ok(layout) => layout,
Err(ty::layout::LayoutError::Unknown(_)) => return,
Err(err @ ty::layout::LayoutError::SizeOverflow(_)) => {
bug!("failed to get layout for `{}`: {}", t, err);
}
Err(ty::layout::LayoutError::Unknown(_))
| Err(ty::layout::LayoutError::SizeOverflow(_)) => return,
};
let (variants, tag) = match layout.variants {
layout::Variants::Multiple {
Expand Down
9 changes: 9 additions & 0 deletions src/test/ui/lint/issue-69485-var-size-diffs-too-large.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// build-fail

fn main() {
Bug::V([0; !0]); //~ ERROR is too big for the current
}

enum Bug {
V([u8; !0]),
}
8 changes: 8 additions & 0 deletions src/test/ui/lint/issue-69485-var-size-diffs-too-large.stderr
Original file line number Diff line number Diff line change
@@ -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:4:12
|
LL | Bug::V([0; !0]);
| ^^^^^^^

error: aborting due to previous error

0 comments on commit 9263cbb

Please sign in to comment.