Code change:
<ins> error: mismatched closing delimiter: `]` --> $DIR/issue-67377-invalid-syntax-in-enum-discriminant.rs:5:42 | LL |         V = [PhantomData; { [ () ].len() ].len() as isize, |             -             -              ^ mismatched closing delimiter |             |             | |             |             unclosed delimiter |             closing delimiter possibly meant for this error: mismatched closing delimiter: `]` --> $DIR/issue-67377-invalid-syntax-in-enum-discriminant.rs:15:36 | LL |         V = [Vec::new; { [].len()  ].len() as isize, |             -          -           ^ mismatched closing delimiter |             |          | |             |          unclosed delimiter |             closing delimiter possibly meant for this error: mismatched closing delimiter: `]` --> $DIR/issue-67377-invalid-syntax-in-enum-discriminant.rs:26:36 | LL |         V = [Vec::new; { [0].len() ].len() as isize, |             -          -           ^ mismatched closing delimiter |             |          | |             |          unclosed delimiter |             closing delimiter possibly meant for this error: mismatched closing delimiter: `]` --> $DIR/issue-67377-invalid-syntax-in-enum-discriminant.rs:5:42 | LL |         V = [PhantomData; { [ () ].len() ].len() as isize, |             -             -              ^ mismatched closing delimiter |             |             | |             |             unclosed delimiter |             closing delimiter possibly meant for this error: mismatched closing delimiter: `]` --> $DIR/issue-67377-invalid-syntax-in-enum-discriminant.rs:15:36 | LL |         V = [Vec::new; { [].len()  ].len() as isize, |             -          -           ^ mismatched closing delimiter |             |          | |             |          unclosed delimiter |             closing delimiter possibly meant for this error: mismatched closing delimiter: `]` --> $DIR/issue-67377-invalid-syntax-in-enum-discriminant.rs:26:36 | LL |         V = [Vec::new; { [0].len() ].len() as isize, |             -          -           ^ mismatched closing delimiter |             |          | |             |          unclosed delimiter |             closing delimiter possibly meant for this error: mismatched closing delimiter: `]` --> $DIR/issue-67377-invalid-syntax-in-enum-discriminant.rs:5:42 | LL |         V = [PhantomData; { [ () ].len() ].len() as isize, |             -             -              ^ mismatched closing delimiter |             |             | |             |             unclosed delimiter |             closing delimiter possibly meant for this error: mismatched closing delimiter: `]` --> $DIR/issue-67377-invalid-syntax-in-enum-discriminant.rs:15:36 | LL |         V = [Vec::new; { [].len()  ].len() as isize, |             -          -           ^ mismatched closing delimiter |             |          | |             |          unclosed delimiter |             closing delimiter possibly meant for this error: mismatched closing delimiter: `]` --> $DIR/issue-67377-invalid-syntax-in-enum-discriminant.rs:26:36 | LL |         V = [Vec::new; { [0].len() ].len() as isize, |             -          -           ^ mismatched closing delimiter |             |          | |             |          unclosed delimiter |             closing delimiter possibly meant for this error: mismatched closing delimiter: `]` --> $DIR/issue-67377-invalid-syntax-in-enum-discriminant.rs:5:42 | LL |         V = [PhantomData; { [ () ].len() ].len() as isize, |             -             -              ^ mismatched closing delimiter |             |             | |             |             unclosed delimiter |             closing delimiter possibly meant for this error: mismatched closing delimiter: `]` --> $DIR/issue-67377-invalid-syntax-in-enum-discriminant.rs:15:36 | LL |         V = [Vec::new; { [].len()  ].len() as isize, |             -          -           ^ mismatched closing delimiter |             |          | |             |          unclosed delimiter |             closing delimiter possibly meant for this error: mismatched closing delimiter: `]` --> $DIR/issue-67377-invalid-syntax-in-enum-discriminant.rs:26:36 | LL |         V = [Vec::new; { [0].len() ].len() as isize, |             -          -           ^ mismatched closing delimiter |             |          | |             |          unclosed delimiter |             closing delimiter possibly meant for this error[E0282]: type annotations needed --> $DIR/issue-67377-invalid-syntax-in-enum-discriminant.rs:15:29 | LL |         V = [Vec::new; { [].len()  ].len() as isize, |                             ^^^ cannot infer type for type parameter `T` error[E0282]: type annotations needed --> $DIR/issue-67377-invalid-syntax-in-enum-discriminant.rs:26:14 | LL |         V = [Vec::new; { [0].len() ].len() as isize, |              ^^^^^^^^ cannot infer type for type parameter `T` error: aborting due to 14 previous errors For more information about this error, try `rustc --explain E0282`. </ins>

Related discussion:
text: The following ICE's on stable, beta and nightly: (notice the was NOT closed) <details<summaryBacktrace:</summary</details
Oh, this works with other types as well, except the messages are different ICE's with:
ICE's with:
Its worth nothing explicitly that: these ICE's are happening after we do issue a diagnostic for the parsing error If you address the parsing error (presumably in the same manner that the parser is auto-correcting to make further progress), the ICE goes away
triage: P-medium. Removing nomination.
Triage: The first example still ICEs in MIR building The second and third examples don't ICE anymore and need tests (without closing this issue!).
cc