error[E0423]: expected value, found struct `Empty1`
  --> $DIR/empty-struct-braces-expr.rs:15:14
   |
LL | struct Empty1 {}
   | ---------------- `Empty1` defined here
...
LL |     let e1 = Empty1;
   |              ^^^^^^
   |              |
   |              did you mean `Empty1 { /* fields */ }`?
   |              help: a unit struct with a similar name exists: `XEmpty2`

error[E0423]: expected function, tuple struct or tuple variant, found struct `Empty1`
  --> $DIR/empty-struct-braces-expr.rs:16:14
   |
LL | struct Empty1 {}
   | ---------------- `Empty1` defined here
...
LL |     let e1 = Empty1();
   |              ^^^^^^
   |              |
   |              did you mean `Empty1 { /* fields */ }`?
   |              help: a unit struct with a similar name exists: `XEmpty2`

error[E0423]: expected value, found struct variant `E::Empty3`
  --> $DIR/empty-struct-braces-expr.rs:18:14
   |
LL |     Empty3 {}
   |     --------- `E::Empty3` defined here
...
LL |     let e3 = E::Empty3;
   |              ^^^^^^^^^ did you mean `E::Empty3 { /* fields */ }`?

error[E0423]: expected function, tuple struct or tuple variant, found struct variant `E::Empty3`
  --> $DIR/empty-struct-braces-expr.rs:19:14
   |
LL |     Empty3 {}
   |     --------- `E::Empty3` defined here
...
LL |     let e3 = E::Empty3();
   |              ^^^^^^^^^ did you mean `E::Empty3 { /* fields */ }`?

error[E0423]: expected value, found struct `XEmpty1`
  --> $DIR/empty-struct-braces-expr.rs:22:15
   |
LL |     let xe1 = XEmpty1;
   |               ^^^^^^^
   |               |
   |               did you mean `XEmpty1 { /* fields */ }`?
   |               help: a unit struct with a similar name exists: `XEmpty2`

error[E0423]: expected function, tuple struct or tuple variant, found struct `XEmpty1`
  --> $DIR/empty-struct-braces-expr.rs:23:15
   |
LL |     let xe1 = XEmpty1();
   |               ^^^^^^^
   |               |
   |               did you mean `XEmpty1 { /* fields */ }`?
   |               help: a unit struct with a similar name exists: `XEmpty2`

error[E0599]: no variant or associated item named `Empty3` found for type `empty_struct::XE` in the current scope
  --> $DIR/empty-struct-braces-expr.rs:25:19
   |
LL |     let xe3 = XE::Empty3;
   |                   ^^^^^^
   |                   |
   |                   variant or associated item not found in `empty_struct::XE`
   |                   help: there is a variant with a similar name: `XEmpty3`

error[E0599]: no variant or associated item named `Empty3` found for type `empty_struct::XE` in the current scope
  --> $DIR/empty-struct-braces-expr.rs:26:19
   |
LL |     let xe3 = XE::Empty3();
   |                   ^^^^^^
   |                   |
   |                   variant or associated item not found in `empty_struct::XE`
   |                   help: there is a variant with a similar name: `XEmpty3`

error: no variant `Empty1` in enum `empty_struct::XE`
  --> $DIR/empty-struct-braces-expr.rs:28:9
   |
LL |     XE::Empty1 {};
   |         ^^^^^^ help: there is a variant with a similar name: `XEmpty3`

error: aborting due to 9 previous errors

Some errors have detailed explanations: E0423, E0599.
For more information about an error, try `rustc --explain E0423`.
