error: struct literals are not allowed here
  --> $DIR/struct-literal-variant-in-if.rs:13:13
   |
LL |     if x == E::I { field1: true, field2: 42 } {}
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: surround the struct literal with parentheses
   |
LL |     if x == (E::I { field1: true, field2: 42 }) {}
   |             ^                                 ^

error: struct literals are not allowed here
  --> $DIR/struct-literal-variant-in-if.rs:15:13
   |
LL |     if x == E::V { field: false } {}
   |             ^^^^^^^^^^^^^^^^^^^^^
help: surround the struct literal with parentheses
   |
LL |     if x == (E::V { field: false }) {}
   |             ^                     ^

error: struct literals are not allowed here
  --> $DIR/struct-literal-variant-in-if.rs:17:13
   |
LL |     if x == E::J { field: -42 } {}
   |             ^^^^^^^^^^^^^^^^^^^
help: surround the struct literal with parentheses
   |
LL |     if x == (E::J { field: -42 }) {}
   |             ^                   ^

error: struct literals are not allowed here
  --> $DIR/struct-literal-variant-in-if.rs:19:13
   |
LL |     if x == E::K { field: "" } {}
   |             ^^^^^^^^^^^^^^^^^^
help: surround the struct literal with parentheses
   |
LL |     if x == (E::K { field: "" }) {}
   |             ^                  ^

error[E0423]: expected value, found struct variant `E::V`
  --> $DIR/struct-literal-variant-in-if.rs:10:13
   |
LL |     if x == E::V { field } {}
   |             ^^^^----------
   |             |
   |             help: surround the struct literal with parenthesis: `(E::V { field })`

error[E0308]: mismatched types
  --> $DIR/struct-literal-variant-in-if.rs:10:20
   |
LL | fn test_E(x: E) {
   |                 - help: try adding a return type: `-> bool`
LL |     let field = true;
LL |     if x == E::V { field } {}
   |                    ^^^^^ expected (), found bool
   |
   = note: expected type `()`
              found type `bool`

error[E0308]: mismatched types
  --> $DIR/struct-literal-variant-in-if.rs:21:20
   |
LL |     let y: usize = ();
   |                    ^^ expected usize, found ()
   |
   = note: expected type `usize`
              found type `()`

error: aborting due to 7 previous errors

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