summaryrefslogtreecommitdiff
path: root/compilerplugins
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2016-06-28 15:28:18 +0200
committerNoel Grandin <noel@peralex.com>2016-06-28 15:29:07 +0200
commit1aafc64b4d3ca2a01057209f047b136297c7842b (patch)
treeb6ca7d0e4500108b6026fdc38d9f4289fb3c2d32 /compilerplugins
parentf948dce856d51704e1962553198015dbebb6e527 (diff)
loplugin compat with clang 3.4
Change-Id: I264fe688519b8b2173d5cccd8a453847a7fb89d9
Diffstat (limited to 'compilerplugins')
-rw-r--r--compilerplugins/clang/compat.hxx17
1 files changed, 16 insertions, 1 deletions
diff --git a/compilerplugins/clang/compat.hxx b/compilerplugins/clang/compat.hxx
index 7a87944a3157..e1b4d8e4eba4 100644
--- a/compilerplugins/clang/compat.hxx
+++ b/compilerplugins/clang/compat.hxx
@@ -128,20 +128,35 @@ inline clang::QualType getReturnType(clang::FunctionDecl const & decl) {
#endif
}
+
#if CLANG_VERSION >= 30900
inline clang::ArrayRef<clang::ParmVarDecl *> parameters(
clang::FunctionDecl const & decl)
{
return decl.parameters();
}
-#else
+#elif CLANG_VERSION >= 30500
inline clang::FunctionDecl::param_const_range parameters(
clang::FunctionDecl const & decl)
{
return decl.params();
}
+#else
+struct FunctionDeclParamsWrapper
+{
+ clang::FunctionDecl const & decl;
+ FunctionDeclParamsWrapper(clang::FunctionDecl const & _decl) : decl(_decl) {}
+ clang::FunctionDecl::param_const_iterator begin() const { return decl.param_begin(); }
+ clang::FunctionDecl::param_const_iterator end() const { return decl.param_end(); }
+};
+inline FunctionDeclParamsWrapper parameters(
+ clang::FunctionDecl const & decl)
+{
+ return FunctionDeclParamsWrapper(decl);
+}
#endif
+
inline clang::QualType getReturnType(clang::FunctionProtoType const & type) {
#if CLANG_VERSION >= 30500
return type.getReturnType();