[clang] [NFC][Clang] Fix enumerated mismatch warning (PR #112816)

Jinsong Ji via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 18 07:59:05 PDT 2024


https://github.com/jsji updated https://github.com/llvm/llvm-project/pull/112816

>From 3eabcb305e4c666b897a084615e4d53fc8052020 Mon Sep 17 00:00:00 2001
From: Jinsong Ji <jinsong.ji at intel.com>
Date: Fri, 18 Oct 2024 05:03:22 +0200
Subject: [PATCH 1/3] [NFC][Clang] Fix enumerated mismatch warning
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This is one of the many PRs to fix errors with LLVM_ENABLE_WERROR=on. Built by GCC 11.

Fix warning:
llvm-project/clang/lib/Parse/ParseDeclCXX.cpp:3153:14: error: enumerated mismatch in conditional expression: ‘clang::diag::<unnamed enum>’ vs ‘clang::diag::<unnamed enum>’ [-Werror=enum-compare]
 3152 |          DS.isFriendSpecified() || NextToken().is(tok::kw_friend)
      |          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 3153 |              ? diag::err_friend_concept
      |              ^~~~~~~~~~~~~~~~~~~~~~~~~~
 3154 |              : diag::
      |              ~~~~~~~~
 3155 |                    err_concept_decls_may_only_appear_in_global_namespace_scope);
---
 clang/include/clang/Basic/DiagnosticParseKinds.td | 3 ---
 clang/include/clang/Basic/DiagnosticSemaKinds.td  | 2 ++
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/clang/include/clang/Basic/DiagnosticParseKinds.td b/clang/include/clang/Basic/DiagnosticParseKinds.td
index 78510e61a639fa..cb52629f9c61c7 100644
--- a/clang/include/clang/Basic/DiagnosticParseKinds.td
+++ b/clang/include/clang/Basic/DiagnosticParseKinds.td
@@ -983,9 +983,6 @@ def warn_cxx23_variadic_friends : Warning<
   "variadic 'friend' declarations are incompatible with C++ standards before C++2c">,
   DefaultIgnore, InGroup<CXXPre26Compat>;
 
-def err_friend_concept : Error<
-  "friend declaration cannot be a concept">;
-
 // C++11 default member initialization
 def ext_nonstatic_member_init : ExtWarn<
   "default member initializer for non-static data member is a C++11 "
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td
index 883db838ca0147..d102a45f8c1ed2 100644
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -3020,6 +3020,8 @@ def err_c23_constexpr_pointer_not_null : Error<
   "constexpr pointer initializer is not null">;
 
 // C++ Concepts
+def err_friend_concept : Error<
+  "friend declaration cannot be a concept">;
 def err_concept_decls_may_only_appear_in_global_namespace_scope : Error<
   "concept declarations may only appear in global or namespace scope">;
 def err_concept_no_parameters : Error<

>From caff2db504f8d98b7bbe399820cfef9f42215ddb Mon Sep 17 00:00:00 2001
From: Jinsong Ji <jinsong.ji at intel.com>
Date: Fri, 18 Oct 2024 14:58:27 +0200
Subject: [PATCH 2/3] cast instead

---
 clang/include/clang/Basic/DiagnosticParseKinds.td | 3 +++
 clang/include/clang/Basic/DiagnosticSemaKinds.td  | 2 --
 clang/lib/Parse/ParseDeclCXX.cpp                  | 4 ++--
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/clang/include/clang/Basic/DiagnosticParseKinds.td b/clang/include/clang/Basic/DiagnosticParseKinds.td
index cb52629f9c61c7..78510e61a639fa 100644
--- a/clang/include/clang/Basic/DiagnosticParseKinds.td
+++ b/clang/include/clang/Basic/DiagnosticParseKinds.td
@@ -983,6 +983,9 @@ def warn_cxx23_variadic_friends : Warning<
   "variadic 'friend' declarations are incompatible with C++ standards before C++2c">,
   DefaultIgnore, InGroup<CXXPre26Compat>;
 
+def err_friend_concept : Error<
+  "friend declaration cannot be a concept">;
+
 // C++11 default member initialization
 def ext_nonstatic_member_init : ExtWarn<
   "default member initializer for non-static data member is a C++11 "
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td
index d102a45f8c1ed2..883db838ca0147 100644
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -3020,8 +3020,6 @@ def err_c23_constexpr_pointer_not_null : Error<
   "constexpr pointer initializer is not null">;
 
 // C++ Concepts
-def err_friend_concept : Error<
-  "friend declaration cannot be a concept">;
 def err_concept_decls_may_only_appear_in_global_namespace_scope : Error<
   "concept declarations may only appear in global or namespace scope">;
 def err_concept_no_parameters : Error<
diff --git a/clang/lib/Parse/ParseDeclCXX.cpp b/clang/lib/Parse/ParseDeclCXX.cpp
index 6f0f5a0311bc18..fb159eb997ce9d 100644
--- a/clang/lib/Parse/ParseDeclCXX.cpp
+++ b/clang/lib/Parse/ParseDeclCXX.cpp
@@ -3150,8 +3150,8 @@ Parser::DeclGroupPtrTy Parser::ParseCXXClassMemberDeclaration(
   if (Tok.is(tok::kw_concept)) {
     Diag(Tok.getLocation(),
          DS.isFriendSpecified() || NextToken().is(tok::kw_friend)
-             ? diag::err_friend_concept
-             : diag::
+             ? (unsigned)diag::err_friend_concept
+             : (unsigned)diag::
                    err_concept_decls_may_only_appear_in_global_namespace_scope);
     SkipUntil(tok::semi, tok::r_brace, StopBeforeMatch);
     return nullptr;

>From 5879f99d9178b81760044d6cfd2ed8e6669788d2 Mon Sep 17 00:00:00 2001
From: Jinsong Ji <jinsong.ji at intel.com>
Date: Fri, 18 Oct 2024 10:58:57 -0400
Subject: [PATCH 3/3] Update clang/lib/Parse/ParseDeclCXX.cpp

Co-authored-by: Sirraide <aeternalmail at gmail.com>
---
 clang/lib/Parse/ParseDeclCXX.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/clang/lib/Parse/ParseDeclCXX.cpp b/clang/lib/Parse/ParseDeclCXX.cpp
index fb159eb997ce9d..fb27f6736c8a90 100644
--- a/clang/lib/Parse/ParseDeclCXX.cpp
+++ b/clang/lib/Parse/ParseDeclCXX.cpp
@@ -3150,9 +3150,9 @@ Parser::DeclGroupPtrTy Parser::ParseCXXClassMemberDeclaration(
   if (Tok.is(tok::kw_concept)) {
     Diag(Tok.getLocation(),
          DS.isFriendSpecified() || NextToken().is(tok::kw_friend)
-             ? (unsigned)diag::err_friend_concept
-             : (unsigned)diag::
-                   err_concept_decls_may_only_appear_in_global_namespace_scope);
+             ? unsigned(diag::err_friend_concept)
+             : unsigned(diag::
+                   err_concept_decls_may_only_appear_in_global_namespace_scope));
     SkipUntil(tok::semi, tok::r_brace, StopBeforeMatch);
     return nullptr;
   }



More information about the cfe-commits mailing list