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

Noel Grandin noel.grandin at collabora.co.uk
Tue May 16 07:42:20 UTC 2017


 compilerplugins/clang/unusedfields.cxx |   10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

New commits:
commit d39717a6d6e6b3f507423a5da6d338de2541e43a
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Tue May 16 09:39:23 2017 +0200

    tighten up the check a little more
    
    Change-Id: Ic19364d2daa064a20da0ed9d9641f1646d8f6ce3

diff --git a/compilerplugins/clang/unusedfields.cxx b/compilerplugins/clang/unusedfields.cxx
index d3177e21ad24..60eca65e8fb0 100644
--- a/compilerplugins/clang/unusedfields.cxx
+++ b/compilerplugins/clang/unusedfields.cxx
@@ -188,6 +188,10 @@ static char easytolower(char in)
         return in-('Z'-'z');
     return in;
 }
+bool startswith(const std::string& rStr, const char* pSubStr)
+{
+    return rStr.compare(0, strlen(pSubStr), pSubStr) == 0;
+}
 
 bool UnusedFields::VisitMemberExpr( const MemberExpr* memberExpr )
 {
@@ -248,11 +252,11 @@ bool UnusedFields::VisitMemberExpr( const MemberExpr* memberExpr )
         {
             // check for calls to ReadXXX() type methods and the operator>>= methods on Any.
             const FunctionDecl * calleeFunctionDecl = callExpr->getDirectCallee();
-            if (calleeFunctionDecl)
+            if (calleeFunctionDecl && calleeFunctionDecl->getIdentifier())
             {
-                std::string name = calleeFunctionDecl->getQualifiedNameAsString();
+                std::string name = calleeFunctionDecl->getNameAsString();
                 std::transform(name.begin(), name.end(), name.begin(), easytolower);
-                if (name.find("read") != std::string::npos || name.find(">>=") != std::string::npos)
+                if (startswith(name, "read") || name.find(">>=") != std::string::npos)
                     // this is a write-only call
                     ;
                 else


More information about the Libreoffice-commits mailing list