error: unions cannot have zero fields
  --> $DIR/debug.rs:84:1
   |
LL | union EmptyUnion {}
   | ^^^^^^^^^^^^^^^^^^^

error: `#[rustc_layout]` attribute cannot be used on constants
  --> $DIR/debug.rs:71:1
   |
LL | #[rustc_layout(debug)]
   | ^^^^^^^^^^^^^^^^^^^^^^
   |
   = help: `#[rustc_layout]` can be applied to data types and type aliases

error: `#[rustc_layout]` attribute cannot be used on associated consts
  --> $DIR/debug.rs:75:5
   |
LL |     #[rustc_layout(debug)]
   |     ^^^^^^^^^^^^^^^^^^^^^^
   |
   = help: `#[rustc_layout]` can be applied to data types and type aliases

error: layout_of(E) = Layout {
           size: Size(12 bytes),
           align: AbiAlign {
               abi: Align(4 bytes),
           },
           backend_repr: Memory {
               sized: true,
           },
           fields: Arbitrary {
               offsets: [
                   Size(0 bytes),
               ],
               in_memory_order: [
                   0,
               ],
           },
           largest_niche: Some(
               Niche {
                   offset: Size(0 bytes),
                   value: Int(
                       I32,
                       false,
                   ),
                   valid_range: 0..=0,
               },
           ),
           uninhabited: false,
           variants: Multiple {
               tag: Initialized {
                   value: Int(
                       I32,
                       false,
                   ),
                   valid_range: 0..=0,
               },
               tag_encoding: Direct,
               tag_field: 0,
               variants: [
                   Layout {
                       size: Size(4 bytes),
                       align: AbiAlign {
                           abi: Align(1 bytes),
                       },
                       backend_repr: Memory {
                           sized: true,
                       },
                       fields: Arbitrary {
                           offsets: [],
                           in_memory_order: [],
                       },
                       largest_niche: None,
                       uninhabited: false,
                       variants: Single {
                           index: 0,
                       },
                       max_repr_align: None,
                       unadjusted_abi_align: Align(1 bytes),
                       randomization_seed: $SEED,
                   },
                   Layout {
                       size: Size(12 bytes),
                       align: AbiAlign {
                           abi: Align(4 bytes),
                       },
                       backend_repr: Memory {
                           sized: true,
                       },
                       fields: Arbitrary {
                           offsets: [
                               Size(4 bytes),
                               Size(4 bytes),
                               Size(8 bytes),
                           ],
                           in_memory_order: [
                               0,
                               1,
                               2,
                           ],
                       },
                       largest_niche: None,
                       uninhabited: true,
                       variants: Single {
                           index: 1,
                       },
                       max_repr_align: None,
                       unadjusted_abi_align: Align(4 bytes),
                       randomization_seed: $SEED,
                   },
               ],
           },
           max_repr_align: None,
           unadjusted_abi_align: Align(4 bytes),
           randomization_seed: $SEED,
       }
  --> $DIR/debug.rs:8:1
   |
LL | enum E { Foo, Bar(!, i32, i32) }
   | ^^^^^^

error: layout_of(S) = Layout {
           size: Size(8 bytes),
           align: AbiAlign {
               abi: Align(4 bytes),
           },
           backend_repr: ScalarPair(
               Initialized {
                   value: Int(
                       I32,
                       true,
                   ),
                   valid_range: 0..=4294967295,
               },
               Initialized {
                   value: Int(
                       I32,
                       true,
                   ),
                   valid_range: 0..=4294967295,
               },
           ),
           fields: Arbitrary {
               offsets: [
                   Size(0 bytes),
                   Size(8 bytes),
                   Size(4 bytes),
               ],
               in_memory_order: [
                   0,
                   2,
                   1,
               ],
           },
           largest_niche: None,
           uninhabited: false,
           variants: Single {
               index: 0,
           },
           max_repr_align: None,
           unadjusted_abi_align: Align(4 bytes),
           randomization_seed: $SEED,
       }
  --> $DIR/debug.rs:11:1
   |
LL | struct S { f1: i32, f2: (), f3: i32 }
   | ^^^^^^^^

error: layout_of(U) = Layout {
           size: Size(8 bytes),
           align: AbiAlign {
               abi: Align(4 bytes),
           },
           backend_repr: Memory {
               sized: true,
           },
           fields: Union(
               2,
           ),
           largest_niche: None,
           uninhabited: false,
           variants: Single {
               index: 0,
           },
           max_repr_align: None,
           unadjusted_abi_align: Align(4 bytes),
           randomization_seed: $SEED,
       }
  --> $DIR/debug.rs:14:1
   |
LL | union U { f1: (i32, i32), f3: i32 }
   | ^^^^^^^

error: layout_of(Result<i32, i32>) = Layout {
           size: Size(8 bytes),
           align: AbiAlign {
               abi: Align(4 bytes),
           },
           backend_repr: ScalarPair(
               Initialized {
                   value: Int(
                       I32,
                       false,
                   ),
                   valid_range: 0..=1,
               },
               Initialized {
                   value: Int(
                       I32,
                       true,
                   ),
                   valid_range: 0..=4294967295,
               },
           ),
           fields: Arbitrary {
               offsets: [
                   Size(0 bytes),
               ],
               in_memory_order: [
                   0,
               ],
           },
           largest_niche: Some(
               Niche {
                   offset: Size(0 bytes),
                   value: Int(
                       I32,
                       false,
                   ),
                   valid_range: 0..=1,
               },
           ),
           uninhabited: false,
           variants: Multiple {
               tag: Initialized {
                   value: Int(
                       I32,
                       false,
                   ),
                   valid_range: 0..=1,
               },
               tag_encoding: Direct,
               tag_field: 0,
               variants: [
                   Layout {
                       size: Size(8 bytes),
                       align: AbiAlign {
                           abi: Align(4 bytes),
                       },
                       backend_repr: ScalarPair(
                           Initialized {
                               value: Int(
                                   I32,
                                   false,
                               ),
                               valid_range: 0..=1,
                           },
                           Initialized {
                               value: Int(
                                   I32,
                                   true,
                               ),
                               valid_range: 0..=4294967295,
                           },
                       ),
                       fields: Arbitrary {
                           offsets: [
                               Size(4 bytes),
                           ],
                           in_memory_order: [
                               0,
                           ],
                       },
                       largest_niche: None,
                       uninhabited: false,
                       variants: Single {
                           index: 0,
                       },
                       max_repr_align: None,
                       unadjusted_abi_align: Align(4 bytes),
                       randomization_seed: $SEED,
                   },
                   Layout {
                       size: Size(8 bytes),
                       align: AbiAlign {
                           abi: Align(4 bytes),
                       },
                       backend_repr: ScalarPair(
                           Initialized {
                               value: Int(
                                   I32,
                                   false,
                               ),
                               valid_range: 0..=1,
                           },
                           Initialized {
                               value: Int(
                                   I32,
                                   true,
                               ),
                               valid_range: 0..=4294967295,
                           },
                       ),
                       fields: Arbitrary {
                           offsets: [
                               Size(4 bytes),
                           ],
                           in_memory_order: [
                               0,
                           ],
                       },
                       largest_niche: None,
                       uninhabited: false,
                       variants: Single {
                           index: 1,
                       },
                       max_repr_align: None,
                       unadjusted_abi_align: Align(4 bytes),
                       randomization_seed: $SEED,
                   },
               ],
           },
           max_repr_align: None,
           unadjusted_abi_align: Align(4 bytes),
           randomization_seed: $SEED,
       }
  --> $DIR/debug.rs:17:1
   |
LL | type Test = Result<i32, i32>;
   | ^^^^^^^^^

error: layout_of(i32) = Layout {
           size: Size(4 bytes),
           align: AbiAlign {
               abi: Align(4 bytes),
           },
           backend_repr: Scalar(
               Initialized {
                   value: Int(
                       I32,
                       true,
                   ),
                   valid_range: 0..=4294967295,
               },
           ),
           fields: Primitive,
           largest_niche: None,
           uninhabited: false,
           variants: Single {
               index: 0,
           },
           max_repr_align: None,
           unadjusted_abi_align: Align(4 bytes),
           randomization_seed: $SEED,
       }
  --> $DIR/debug.rs:20:1
   |
LL | type T = impl std::fmt::Debug;
   | ^^^^^^

error: layout_of(V) = Layout {
           size: Size(2 bytes),
           align: AbiAlign {
               abi: Align(2 bytes),
           },
           backend_repr: Memory {
               sized: true,
           },
           fields: Union(
               2,
           ),
           largest_niche: None,
           uninhabited: false,
           variants: Single {
               index: 0,
           },
           max_repr_align: None,
           unadjusted_abi_align: Align(2 bytes),
           randomization_seed: $SEED,
       }
  --> $DIR/debug.rs:27:1
   |
LL | pub union V {
   | ^^^^^^^^^^^

error: layout_of(W) = Layout {
           size: Size(2 bytes),
           align: AbiAlign {
               abi: Align(2 bytes),
           },
           backend_repr: Memory {
               sized: true,
           },
           fields: Union(
               2,
           ),
           largest_niche: None,
           uninhabited: false,
           variants: Single {
               index: 0,
           },
           max_repr_align: None,
           unadjusted_abi_align: Align(2 bytes),
           randomization_seed: $SEED,
       }
  --> $DIR/debug.rs:33:1
   |
LL | pub union W {
   | ^^^^^^^^^^^

error: layout_of(Y) = Layout {
           size: Size(0 bytes),
           align: AbiAlign {
               abi: Align(2 bytes),
           },
           backend_repr: Memory {
               sized: true,
           },
           fields: Union(
               2,
           ),
           largest_niche: None,
           uninhabited: false,
           variants: Single {
               index: 0,
           },
           max_repr_align: None,
           unadjusted_abi_align: Align(2 bytes),
           randomization_seed: $SEED,
       }
  --> $DIR/debug.rs:39:1
   |
LL | pub union Y {
   | ^^^^^^^^^^^

error: layout_of(P1) = Layout {
           size: Size(4 bytes),
           align: AbiAlign {
               abi: Align(1 bytes),
           },
           backend_repr: Memory {
               sized: true,
           },
           fields: Union(
               1,
           ),
           largest_niche: None,
           uninhabited: false,
           variants: Single {
               index: 0,
           },
           max_repr_align: None,
           unadjusted_abi_align: Align(1 bytes),
           randomization_seed: $SEED,
       }
  --> $DIR/debug.rs:46:1
   |
LL | union P1 { x: u32 }
   | ^^^^^^^^

error: layout_of(P2) = Layout {
           size: Size(8 bytes),
           align: AbiAlign {
               abi: Align(1 bytes),
           },
           backend_repr: Memory {
               sized: true,
           },
           fields: Union(
               1,
           ),
           largest_niche: None,
           uninhabited: false,
           variants: Single {
               index: 0,
           },
           max_repr_align: None,
           unadjusted_abi_align: Align(1 bytes),
           randomization_seed: $SEED,
       }
  --> $DIR/debug.rs:50:1
   |
LL | union P2 { x: (u32, u32) }
   | ^^^^^^^^

error: layout_of(P3) = Layout {
           size: Size(16 bytes),
           align: AbiAlign {
               abi: Align(1 bytes),
           },
           backend_repr: Memory {
               sized: true,
           },
           fields: Union(
               1,
           ),
           largest_niche: None,
           uninhabited: false,
           variants: Single {
               index: 0,
           },
           max_repr_align: None,
           unadjusted_abi_align: Align(1 bytes),
           randomization_seed: $SEED,
       }
  --> $DIR/debug.rs:58:1
   |
LL | union P3 { x: F32x4 }
   | ^^^^^^^^

error: layout_of(P4) = Layout {
           size: Size(12 bytes),
           align: AbiAlign {
               abi: Align(1 bytes),
           },
           backend_repr: Memory {
               sized: true,
           },
           fields: Union(
               1,
           ),
           largest_niche: None,
           uninhabited: false,
           variants: Single {
               index: 0,
           },
           max_repr_align: None,
           unadjusted_abi_align: Align(1 bytes),
           randomization_seed: $SEED,
       }
  --> $DIR/debug.rs:62:1
   |
LL | union P4 { x: E }
   | ^^^^^^^^

error: layout_of(P5) = Layout {
           size: Size(1 bytes),
           align: AbiAlign {
               abi: Align(1 bytes),
           },
           backend_repr: Scalar(
               Union {
                   value: Int(
                       I8,
                       false,
                   ),
               },
           ),
           fields: Union(
               2,
           ),
           largest_niche: None,
           uninhabited: false,
           variants: Single {
               index: 0,
           },
           max_repr_align: None,
           unadjusted_abi_align: Align(1 bytes),
           randomization_seed: $SEED,
       }
  --> $DIR/debug.rs:66:1
   |
LL | union P5 { zst: [u16; 0], byte: u8 }
   | ^^^^^^^^

error: layout_of(MaybeUninit<u8>) = Layout {
           size: Size(1 bytes),
           align: AbiAlign {
               abi: Align(1 bytes),
           },
           backend_repr: Scalar(
               Union {
                   value: Int(
                       I8,
                       false,
                   ),
               },
           ),
           fields: Union(
               2,
           ),
           largest_niche: None,
           uninhabited: false,
           variants: Single {
               index: 0,
           },
           max_repr_align: None,
           unadjusted_abi_align: Align(1 bytes),
           randomization_seed: $SEED,
       }
  --> $DIR/debug.rs:69:1
   |
LL | type X = std::mem::MaybeUninit<u8>;
   | ^^^^^^

error[E0277]: the size for values of type `str` cannot be known at compilation time
  --> $DIR/debug.rs:80:19
   |
LL | type Impossible = (str, str);
   |                   ^^^^^^^^^^ doesn't have a size known at compile-time
   |
   = help: the trait `Sized` is not implemented for `str`
   = note: only the last element of a tuple may have a dynamically sized type

error: the type has an unknown layout
  --> $DIR/debug.rs:84:1
   |
LL | union EmptyUnion {}
   | ^^^^^^^^^^^^^^^^

error: the type `T` does not have a fixed layout
  --> $DIR/debug.rs:90:1
   |
LL | type TooGeneric<T> = T;
   | ^^^^^^^^^^^^^^^^^^

error: aborting due to 20 previous errors

For more information about this error, try `rustc --explain E0277`.
