git: 1bc415d2156e - main - devel/kdevelop: Import upstream fix for C++17-related build issue

From: Raphael Kubo da Costa <rakuco_at_FreeBSD.org>
Date: Mon, 10 Jul 2023 15:48:04 UTC
The branch main has been updated by rakuco:

URL: https://cgit.FreeBSD.org/ports/commit/?id=1bc415d2156e06493d91caf26cfa0cf66b2764cc

commit 1bc415d2156e06493d91caf26cfa0cf66b2764cc
Author:     Raphael Kubo da Costa <rakuco@FreeBSD.org>
AuthorDate: 2023-07-10 15:46:38 +0000
Commit:     Raphael Kubo da Costa <rakuco@FreeBSD.org>
CommitDate: 2023-07-10 15:47:57 +0000

    devel/kdevelop: Import upstream fix for C++17-related build issue
    
    Replace the current -Wno-error=enum-constexpr-conversion workaround by a
    proper fix that was implemented upstream.
    
    Approved by:    kde (arrowd)
    Differential Revision:  https://reviews.freebsd.org/D40957
---
 devel/kdevelop/Makefile                            |  9 +--
 ...ch-git_ede1cf4ad6f945349060db9446c489e3fd34dec4 | 66 ++++++++++++++++++++++
 2 files changed, 67 insertions(+), 8 deletions(-)

diff --git a/devel/kdevelop/Makefile b/devel/kdevelop/Makefile
index 3f168b889d72..4512811fa2b2 100644
--- a/devel/kdevelop/Makefile
+++ b/devel/kdevelop/Makefile
@@ -62,11 +62,4 @@ SHEBANG_LANG=	zsh
 zsh_OLD_CMD=	/bin/zsh
 zsh_CMD=	${LOCALBASE}/bin/zsh
 
-.include <bsd.port.pre.mk>
-
-.if ${COMPILER_TYPE} == clang && ${COMPILER_VERSION} >= 160
-# Reported upstream: https://bugs.kde.org/show_bug.cgi?id=471995
-CXXFLAGS+=	-Wno-error=enum-constexpr-conversion
-.endif
-
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
diff --git a/devel/kdevelop/files/patch-git_ede1cf4ad6f945349060db9446c489e3fd34dec4 b/devel/kdevelop/files/patch-git_ede1cf4ad6f945349060db9446c489e3fd34dec4
new file mode 100644
index 000000000000..895038ad0952
--- /dev/null
+++ b/devel/kdevelop/files/patch-git_ede1cf4ad6f945349060db9446c489e3fd34dec4
@@ -0,0 +1,66 @@
+From ede1cf4ad6f945349060db9446c489e3fd34dec4 Mon Sep 17 00:00:00 2001
+From: Igor Kushnir <igorkuo@gmail.com>
+Date: Fri, 7 Jul 2023 09:50:30 +0300
+Subject: [PATCH] Don't cast out-of-enum-range -1 to CommonIntegralTypes
+
+This fixes the following Clang 16 compilation error:
+kdevelop/plugins/clang/duchain/cursorkindtraits.h:217:7: error: integer value -1 is outside the valid range of values [0, 255] for the enumeration type 'CommonIntegralTypes' [-Wenum-constexpr-conversion]
+    : static_cast<IntegralType::CommonIntegralTypes>(-1);
+
+Quote from https://github.com/llvm/llvm-project/issues/59036 :
+    The -Wenum-constexpr-conversion warning was created to account for
+    the fact that casting integers to enums outside of the valid range
+    of the enum is UB in C++17. Constant expressions invoking UB lead to
+    an ill-formed program.
+
+BUG: 471995
+FIXED-IN: 5.12.230800
+---
+ kdevplatform/language/duchain/types/integraltype.h | 3 ++-
+ plugins/clang/duchain/builder.cpp                  | 2 +-
+ plugins/clang/duchain/cursorkindtraits.h           | 2 +-
+ 3 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/kdevplatform/language/duchain/types/integraltype.h b/kdevplatform/language/duchain/types/integraltype.h
+index 32b9b0084c..75516111c7 100644
+--- kdevplatform/language/duchain/types/integraltype.h
++++ kdevplatform/language/duchain/types/integraltype.h
+@@ -50,7 +50,8 @@ public:
+         TypeChar16_t,
+         TypeChar32_t,
+         TypeHalf,
+-        TypeLanguageSpecific = 200
++        TypeLanguageSpecific = 200,
++        TypeNotIntegralType = 255
+     };
+ 
+     /// Default constructor
+diff --git a/plugins/clang/duchain/builder.cpp b/plugins/clang/duchain/builder.cpp
+index a75020d02d..76b301468e 100644
+--- plugins/clang/duchain/builder.cpp
++++ plugins/clang/duchain/builder.cpp
+@@ -508,7 +508,7 @@ struct Visitor
+         return context;
+     }
+ 
+-    template<CXTypeKind TK, EnableIf<CursorKindTraits::integralType(TK) != -1> = dummy>
++    template<CXTypeKind TK, EnableIf<CursorKindTraits::integralType(TK) != IntegralType::TypeNotIntegralType> = dummy>
+     AbstractType *createType(CXType, CXCursor)
+     {
+         // TODO: would be nice to instantiate a ConstantIntegralType here and set a value if possible
+diff --git a/plugins/clang/duchain/cursorkindtraits.h b/plugins/clang/duchain/cursorkindtraits.h
+index 2bd4c83c4f..0e0c6bcdc0 100644
+--- plugins/clang/duchain/cursorkindtraits.h
++++ plugins/clang/duchain/cursorkindtraits.h
+@@ -214,7 +214,7 @@ constexpr IntegralType::CommonIntegralTypes integralType(CXTypeKind TK)
+       ||TK == CXType_Char_S
+       ||TK == CXType_UChar
+       ||TK == CXType_SChar)     ?  IntegralType::TypeChar
+-    : static_cast<IntegralType::CommonIntegralTypes>(-1);
++    : IntegralType::TypeNotIntegralType;
+ }
+ 
+ constexpr bool isArrayType(CXTypeKind TK)
+-- 
+GitLab
+