error: layout debugging for type E: Layout {
    fields: Arbitrary {
        offsets: [
            Size {
                raw: 0,
            },
        ],
        memory_index: [
            0,
        ],
    },
    variants: Multiple {
        discr: Scalar {
            value: Int(
                I32,
                false,
            ),
            valid_range: 0..=0,
        },
        discr_kind: Tag,
        discr_index: 0,
        variants: [
            Layout {
                fields: Arbitrary {
                    offsets: [],
                    memory_index: [],
                },
                variants: Single {
                    index: 0,
                },
                abi: Aggregate {
                    sized: true,
                },
                largest_niche: None,
                align: AbiAndPrefAlign {
                    abi: Align {
                        pow2: 0,
                    },
                    pref: $PREF_ALIGN,
                },
                size: Size {
                    raw: 4,
                },
            },
            Layout {
                fields: Arbitrary {
                    offsets: [
                        Size {
                            raw: 4,
                        },
                        Size {
                            raw: 4,
                        },
                        Size {
                            raw: 8,
                        },
                    ],
                    memory_index: [
                        0,
                        1,
                        2,
                    ],
                },
                variants: Single {
                    index: 1,
                },
                abi: Uninhabited,
                largest_niche: None,
                align: AbiAndPrefAlign {
                    abi: Align {
                        pow2: 2,
                    },
                    pref: $PREF_ALIGN,
                },
                size: Size {
                    raw: 12,
                },
            },
        ],
    },
    abi: Aggregate {
        sized: true,
    },
    largest_niche: Some(
        Niche {
            offset: Size {
                raw: 0,
            },
            scalar: Scalar {
                value: Int(
                    I32,
                    false,
                ),
                valid_range: 0..=0,
            },
        },
    ),
    align: AbiAndPrefAlign {
        abi: Align {
            pow2: 2,
        },
        pref: $PREF_ALIGN,
    },
    size: Size {
        raw: 12,
    },
}
  --> $DIR/debug.rs:6:1
   |
LL | enum E { Foo, Bar(!, i32, i32) }
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: layout debugging for type S: Layout {
    fields: Arbitrary {
        offsets: [
            Size {
                raw: 0,
            },
            Size {
                raw: 0,
            },
            Size {
                raw: 4,
            },
        ],
        memory_index: [
            1,
            0,
            2,
        ],
    },
    variants: Single {
        index: 0,
    },
    abi: ScalarPair(
        Scalar {
            value: Int(
                I32,
                true,
            ),
            valid_range: 0..=4294967295,
        },
        Scalar {
            value: Int(
                I32,
                true,
            ),
            valid_range: 0..=4294967295,
        },
    ),
    largest_niche: None,
    align: AbiAndPrefAlign {
        abi: Align {
            pow2: 2,
        },
        pref: $PREF_ALIGN,
    },
    size: Size {
        raw: 8,
    },
}
  --> $DIR/debug.rs:9:1
   |
LL | struct S { f1: i32, f2: (), f3: i32 }
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: layout debugging for type U: Layout {
    fields: Union(
        2,
    ),
    variants: Single {
        index: 0,
    },
    abi: Aggregate {
        sized: true,
    },
    largest_niche: None,
    align: AbiAndPrefAlign {
        abi: Align {
            pow2: 2,
        },
        pref: $PREF_ALIGN,
    },
    size: Size {
        raw: 8,
    },
}
  --> $DIR/debug.rs:12:1
   |
LL | union U { f1: (i32, i32), f3: i32 }
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: layout debugging for type std::result::Result<i32, i32>: Layout {
    fields: Arbitrary {
        offsets: [
            Size {
                raw: 0,
            },
        ],
        memory_index: [
            0,
        ],
    },
    variants: Multiple {
        discr: Scalar {
            value: Int(
                I32,
                false,
            ),
            valid_range: 0..=1,
        },
        discr_kind: Tag,
        discr_index: 0,
        variants: [
            Layout {
                fields: Arbitrary {
                    offsets: [
                        Size {
                            raw: 4,
                        },
                    ],
                    memory_index: [
                        0,
                    ],
                },
                variants: Single {
                    index: 0,
                },
                abi: Aggregate {
                    sized: true,
                },
                largest_niche: None,
                align: AbiAndPrefAlign {
                    abi: Align {
                        pow2: 2,
                    },
                    pref: $PREF_ALIGN,
                },
                size: Size {
                    raw: 8,
                },
            },
            Layout {
                fields: Arbitrary {
                    offsets: [
                        Size {
                            raw: 4,
                        },
                    ],
                    memory_index: [
                        0,
                    ],
                },
                variants: Single {
                    index: 1,
                },
                abi: Aggregate {
                    sized: true,
                },
                largest_niche: None,
                align: AbiAndPrefAlign {
                    abi: Align {
                        pow2: 2,
                    },
                    pref: $PREF_ALIGN,
                },
                size: Size {
                    raw: 8,
                },
            },
        ],
    },
    abi: ScalarPair(
        Scalar {
            value: Int(
                I32,
                false,
            ),
            valid_range: 0..=1,
        },
        Scalar {
            value: Int(
                I32,
                true,
            ),
            valid_range: 0..=4294967295,
        },
    ),
    largest_niche: Some(
        Niche {
            offset: Size {
                raw: 0,
            },
            scalar: Scalar {
                value: Int(
                    I32,
                    false,
                ),
                valid_range: 0..=1,
            },
        },
    ),
    align: AbiAndPrefAlign {
        abi: Align {
            pow2: 2,
        },
        pref: $PREF_ALIGN,
    },
    size: Size {
        raw: 8,
    },
}
  --> $DIR/debug.rs:15:1
   |
LL | type Test = Result<i32, i32>;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: layout debugging for type i32: Layout {
    fields: Union(
        0,
    ),
    variants: Single {
        index: 0,
    },
    abi: Scalar(
        Scalar {
            value: Int(
                I32,
                true,
            ),
            valid_range: 0..=4294967295,
        },
    ),
    largest_niche: None,
    align: AbiAndPrefAlign {
        abi: Align {
            pow2: 2,
        },
        pref: $PREF_ALIGN,
    },
    size: Size {
        raw: 4,
    },
}
  --> $DIR/debug.rs:18:1
   |
LL | type T = impl std::fmt::Debug;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: aborting due to 5 previous errors

