diff options
author | Andreas Sturmlechner <asturm@gentoo.org> | 2020-10-26 11:21:23 +0100 |
---|---|---|
committer | Andreas Sturmlechner <asturm@gentoo.org> | 2020-10-26 14:55:45 +0100 |
commit | 3cf0b312d76f313c80a28d1c7d112e03e303d3a2 (patch) | |
tree | 3d73222266ac9f6f44d1523c0a690b9875401617 /dev-util/clazy | |
parent | media-libs/shaderc: Remove werror (diff) | |
download | gentoo-3cf0b312d76f313c80a28d1c7d112e03e303d3a2.tar.gz gentoo-3cf0b312d76f313c80a28d1c7d112e03e303d3a2.tar.bz2 gentoo-3cf0b312d76f313c80a28d1c7d112e03e303d3a2.zip |
dev-util/clazy: Fix build with LLVM-11
Fix HOMEPAGE
Closes: https://bugs.gentoo.org/749876
Package-Manager: Portage-3.0.8, Repoman-3.0.2
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'dev-util/clazy')
-rw-r--r-- | dev-util/clazy/clazy-1.7-r1.ebuild | 43 | ||||
-rw-r--r-- | dev-util/clazy/clazy-1.7.ebuild | 2 | ||||
-rw-r--r-- | dev-util/clazy/files/clazy-1.7-llvm11-1.patch | 343 | ||||
-rw-r--r-- | dev-util/clazy/files/clazy-1.7-llvm11-2.patch | 28 |
4 files changed, 415 insertions, 1 deletions
diff --git a/dev-util/clazy/clazy-1.7-r1.ebuild b/dev-util/clazy/clazy-1.7-r1.ebuild new file mode 100644 index 000000000000..cc5ae5d8eb11 --- /dev/null +++ b/dev-util/clazy/clazy-1.7-r1.ebuild @@ -0,0 +1,43 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit cmake + +DESCRIPTION="Compiler plugin which allows clang to understand Qt semantics" +HOMEPAGE="https://apps.kde.org/en/clazy" +SRC_URI="mirror://kde/stable/${PN}/${PV}/src/${P}.tar.xz" + +LICENSE="LGPL-2+" +SLOT="0" +KEYWORDS="~amd64" +IUSE="" + +RDEPEND=" + >=sys-devel/clang-5.0:= + >=sys-devel/llvm-5.0:= +" +DEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}"/${P}-gnuinstalldirs.patch + "${FILESDIR}"/${P}-llvm11-{1,2}.patch +) + +src_prepare() { + cmake_src_prepare + + sed -e '/install(FILES README.md COPYING-LGPL2.txt checks.json DESTINATION/d' \ + -i CMakeLists.txt || die +} + +src_configure() { + # this package requires both llvm and clang of the same version. + # clang pulls in the equivalent llvm version, but not vice versa. + # so, we must find llvm based on the installed clang version. + # bug #681568 + local clang_version=$(best_version "sys-devel/clang") + export LLVM_ROOT="/usr/lib/llvm/$(ver_cut 1 ${clang_version##sys-devel/clang-})" + cmake_src_configure +} diff --git a/dev-util/clazy/clazy-1.7.ebuild b/dev-util/clazy/clazy-1.7.ebuild index 14f32246c9c7..a364a426b700 100644 --- a/dev-util/clazy/clazy-1.7.ebuild +++ b/dev-util/clazy/clazy-1.7.ebuild @@ -6,7 +6,7 @@ EAPI=7 inherit cmake DESCRIPTION="Compiler plugin which allows clang to understand Qt semantics" -HOMEPAGE="https://kde.org/applications/development/org.kde.clazy" +HOMEPAGE="https://apps.kde.org/en/clazy" SRC_URI="mirror://kde/stable/${PN}/${PV}/src/${P}.tar.xz" LICENSE="LGPL-2+" diff --git a/dev-util/clazy/files/clazy-1.7-llvm11-1.patch b/dev-util/clazy/files/clazy-1.7-llvm11-1.patch new file mode 100644 index 000000000000..7b25b340a5c2 --- /dev/null +++ b/dev-util/clazy/files/clazy-1.7-llvm11-1.patch @@ -0,0 +1,343 @@ +From 30d6a2b64f5a05722fdc5d8e3754dbf13425cd62 Mon Sep 17 00:00:00 2001 +From: Egor Gabov <egor.gabov@waveaccess.ru> +Date: Thu, 4 Jun 2020 17:10:21 +0300 +Subject: [PATCH] updated for compatibility with LLVM 10 + +In LLVM 10 llvm::StringRef operator std::string() is marked as explicit. +In this commit all implicit conversion from llvm::StringRef to +std::string are changed by explicit. +Also included header file clang/Basic/FileManager.h in src/MiniDumper +because without this header, class clang::FileEntry in incomplete class +--- + src/FixItExporter.cpp | 5 +++-- + src/MiniAstDumper.cpp | 1 + + src/Utils.cpp | 2 +- + src/checkbase.cpp | 2 +- + src/checks/detachingbase.cpp | 2 +- + src/checks/level0/qenums.cpp | 2 +- + src/checks/level0/qt-macros.cpp | 4 ++-- + src/checks/level0/unused-non-trivial-variable.cpp | 2 +- + src/checks/level1/detaching-temporary.cpp | 2 +- + src/checks/level1/non-pod-global-static.cpp | 2 +- + src/checks/level1/qproperty-without-notify.cpp | 2 +- + src/checks/level2/missing-typeinfo.cpp | 2 +- + src/checks/level2/old-style-connect.cpp | 6 +++--- + src/checks/level2/rule-of-three.cpp | 2 +- + src/checks/manuallevel/ifndef-define-typo.cpp | 6 +++--- + src/checks/manuallevel/qproperty-type-mismatch.cpp | 2 +- + src/checks/manuallevel/qrequiredresult-candidates.cpp | 2 +- + src/checks/manuallevel/qt-keywords.cpp | 4 ++-- + src/checks/manuallevel/reserve-candidates.cpp | 3 ++- + 19 files changed, 28 insertions(+), 25 deletions(-) + +diff --git a/src/FixItExporter.cpp b/src/FixItExporter.cpp +index f3af2e5..44240cf 100644 +--- a/src/FixItExporter.cpp ++++ b/src/FixItExporter.cpp +@@ -68,7 +68,7 @@ void FixItExporter::BeginSourceFile(const LangOptions &LangOpts, const Preproces + + const auto id = SourceMgr.getMainFileID(); + const auto entry = SourceMgr.getFileEntryForID(id); +- getTuDiag().MainSourceFile = entry->getName(); ++ getTuDiag().MainSourceFile = static_cast<std::string>(entry->getName()); + } + + bool FixItExporter::IncludeInDiagnosticCounts() const +@@ -89,7 +89,8 @@ tooling::Diagnostic FixItExporter::ConvertDiagnostic(const Diagnostic &Info) + // TODO: This returns an empty string: DiagEngine->getDiagnosticIDs()->getWarningOptionForDiag(Info.getID()); + // HACK: capture it at the end of the message: Message text [check-name] + +- std::string checkName = DiagEngine.getDiagnosticIDs()->getWarningOptionForDiag(Info.getID()); ++ std::string checkName = ++ static_cast<std::string>(DiagEngine.getDiagnosticIDs()->getWarningOptionForDiag(Info.getID())); + std::string messageText; + + if (checkName.empty()) { +diff --git a/src/MiniAstDumper.cpp b/src/MiniAstDumper.cpp +index 4766174..6124e6e 100644 +--- a/src/MiniAstDumper.cpp ++++ b/src/MiniAstDumper.cpp +@@ -24,6 +24,7 @@ + + #include <clang/Frontend/CompilerInstance.h> + #include <clang/Frontend/FrontendPluginRegistry.h> ++#include <clang/Basic/FileManager.h> + + using namespace clang; + using namespace std; +diff --git a/src/Utils.cpp b/src/Utils.cpp +index 001ced9..b0812fe 100644 +--- a/src/Utils.cpp ++++ b/src/Utils.cpp +@@ -878,7 +878,7 @@ string Utils::filenameForLoc(SourceLocation loc, const clang::SourceManager &sm) + if (loc.isMacroID()) + loc = sm.getExpansionLoc(loc); + +- const string filename = sm.getFilename(loc); ++ const string filename = static_cast<std::string>(sm.getFilename(loc)); + auto splitted = clazy::splitString(filename, '/'); + if (splitted.empty()) + return {}; +diff --git a/src/checkbase.cpp b/src/checkbase.cpp +index 8b40e19..22a426c 100644 +--- a/src/checkbase.cpp ++++ b/src/checkbase.cpp +@@ -188,7 +188,7 @@ bool CheckBase::shouldIgnoreFile(SourceLocation loc) const + if (!loc.isValid()) + return true; + +- string filename = sm().getFilename(loc); ++ string filename = static_cast<std::string>(sm().getFilename(loc)); + + return clazy::any_of(m_filesToIgnore, [filename](const std::string &ignored) { + return clazy::contains(filename, ignored); +diff --git a/src/checks/detachingbase.cpp b/src/checks/detachingbase.cpp +index 70311f4..1b094ee 100644 +--- a/src/checks/detachingbase.cpp ++++ b/src/checks/detachingbase.cpp +@@ -57,7 +57,7 @@ bool DetachingBase::isDetachingMethod(CXXMethodDecl *method, DetachingMethodType + + const std::unordered_map<string, std::vector<StringRef>> &methodsByType = detachingMethodType == DetachingMethod ? clazy::detachingMethods() + : clazy::detachingMethodsWithConstCounterParts(); +- auto it = methodsByType.find(className); ++ auto it = methodsByType.find(static_cast<std::string>(className)); + if (it != methodsByType.cend()) { + const auto &methods = it->second; + if (clazy::contains(methods, clazy::name(method))) +diff --git a/src/checks/level0/qenums.cpp b/src/checks/level0/qenums.cpp +index 00075b5..db8910f 100644 +--- a/src/checks/level0/qenums.cpp ++++ b/src/checks/level0/qenums.cpp +@@ -59,7 +59,7 @@ void QEnums::VisitMacroExpands(const Token &MacroNameTok, const SourceRange &ran + // We simply check if :: is present because it's very cumbersome to to check for different classes when dealing with the pre-processor + + CharSourceRange crange = Lexer::getAsCharRange(range, sm(), lo()); +- string text = Lexer::getSourceText(crange, sm(), lo()); ++ string text = static_cast<std::string>(Lexer::getSourceText(crange, sm(), lo())); + if (clazy::contains(text, "::")) + return; + } +diff --git a/src/checks/level0/qt-macros.cpp b/src/checks/level0/qt-macros.cpp +index d3a587c..ab8e9f5 100644 +--- a/src/checks/level0/qt-macros.cpp ++++ b/src/checks/level0/qt-macros.cpp +@@ -44,7 +44,7 @@ void QtMacros::VisitMacroDefined(const Token &MacroNameTok) + return; + + IdentifierInfo *ii = MacroNameTok.getIdentifierInfo(); +- if (ii && clazy::startsWith(ii->getName(), "Q_OS_")) ++ if (ii && clazy::startsWith(static_cast<std::string>(ii->getName()), "Q_OS_")) + m_OSMacroExists = true; + } + +@@ -58,7 +58,7 @@ void QtMacros::checkIfDef(const Token ¯oNameTok, SourceLocation Loc) + if (preProcessorVisitor && preProcessorVisitor->qtVersion() < 51204 && ii->getName() == "Q_OS_WINDOWS") { + // Q_OS_WINDOWS was introduced in 5.12.4 + emitWarning(Loc, "Q_OS_WINDOWS was only introduced in Qt 5.12.4, use Q_OS_WIN instead"); +- } else if (!m_OSMacroExists && clazy::startsWith(ii->getName(), "Q_OS_")) { ++ } else if (!m_OSMacroExists && clazy::startsWith(static_cast<std::string>(ii->getName()), "Q_OS_")) { + emitWarning(Loc, "Include qglobal.h before testing Q_OS_ macros"); + } + } +diff --git a/src/checks/level0/unused-non-trivial-variable.cpp b/src/checks/level0/unused-non-trivial-variable.cpp +index 4e4b830..93815f2 100644 +--- a/src/checks/level0/unused-non-trivial-variable.cpp ++++ b/src/checks/level0/unused-non-trivial-variable.cpp +@@ -91,7 +91,7 @@ bool UnusedNonTrivialVariable::isUninterestingType(const CXXRecordDecl *record) + static const vector<StringRef> blacklistedTemplates = { "QScopedPointer", "QSetValueOnDestroy", "QScopedValueRollback" }; + StringRef className = clazy::name(record); + for (StringRef templateName : blacklistedTemplates) { +- if (clazy::startsWith(className, templateName)) ++ if (clazy::startsWith(static_cast<std::string>(className), static_cast<std::string>(templateName))) + return true; + } + +diff --git a/src/checks/level1/detaching-temporary.cpp b/src/checks/level1/detaching-temporary.cpp +index fedfc81..60c7553 100644 +--- a/src/checks/level1/detaching-temporary.cpp ++++ b/src/checks/level1/detaching-temporary.cpp +@@ -140,7 +140,7 @@ void DetachingTemporary::VisitStmt(clang::Stmt *stm) + StringRef className = clazy::name(classDecl); + + const std::unordered_map<string, std::vector<StringRef>> &methodsByType = clazy::detachingMethods(); +- auto it = methodsByType.find(className); ++ auto it = methodsByType.find(static_cast<std::string>(className)); + auto it2 = m_writeMethodsByType.find(className); + + std::vector<StringRef> allowedFunctions; +diff --git a/src/checks/level1/non-pod-global-static.cpp b/src/checks/level1/non-pod-global-static.cpp +index 5879bff..433b5c5 100644 +--- a/src/checks/level1/non-pod-global-static.cpp ++++ b/src/checks/level1/non-pod-global-static.cpp +@@ -74,7 +74,7 @@ void NonPodGlobalStatic::VisitStmt(clang::Stmt *stm) + const SourceLocation declStart = clazy::getLocStart(varDecl); + + if (declStart.isMacroID()) { +- auto macroName = Lexer::getImmediateMacroName(declStart, sm(), lo()); ++ auto macroName = static_cast<std::string>(Lexer::getImmediateMacroName(declStart, sm(), lo())); + if (clazy::startsWithAny(macroName, { "Q_IMPORT_PLUGIN", "Q_CONSTRUCTOR_FUNCTION", "Q_DESTRUCTOR_FUNCTION"})) // Don't warn on these + return; + } +diff --git a/src/checks/level1/qproperty-without-notify.cpp b/src/checks/level1/qproperty-without-notify.cpp +index e1d6db4..3af9fee 100644 +--- a/src/checks/level1/qproperty-without-notify.cpp ++++ b/src/checks/level1/qproperty-without-notify.cpp +@@ -69,7 +69,7 @@ void QPropertyWithoutNotify::VisitMacroExpands(const clang::Token &MacroNameTok, + return; + CharSourceRange crange = Lexer::getAsCharRange(range, sm(), lo()); + +- string text = Lexer::getSourceText(crange, sm(), lo()); ++ string text = static_cast<std::string>(Lexer::getSourceText(crange, sm(), lo())); + if (text.back() == ')') + text.pop_back(); + +diff --git a/src/checks/level2/missing-typeinfo.cpp b/src/checks/level2/missing-typeinfo.cpp +index 98df2cd..03b44e0 100644 +--- a/src/checks/level2/missing-typeinfo.cpp ++++ b/src/checks/level2/missing-typeinfo.cpp +@@ -74,7 +74,7 @@ void MissingTypeInfo::VisitDecl(clang::Decl *decl) + if (sm().isInSystemHeader(clazy::getLocStart(record))) + return; + +- std::string typeName = clazy::name(record); ++ std::string typeName = static_cast<std::string>(clazy::name(record)); + if (typeName == "QPair") // QPair doesn't use Q_DECLARE_TYPEINFO, but rather a explicit QTypeInfo. + return; + +diff --git a/src/checks/level2/old-style-connect.cpp b/src/checks/level2/old-style-connect.cpp +index 0fe68c1..396cb70 100644 +--- a/src/checks/level2/old-style-connect.cpp ++++ b/src/checks/level2/old-style-connect.cpp +@@ -274,7 +274,7 @@ void OldStyleConnect::VisitMacroExpands(const Token ¯oNameTok, const SourceR + return; + + auto charRange = Lexer::getAsCharRange(range, sm(), lo()); +- const string text = Lexer::getSourceText(charRange, sm(), lo()); ++ const string text = static_cast<std::string>(Lexer::getSourceText(charRange, sm(), lo())); + + static regex rx(R"(Q_PRIVATE_SLOT\s*\((.*)\s*,\s*.*\s+(.*)\(.*)"); + smatch match; +@@ -293,7 +293,7 @@ string OldStyleConnect::signalOrSlotNameFromMacro(SourceLocation macroLoc) + CharSourceRange expansionRange = clazy::getImmediateExpansionRange(macroLoc, sm()); + SourceRange range = SourceRange(expansionRange.getBegin(), expansionRange.getEnd()); + auto charRange = Lexer::getAsCharRange(range, sm(), lo()); +- const string text = Lexer::getSourceText(charRange, sm(), lo()); ++ const string text = static_cast<std::string>(Lexer::getSourceText(charRange, sm(), lo())); + + static regex rx(R"(\s*(SIGNAL|SLOT)\s*\(\s*(.+)\s*\(.*)"); + +@@ -315,7 +315,7 @@ bool OldStyleConnect::isSignalOrSlot(SourceLocation loc, string ¯oName) cons + if (!loc.isMacroID() || loc.isInvalid()) + return false; + +- macroName = Lexer::getImmediateMacroName(loc, sm(), lo()); ++ macroName = static_cast<std::string>(Lexer::getImmediateMacroName(loc, sm(), lo())); + return macroName == "SIGNAL" || macroName == "SLOT"; + } + +diff --git a/src/checks/level2/rule-of-three.cpp b/src/checks/level2/rule-of-three.cpp +index 8db55d5..7583fcc 100644 +--- a/src/checks/level2/rule-of-three.cpp ++++ b/src/checks/level2/rule-of-three.cpp +@@ -140,7 +140,7 @@ void RuleOfThree::VisitDecl(clang::Decl *decl) + + const string className = record->getNameAsString(); + const string classQualifiedName = record->getQualifiedNameAsString(); +- const string filename = sm().getFilename(recordStart); ++ const string filename = static_cast<std::string>(sm().getFilename(recordStart)); + if (clazy::endsWith(className, "Private") && clazy::endsWithAny(filename, { ".cpp", ".cxx", "_p.h" })) + return; // Lots of RAII classes fall into this category. And even Private (d-pointer) classes, warning in that case would just be noise + +diff --git a/src/checks/manuallevel/ifndef-define-typo.cpp b/src/checks/manuallevel/ifndef-define-typo.cpp +index edb6cdf..e9c50a4 100644 +--- a/src/checks/manuallevel/ifndef-define-typo.cpp ++++ b/src/checks/manuallevel/ifndef-define-typo.cpp +@@ -44,7 +44,7 @@ void IfndefDefineTypo::VisitMacroDefined(const Token ¯oNameTok) + { + if (!m_lastIfndef.empty()) { + if (IdentifierInfo *ii = macroNameTok.getIdentifierInfo()) { +- maybeWarn(ii->getName(), macroNameTok.getLocation()); ++ maybeWarn(static_cast<std::string>(ii->getName()), macroNameTok.getLocation()); + } + } + } +@@ -53,7 +53,7 @@ void IfndefDefineTypo::VisitDefined(const Token ¯oNameTok, const SourceRange + { + if (!m_lastIfndef.empty()) { + if (IdentifierInfo *ii = macroNameTok.getIdentifierInfo()) { +- maybeWarn(ii->getName(), macroNameTok.getLocation()); ++ maybeWarn(static_cast<std::string>(ii->getName()), macroNameTok.getLocation()); + } + } + } +@@ -66,7 +66,7 @@ void IfndefDefineTypo::VisitIfdef(SourceLocation, const Token &) + void IfndefDefineTypo::VisitIfndef(SourceLocation, const Token ¯oNameTok) + { + if (IdentifierInfo *ii = macroNameTok.getIdentifierInfo()) +- m_lastIfndef = ii->getName(); ++ m_lastIfndef = static_cast<std::string>(ii->getName()); + } + + void IfndefDefineTypo::VisitIf(SourceLocation, SourceRange, PPCallbacks::ConditionValueKind) +diff --git a/src/checks/manuallevel/qproperty-type-mismatch.cpp b/src/checks/manuallevel/qproperty-type-mismatch.cpp +index f91159c..952d9f1 100644 +--- a/src/checks/manuallevel/qproperty-type-mismatch.cpp ++++ b/src/checks/manuallevel/qproperty-type-mismatch.cpp +@@ -237,7 +237,7 @@ void QPropertyTypeMismatch::VisitMacroExpands(const clang::Token &MacroNameTok, + + CharSourceRange crange = Lexer::getAsCharRange(range, sm(), lo()); + +- string text = Lexer::getSourceText(crange, sm(), lo()); ++ string text = static_cast<std::string>(Lexer::getSourceText(crange, sm(), lo())); + if (!text.empty() && text.back() == ')') + text.pop_back(); + +diff --git a/src/checks/manuallevel/qrequiredresult-candidates.cpp b/src/checks/manuallevel/qrequiredresult-candidates.cpp +index 912dbaa..6375bd7 100644 +--- a/src/checks/manuallevel/qrequiredresult-candidates.cpp ++++ b/src/checks/manuallevel/qrequiredresult-candidates.cpp +@@ -65,7 +65,7 @@ void QRequiredResultCandidates::VisitDecl(clang::Decl *decl) + + + if (returnClass == classDecl) { +- const std::string methodName = clazy::name(method); ++ const std::string methodName = static_cast<std::string>(clazy::name(method)); + if (methodName.empty()) // fixes assert + return; + +diff --git a/src/checks/manuallevel/qt-keywords.cpp b/src/checks/manuallevel/qt-keywords.cpp +index e792e95..b60752c 100644 +--- a/src/checks/manuallevel/qt-keywords.cpp ++++ b/src/checks/manuallevel/qt-keywords.cpp +@@ -59,12 +59,12 @@ void QtKeywords::VisitMacroExpands(const Token ¯oNameTok, const SourceRange + } + + static const vector<StringRef> keywords = { "foreach", "signals", "slots", "emit" }; +- std::string name = ii->getName(); ++ std::string name = static_cast<std::string>(ii->getName()); + if (!clazy::contains(keywords, name)) + return; + + // Make sure the macro is Qt's. It must be defined in Qt's headers, not 3rdparty +- std::string qtheader = sm().getFilename(sm().getSpellingLoc(minfo->getDefinitionLoc())); ++ std::string qtheader = static_cast<std::string>(sm().getFilename(sm().getSpellingLoc(minfo->getDefinitionLoc()))); + if (!clazy::endsWith(qtheader, "qglobal.h") && !clazy::endsWith(qtheader, "qobjectdefs.h")) + return; + +diff --git a/src/checks/manuallevel/reserve-candidates.cpp b/src/checks/manuallevel/reserve-candidates.cpp +index 389cac5..92e4491 100644 +--- a/src/checks/manuallevel/reserve-candidates.cpp ++++ b/src/checks/manuallevel/reserve-candidates.cpp +@@ -78,7 +78,8 @@ static bool isCandidateMethod(CXXMethodDecl *methodDecl) + if (!classDecl) + return false; + +- if (!clazy::equalsAny(clazy::name(methodDecl), { "append", "push_back", "push", "operator<<", "operator+=" })) ++ if (!clazy::equalsAny(static_cast<std::string>(clazy::name(methodDecl)), ++ { "append", "push_back", "push", "operator<<", "operator+=" })) + return false; + + if (!clazy::isAReserveClass(classDecl)) +-- +GitLab + diff --git a/dev-util/clazy/files/clazy-1.7-llvm11-2.patch b/dev-util/clazy/files/clazy-1.7-llvm11-2.patch new file mode 100644 index 000000000000..4556f257bf3b --- /dev/null +++ b/dev-util/clazy/files/clazy-1.7-llvm11-2.patch @@ -0,0 +1,28 @@ +From 25aa102cc49def9573ffbed88155589cd60a2e8f Mon Sep 17 00:00:00 2001 +From: Egor Gabov <egor.gabov@waveaccess.ru> +Date: Fri, 5 Jun 2020 16:52:53 +0300 +Subject: [PATCH] updated for compatibility with LLVM 10 (clazy-standalone) + +In LLVM 10 llvm::StringRef operator std::string() is marked as explicit. +In this commit all implicit conversion from llvm::StringRef to +std::string are changed by explicit. +--- + src/checks/manuallevel/jnisignatures.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/checks/manuallevel/jnisignatures.cpp b/src/checks/manuallevel/jnisignatures.cpp +index 81e61d4..5d4fe20 100644 +--- a/src/checks/manuallevel/jnisignatures.cpp ++++ b/src/checks/manuallevel/jnisignatures.cpp +@@ -103,7 +103,7 @@ void JniSignatures::checkFunctionCall(Stmt *stm) + return; + } + +- const std::string name = clazy::name(funDecl); ++ const std::string name = static_cast<std::string>(clazy::name(funDecl)); + + if (name == "callObjectMethod" || name == "callMethod") { + checkArgAt(callExpr, 0, methodNameRegex, "Invalid method name"); +-- +GitLab + |