[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