summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compilerplugins/clang/unusedfields.cxx10
1 files changed, 7 insertions, 3 deletions
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