aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaphael Kubo da Costa <rakuco@FreeBSD.org>2023-07-10 15:46:38 +0000
committerRaphael Kubo da Costa <rakuco@FreeBSD.org>2023-07-10 15:47:57 +0000
commit1bc415d2156e06493d91caf26cfa0cf66b2764cc (patch)
tree2305c66e195a68917fc681d6fb64d19cae3537f9
parentcc903ba092636e40c1f322c29a83447718dc7a39 (diff)
downloadports-1bc415d2156e06493d91caf26cfa0cf66b2764cc.tar.gz
ports-1bc415d2156e06493d91caf26cfa0cf66b2764cc.zip
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
-rw-r--r--devel/kdevelop/Makefile9
-rw-r--r--devel/kdevelop/files/patch-git_ede1cf4ad6f945349060db9446c489e3fd34dec466
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
+