diff options
author | Cristian Adam <cristian.adam@gmail.com> | 2024-02-12 15:42:57 +0100 |
---|---|---|
committer | Cristian Adam <cristian.adam@qt.io> | 2024-02-12 15:05:36 +0000 |
commit | 59ca3101ceca8bf3ab0872e943c4588ff550ac0f (patch) | |
tree | 18a2c51cfa83402ffb3edfcdb0dc07e7b88bc591 | |
parent | 641850bfe401d87c8d4277e3296838ecfdc4d633 (diff) |
Fix compiler error with LLVM 18
Change-Id: Iae75ad46a90a8c0cddf4ab986bb922ce18ffc2af
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
-rw-r--r-- | src/FunctionUtils.h | 11 | ||||
-rw-r--r-- | src/checks/level2/virtual-call-ctor.cpp | 3 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/FunctionUtils.h b/src/FunctionUtils.h index 37504b0b..a0db9128 100644 --- a/src/FunctionUtils.h +++ b/src/FunctionUtils.h @@ -96,6 +96,15 @@ inline bool parametersMatch(const clang::FunctionDecl *f1, const clang::Function return true; } +inline bool isPureVirtual(const clang::CXXMethodDecl *decl) +{ +#if LLVM_VERSION_MAJOR >= 18 + return decl->isPureVirtual(); +#else + return decl->isPure(); +#endif +} + /** * Returns true if a class contains a method with a specific signature. * (method->getParent() doesn't need to equal record) @@ -107,7 +116,7 @@ inline bool classImplementsMethod(const clang::CXXRecordDecl *record, const clan llvm::StringRef methodName = clazy::name(method); for (auto m : record->methods()) { - if (!m->isPure() && clazy::name(m) == methodName && parametersMatch(m, method)) + if (!clazy::isPureVirtual(m) && clazy::name(m) == methodName && parametersMatch(m, method)) return true; } diff --git a/src/checks/level2/virtual-call-ctor.cpp b/src/checks/level2/virtual-call-ctor.cpp index e6af81c8..6bc2b349 100644 --- a/src/checks/level2/virtual-call-ctor.cpp +++ b/src/checks/level2/virtual-call-ctor.cpp @@ -23,6 +23,7 @@ */ #include "virtual-call-ctor.h" +#include "FunctionUtils.h" #include "HierarchyUtils.h" #include "SourceCompatibilityHelpers.h" #include "clazy_stl.h" @@ -115,7 +116,7 @@ SourceLocation VirtualCallCtor::containsVirtualCall(clang::CXXRecordDecl *classD continue; if (memberDecl->getParent() == classDecl) { - if (memberDecl->isPure()) { + if (clazy::isPureVirtual(memberDecl)) { return clazy::getLocStart(callExpr); } else { if (containsVirtualCall(classDecl, memberDecl->getBody(), processedStmts).isValid()) |