error[E0532]: expected tuple struct or tuple variant, found unit struct `Empty2`
  --> $DIR/empty-struct-unit-pat.rs:21:9
   |
LL | struct Empty2;
   | -------------- `Empty2` defined here
...
LL |         Empty2() => ()
   |         ^^^^^^^^
   |
  ::: $DIR/auxiliary/empty-struct.rs:3:1
   |
LL | pub struct XEmpty6();
   | ------------------ similarly named tuple struct `XEmpty6` defined here
   |
help: use this syntax instead
   |
LL |         Empty2 => ()
   |         ~~~~~~
help: a tuple struct with a similar name exists
   |
LL |         XEmpty6() => ()
   |         ~~~~~~~

error[E0532]: expected tuple struct or tuple variant, found unit struct `XEmpty2`
  --> $DIR/empty-struct-unit-pat.rs:24:9
   |
LL |         XEmpty2() => ()
   |         ^^^^^^^^^
   |
  ::: $DIR/auxiliary/empty-struct.rs:2:1
   |
LL | pub struct XEmpty2;
   | ------------------ `XEmpty2` defined here
LL | pub struct XEmpty6();
   | ------------------ similarly named tuple struct `XEmpty6` defined here
   |
help: use this syntax instead
   |
LL |         XEmpty2 => ()
   |         ~~~~~~~
help: a tuple struct with a similar name exists
   |
LL |         XEmpty6() => ()
   |         ~~~~~~~

error[E0532]: expected tuple struct or tuple variant, found unit struct `Empty2`
  --> $DIR/empty-struct-unit-pat.rs:28:9
   |
LL | struct Empty2;
   | -------------- `Empty2` defined here
...
LL |         Empty2(..) => ()
   |         ^^^^^^^^^^
   |
  ::: $DIR/auxiliary/empty-struct.rs:3:1
   |
LL | pub struct XEmpty6();
   | ------------------ similarly named tuple struct `XEmpty6` defined here
   |
help: use this syntax instead
   |
LL |         Empty2 => ()
   |         ~~~~~~
help: a tuple struct with a similar name exists
   |
LL |         XEmpty6(..) => ()
   |         ~~~~~~~

error[E0532]: expected tuple struct or tuple variant, found unit struct `XEmpty2`
  --> $DIR/empty-struct-unit-pat.rs:32:9
   |
LL |         XEmpty2(..) => ()
   |         ^^^^^^^^^^^
   |
  ::: $DIR/auxiliary/empty-struct.rs:2:1
   |
LL | pub struct XEmpty2;
   | ------------------ `XEmpty2` defined here
LL | pub struct XEmpty6();
   | ------------------ similarly named tuple struct `XEmpty6` defined here
   |
help: use this syntax instead
   |
LL |         XEmpty2 => ()
   |         ~~~~~~~
help: a tuple struct with a similar name exists
   |
LL |         XEmpty6(..) => ()
   |         ~~~~~~~

error[E0532]: expected tuple struct or tuple variant, found unit variant `E::Empty4`
  --> $DIR/empty-struct-unit-pat.rs:37:9
   |
LL |     Empty4
   |     ------ `E::Empty4` defined here
...
LL |         E::Empty4() => ()
   |         ^^^^^^^^^^^ help: use this syntax instead: `E::Empty4`

error[E0532]: expected tuple struct or tuple variant, found unit variant `XE::XEmpty4`
  --> $DIR/empty-struct-unit-pat.rs:41:9
   |
LL |         XE::XEmpty4() => (),
   |         ^^^^^^^^^^^^^
   |
  ::: $DIR/auxiliary/empty-struct.rs:7:5
   |
LL |     XEmpty4,
   |     ------- `XE::XEmpty4` defined here
LL |     XEmpty5(),
   |     ------- similarly named tuple variant `XEmpty5` defined here
   |
help: use this syntax instead
   |
LL |         XE::XEmpty4 => (),
   |         ~~~~~~~~~~~
help: a tuple variant with a similar name exists
   |
LL |         XE::XEmpty5() => (),
   |             ~~~~~~~

error[E0532]: expected tuple struct or tuple variant, found unit variant `E::Empty4`
  --> $DIR/empty-struct-unit-pat.rs:46:9
   |
LL |     Empty4
   |     ------ `E::Empty4` defined here
...
LL |         E::Empty4(..) => ()
   |         ^^^^^^^^^^^^^ help: use this syntax instead: `E::Empty4`

error[E0532]: expected tuple struct or tuple variant, found unit variant `XE::XEmpty4`
  --> $DIR/empty-struct-unit-pat.rs:50:9
   |
LL |         XE::XEmpty4(..) => (),
   |         ^^^^^^^^^^^^^^^
   |
  ::: $DIR/auxiliary/empty-struct.rs:7:5
   |
LL |     XEmpty4,
   |     ------- `XE::XEmpty4` defined here
LL |     XEmpty5(),
   |     ------- similarly named tuple variant `XEmpty5` defined here
   |
help: use this syntax instead
   |
LL |         XE::XEmpty4 => (),
   |         ~~~~~~~~~~~
help: a tuple variant with a similar name exists
   |
LL |         XE::XEmpty5(..) => (),
   |             ~~~~~~~

error: aborting due to 8 previous errors

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