[clang] [clang] Call ActOnCaseExpr even if the 'case' is missing (PR #166326)

Timm Baeder via cfe-commits cfe-commits at lists.llvm.org
Tue Nov 4 08:10:10 PST 2025


================
@@ -1450,3 +1450,9 @@ namespace GH149500 {
   unsigned int * p = &(*(unsigned int *)0x400);
   static const void *q = &(*(const struct sysrq_key_op *)0);
 }
+
+constexpr bool missingCase() {
+  switch (1) {
+    1u: return false; // expected-error {{expected 'case' keyword before expression}}
----------------
tbaederr wrote:

It's not about the diagnostic, it's about clang crashing in constant evaluation because the type of the case stmt expression is wrong: https://github.com/llvm/llvm-project/issues/165555 (the second example further down).

I don't know if the conversions only need to happen for well-formed code or not. If not, we should instead mark the case stmt as having errors I guess, but just letting it through like that trips up a couple of places

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


More information about the cfe-commits mailing list