error: unsupported on types with type parameters
  --> tests/ui-nightly/union.rs:24:10
   |
24 | #[derive(AsBytes)]
   |          ^^^^^^^
   |
   = note: this error originates in the derive macro `AsBytes` (in Nightly builds, run with -Z macro-backtrace for more info)

error: cannot derive Unaligned with repr(align(N > 1))
  --> tests/ui-nightly/union.rs:42:11
   |
42 | #[repr(C, align(2))]
   |           ^^^^^^^^

error: cannot derive Unaligned with repr(align(N > 1))
  --> tests/ui-nightly/union.rs:58:16
   |
58 | #[repr(packed, align(2))]
   |                ^^^^^^^^

error: cannot derive Unaligned with repr(align(N > 1))
  --> tests/ui-nightly/union.rs:64:18
   |
64 | #[repr(align(1), align(2))]
   |                  ^^^^^^^^

error: cannot derive Unaligned with repr(align(N > 1))
  --> tests/ui-nightly/union.rs:70:8
   |
70 | #[repr(align(2), align(4))]
   |        ^^^^^^^^

error[E0277]: the trait bound `HasPadding<AsBytes2, true>: ShouldBe<false>` is not satisfied
  --> tests/ui-nightly/union.rs:30:10
   |
30 | #[derive(AsBytes)]
   |          ^^^^^^^ the trait `ShouldBe<false>` is not implemented for `HasPadding<AsBytes2, true>`
   |
   = help: the trait `ShouldBe<true>` is implemented for `HasPadding<AsBytes2, true>`
   = help: see issue #48214
   = help: add `#![feature(trivial_bounds)]` to the crate attributes to enable
   = note: this error originates in the derive macro `AsBytes` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0587]: type has conflicting packed and align representation hints
  --> tests/ui-nightly/union.rs:59:1
   |
59 | union Unaligned3 {
   | ^^^^^^^^^^^^^^^^
