[libc] [clang-tools-extra] [libcxx] [compiler-rt] [clang] [llvm] [flang] [C23] Complete support for WG14 N2508 (PR #71398)

via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 6 16:30:33 PST 2023


================
@@ -698,6 +695,19 @@ StmtResult Parser::ParseSEHLeaveStatement() {
   return Actions.ActOnSEHLeaveStmt(LeaveLoc, getCurScope());
 }
 
+static void DiagnoseLabelFollowedByDecl(Parser &P, const Stmt *SubStmt) {
+  // When in C mode (but not Microsoft extensions mode), diagnose use of a
+  // label that is followed by a declaration rather than a statement.
+  if (!P.getLangOpts().CPlusPlus && !P.getLangOpts().MicrosoftExt &&
+      isa<DeclStmt>(SubStmt)) {
+    if (P.getLangOpts().C23)
+      P.Diag(SubStmt->getBeginLoc(),
+             diag::warn_c23_compat_label_followed_by_declaration);
+    else
+      P.Diag(SubStmt->getBeginLoc(), diag::ext_c_label_followed_by_declaration);
+  }
----------------
cor3ntin wrote:

```suggestion
P.Diag(SubStmt->getBeginLoc(), P.getLangOpts().C23 ?
             diag::warn_c23_compat_label_followed_by_declaration
           : diag::ext_c_label_followed_by_declaration);
```

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


More information about the llvm-commits mailing list