diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2020-03-17 03:05:14 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-03-17 03:05:14 +0100 |
| commit | 1b0c73bafff841c5d51f0b5cd12d4463c19ac888 (patch) | |
| tree | 840f7d98ce4802c41462cb1fe8156106000b7d20 /src | |
| parent | 9fc5c2d00d9834549846a4d6528219f0b1667c9c (diff) | |
| parent | 81099c27ddc856238d7b1b15c20d487130ef3057 (diff) | |
| download | rust-1b0c73bafff841c5d51f0b5cd12d4463c19ac888.tar.gz rust-1b0c73bafff841c5d51f0b5cd12d4463c19ac888.zip | |
Rollup merge of #69881 - Centril:fix-69485, r=oli-obk
VariantSizeDifferences: bail on SizeOverflow Fixes #69485. r? @oli-obk
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_lint/types.rs | 6 | ||||
| -rw-r--r-- | src/test/ui/lint/issue-69485-var-size-diffs-too-large.rs | 10 | ||||
| -rw-r--r-- | src/test/ui/lint/issue-69485-var-size-diffs-too-large.stderr | 8 |
3 files changed, 20 insertions, 4 deletions
diff --git a/src/librustc_lint/types.rs b/src/librustc_lint/types.rs index b5c0296e297..4949c93d45e 100644 --- a/src/librustc_lint/types.rs +++ b/src/librustc_lint/types.rs @@ -1032,10 +1032,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 { diff --git a/src/test/ui/lint/issue-69485-var-size-diffs-too-large.rs b/src/test/ui/lint/issue-69485-var-size-diffs-too-large.rs new file mode 100644 index 00000000000..49d489d9168 --- /dev/null +++ b/src/test/ui/lint/issue-69485-var-size-diffs-too-large.rs @@ -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]), +} diff --git a/src/test/ui/lint/issue-69485-var-size-diffs-too-large.stderr b/src/test/ui/lint/issue-69485-var-size-diffs-too-large.stderr new file mode 100644 index 00000000000..d31ce9cfe0c --- /dev/null +++ b/src/test/ui/lint/issue-69485-var-size-diffs-too-large.stderr @@ -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 + |
