[Libreoffice-commits] core.git: compilerplugins/clang

Stephan Bergmann sbergman at redhat.com
Mon Oct 31 20:01:49 UTC 2016


 compilerplugins/clang/vclwidgets.cxx |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

New commits:
commit f25a15dc99b00dfd2def8bc4d6772b14a78a8a6c
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Oct 31 21:01:18 2016 +0100

    loplugin:vclwidgets: Adapt iterator hack to libc++
    
    Change-Id: I1e4fbb06578b2b1d6de4b57507693b014d36cd3a

diff --git a/compilerplugins/clang/vclwidgets.cxx b/compilerplugins/clang/vclwidgets.cxx
index 559b70c..2b1da02 100644
--- a/compilerplugins/clang/vclwidgets.cxx
+++ b/compilerplugins/clang/vclwidgets.cxx
@@ -273,8 +273,11 @@ bool VCLWidgets::VisitVarDecl(const VarDecl * pVarDecl) {
     }
     // Apparently I should be doing some kind of lookup for a partial specialisations of std::iterator_traits<T> to see if an
     // object is an iterator, but that sounds like too much work
-    std::string s = pVarDecl->getType().getDesugaredType(compiler.getASTContext()).getAsString();
-    if (s.find("iterator") != std::string::npos) {
+    auto t = pVarDecl->getType().getDesugaredType(compiler.getASTContext());
+    std::string s = t.getAsString();
+    if (s.find("iterator") != std::string::npos
+        || loplugin::TypeCheck(t).Class("__wrap_iter").StdNamespace())
+    {
         return true;
     }
     // std::pair seems to show up in whacky ways in clang's AST. Sometimes it's a class, sometimes it's a typedef, and sometimes


More information about the Libreoffice-commits mailing list