diff options
| author | Manish Goregaokar <manishsmail@gmail.com> | 2021-10-06 12:33:18 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-06 12:33:18 -0700 |
| commit | b87a9a8a7c40484bc94515fd6d51e6e271ad4cb8 (patch) | |
| tree | c74bddaf74a414dbedae743b8d53b6eba6b604ed | |
| parent | b4615b5bf9e3e722b480190714ad44ecd7fa2ed1 (diff) | |
| parent | 25b6f9b68b6ff4bdcce01feaa5259ff2786c4851 (diff) | |
| download | rust-b87a9a8a7c40484bc94515fd6d51e6e271ad4cb8.tar.gz rust-b87a9a8a7c40484bc94515fd6d51e6e271ad4cb8.zip | |
Rollup merge of #89329 - tmiasko:print-type-sizes-no-fields, r=jackh726
print-type-sizes: skip field printing for primitives Fixes #86528.
| -rw-r--r-- | compiler/rustc_middle/src/ty/layout.rs | 7 | ||||
| -rw-r--r-- | src/test/ui/print_type_sizes/uninhabited.rs | 2 | ||||
| -rw-r--r-- | src/test/ui/print_type_sizes/uninhabited.stdout | 1 |
3 files changed, 7 insertions, 3 deletions
diff --git a/compiler/rustc_middle/src/ty/layout.rs b/compiler/rustc_middle/src/ty/layout.rs index f13531814d6..fee13fd2e2e 100644 --- a/compiler/rustc_middle/src/ty/layout.rs +++ b/compiler/rustc_middle/src/ty/layout.rs @@ -1826,8 +1826,11 @@ impl<'tcx> LayoutCx<'tcx, TyCtxt<'tcx>> { match layout.variants { Variants::Single { index } => { - debug!("print-type-size `{:#?}` variant {}", layout, adt_def.variants[index].ident); - if !adt_def.variants.is_empty() { + if !adt_def.variants.is_empty() && layout.fields != FieldsShape::Primitive { + debug!( + "print-type-size `{:#?}` variant {}", + layout, adt_def.variants[index].ident + ); let variant_def = &adt_def.variants[index]; let fields: Vec<_> = variant_def.fields.iter().map(|f| f.ident.name).collect(); record( diff --git a/src/test/ui/print_type_sizes/uninhabited.rs b/src/test/ui/print_type_sizes/uninhabited.rs index c234547bd14..06a62db4ebb 100644 --- a/src/test/ui/print_type_sizes/uninhabited.rs +++ b/src/test/ui/print_type_sizes/uninhabited.rs @@ -11,5 +11,5 @@ fn start(_: isize, _: *const *const u8) -> isize { let _x: Option<!> = None; let _y: Result<u32, !> = Ok(42); - 0 + let _z: Result<!, !> = loop {}; } diff --git a/src/test/ui/print_type_sizes/uninhabited.stdout b/src/test/ui/print_type_sizes/uninhabited.stdout index 2a8706f7ac5..5eb5384bce3 100644 --- a/src/test/ui/print_type_sizes/uninhabited.stdout +++ b/src/test/ui/print_type_sizes/uninhabited.stdout @@ -3,3 +3,4 @@ print-type-size variant `Ok`: 4 bytes print-type-size field `.0`: 4 bytes print-type-size type: `std::option::Option<!>`: 0 bytes, alignment: 1 bytes print-type-size variant `None`: 0 bytes +print-type-size type: `std::result::Result<!, !>`: 0 bytes, alignment: 1 bytes |
