Make `standalone` an enum
diff --git a/compiler/rustc_parse/src/parser/diagnostics.rs b/compiler/rustc_parse/src/parser/diagnostics.rs
index 4f2a308..162982e 100644
--- a/compiler/rustc_parse/src/parser/diagnostics.rs
+++ b/compiler/rustc_parse/src/parser/diagnostics.rs
@@ -161,15 +161,24 @@ pub fn no(&self) -> bool {
 #[derive(Debug, Copy, Clone)]
 struct IncDecRecovery {
     /// Is this increment/decrement its own statement?
-    ///
-    /// This is `None` when we are unsure.
-    standalone: Option<bool>,
+    standalone: IsStandalone,
     /// Is this an increment or decrement?
     op: IncOrDec,
     /// Is this pre- or postfix?
     fixity: UnaryFixity,
 }
 
+/// Is an increment or decrement expression its own statement?
+#[derive(Debug, Copy, Clone)]
+enum IsStandalone {
+    /// It's standalone, i.e., its own statement.
+    Standalone,
+    /// It's a subexpression, i.e., *not* standalone.
+    Subexpr,
+    /// It's maybe standalone; we're not sure.
+    Maybe,
+}
+
 #[derive(Debug, Copy, Clone, PartialEq, Eq)]
 enum IncOrDec {
     Inc,
@@ -1226,11 +1235,9 @@ pub(super) fn recover_from_prefix_increment(
         op_span: Span,
         prev_is_semi: bool,
     ) -> PResult<'a, P<Expr>> {
-        let kind = IncDecRecovery {
-            standalone: Some(prev_is_semi),
-            op: IncOrDec::Inc,
-            fixity: UnaryFixity::Pre,
-        };
+        let standalone =
+            if prev_is_semi { IsStandalone::Standalone } else { IsStandalone::Subexpr };
+        let kind = IncDecRecovery { standalone, op: IncOrDec::Inc, fixity: UnaryFixity::Pre };
 
         self.recover_from_inc_dec(operand_expr, kind, op_span)
     }
@@ -1240,8 +1247,11 @@ pub(super) fn recover_from_postfix_increment(
         operand_expr: P<Expr>,
         op_span: Span,
     ) -> PResult<'a, P<Expr>> {
-        let kind =
-            IncDecRecovery { standalone: None, op: IncOrDec::Inc, fixity: UnaryFixity::Post };
+        let kind = IncDecRecovery {
+            standalone: IsStandalone::Maybe,
+            op: IncOrDec::Inc,
+            fixity: UnaryFixity::Post,
+        };
 
         self.recover_from_inc_dec(operand_expr, kind, op_span)
     }
@@ -1271,8 +1281,10 @@ fn recover_from_inc_dec(
         };
 
         match kind.standalone {
-            Some(true) => self.inc_dec_standalone_recovery(&mut err, kind, spans, false),
-            Some(false) => {
+            IsStandalone::Standalone => {
+                self.inc_dec_standalone_recovery(&mut err, kind, spans, false)
+            }
+            IsStandalone::Subexpr => {
                 let Ok(base_src) = self.span_to_snippet(base.span)
                     else { return help_base_case(err, base) };
                 match kind.fixity {
@@ -1284,7 +1296,7 @@ fn recover_from_inc_dec(
                     }
                 }
             }
-            None => {
+            IsStandalone::Maybe => {
                 let Ok(base_src) = self.span_to_snippet(base.span)
                     else { return help_base_case(err, base) };
                 match kind.fixity {