[clang] [clang] Clean up switch stack when transforming an invalid body (PR #211162)

via cfe-commits cfe-commits at lists.llvm.org
Wed Jul 22 09:00:30 PDT 2026


================
@@ -8461,8 +8461,10 @@ TreeTransform<Derived>::TransformSwitchStmt(SwitchStmt *S) {
 
   // Transform the body of the switch statement.
   StmtResult Body = getDerived().TransformStmt(S->getBody());
+  // Finish the switch even on error to pop it from Sema's switch stack.
   if (Body.isInvalid())
-    return StmtError();
+    return getDerived().RebuildSwitchStmtBody(S->getSwitchLoc(), Switch.get(),
+                                              nullptr);
----------------
Sirraide wrote:

```suggestion
```

Just delete all of this and fall through to the call to `RebuildSwitchStmtBody()` below that we already have (`Body.get()` below will be nullptr in this case)

(github messed up the formatting of this suggestion a bit but you can probably figure it out)

https://github.com/llvm/llvm-project/pull/211162


More information about the cfe-commits mailing list