summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compilerplugins/clang/compat.hxx16
-rw-r--r--compilerplugins/clang/salcall.cxx4
2 files changed, 18 insertions, 2 deletions
diff --git a/compilerplugins/clang/compat.hxx b/compilerplugins/clang/compat.hxx
index 97410fcbdc7a..bdbcdcb46f0b 100644
--- a/compilerplugins/clang/compat.hxx
+++ b/compilerplugins/clang/compat.hxx
@@ -240,6 +240,22 @@ inline const clang::Expr *getSubExprAsWritten(const clang::CastExpr *This) {
return getSubExprAsWritten(const_cast<clang::CastExpr *>(This));
}
+inline bool isExplicitSpecified(clang::CXXConstructorDecl const * decl) {
+#if CLANG_VERSION >= 80000
+ return decl->getExplicitSpecifier().isExplicit();
+#else
+ return decl->isExplicitSpecified();
+#endif
+}
+
+inline bool isExplicitSpecified(clang::CXXConversionDecl const * decl) {
+#if CLANG_VERSION >= 80000
+ return decl->getExplicitSpecifier().isExplicit();
+#else
+ return decl->isExplicitSpecified();
+#endif
+}
+
}
#endif
diff --git a/compilerplugins/clang/salcall.cxx b/compilerplugins/clang/salcall.cxx
index 883f099abc9a..ce32c46893ed 100644
--- a/compilerplugins/clang/salcall.cxx
+++ b/compilerplugins/clang/salcall.cxx
@@ -536,9 +536,9 @@ bool SalCall::isSalCallFunction(FunctionDecl const* functionDecl, SourceLocation
if (noReturnType
&& !(functionDecl->isVirtualAsWritten()
|| (isa<CXXConstructorDecl>(functionDecl)
- && cast<CXXConstructorDecl>(functionDecl)->isExplicitSpecified())
+ && compat::isExplicitSpecified(cast<CXXConstructorDecl>(functionDecl)))
|| (isa<CXXConversionDecl>(functionDecl)
- && cast<CXXConversionDecl>(functionDecl)->isExplicitSpecified())))
+ && compat::isExplicitSpecified(cast<CXXConversionDecl>(functionDecl)))))
{
SourceLocation endLoc1;
if (macroStartLoc.isMacroID()