[Libreoffice-commits] dev-tools.git: 2 commits - clang/find-unprefixed-members.cxx clang/test.hxx
Miklos Vajna
vmiklos at collabora.co.uk
Tue Sep 29 12:30:07 PDT 2015
clang/find-unprefixed-members.cxx | 62 +++++++++++++++++++++++++++++++-------
clang/test.hxx | 5 +++
2 files changed, 57 insertions(+), 10 deletions(-)
New commits:
commit 49464ca6ecfcd7398ded778f047e002b5fa4cc60
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Tue Sep 29 21:29:09 2015 +0200
clang: ignore structs without ctor/dtor/member funs in find-unprefixed-members
diff --git a/clang/find-unprefixed-members.cxx b/clang/find-unprefixed-members.cxx
index 52b1529..1d5c67f 100644
--- a/clang/find-unprefixed-members.cxx
+++ b/clang/find-unprefixed-members.cxx
@@ -34,18 +34,23 @@ public:
class Visitor : public clang::RecursiveASTVisitor<Visitor>
{
const Context m_rContext;
- bool m_bFound;
+ std::vector<std::string> m_aResults;
+ std::set<std::string> m_aFunctions;
public:
Visitor(const Context& rContext)
- : m_rContext(rContext),
- m_bFound(false)
+ : m_rContext(rContext)
{
}
- bool getFound()
+ const std::vector<std::string>& getResults()
{
- return m_bFound;
+ return m_aResults;
+ }
+
+ const std::set<std::string>& getFunctions()
+ {
+ return m_aFunctions;
}
/*
@@ -65,8 +70,9 @@ public:
if (aName.find("m") != 0)
{
aName.insert(0, "m_");
- std::cout << pRecord->getQualifiedNameAsString() << "::" << pDecl->getNameAsString() << "," << aName << std::endl;
- m_bFound = true;
+ std::stringstream ss;
+ ss << pRecord->getQualifiedNameAsString() << "::" << pDecl->getNameAsString() << "," << aName;
+ m_aResults.push_back(ss.str());
}
}
@@ -93,13 +99,35 @@ public:
if (aName.find("m") != 0)
{
aName.insert(0, "m_");
- std::cout << pRecord->getQualifiedNameAsString() << "::" << pDecl->getNameAsString() << "," << aName << std::endl;
- m_bFound = true;
+ std::stringstream ss;
+ ss << pRecord->getQualifiedNameAsString() << "::" << pDecl->getNameAsString() << "," << aName;
+ m_aResults.push_back(ss.str());
}
}
return true;
}
+
+ bool VisitCXXConstructorDecl(clang::CXXConstructorDecl* pDecl)
+ {
+ clang::CXXRecordDecl* pRecord = pDecl->getParent();
+ m_aFunctions.insert(pRecord->getQualifiedNameAsString());
+ return true;
+ }
+
+ bool VisitCXXDestructorDecl(clang::CXXDestructorDecl* pDecl)
+ {
+ clang::CXXRecordDecl* pRecord = pDecl->getParent();
+ m_aFunctions.insert(pRecord->getQualifiedNameAsString());
+ return true;
+ }
+
+ bool VisitCXXMethodDecl(clang::CXXMethodDecl* pDecl)
+ {
+ clang::CXXRecordDecl* pRecord = pDecl->getParent();
+ m_aFunctions.insert(pRecord->getQualifiedNameAsString());
+ return true;
+ }
};
class ASTConsumer : public clang::ASTConsumer
@@ -119,7 +147,21 @@ public:
Visitor aVisitor(m_rContext);
aVisitor.TraverseDecl(rContext.getTranslationUnitDecl());
- if (aVisitor.getFound())
+ const std::set<std::string>& rFunctions = aVisitor.getFunctions();
+ const std::vector<std::string>& rResults = aVisitor.getResults();
+ bool bFound = false;
+ for (const std::string& rFunction : rFunctions)
+ {
+ for (const std::string& rResult : rResults)
+ {
+ if (rResult.find(rFunction) == 0)
+ {
+ std::cerr << rResult << std::endl;
+ bFound = true;
+ }
+ }
+ }
+ if (bFound)
exit(1);
}
};
commit 8d53076838749c5d1de75b50955c54275e84f091
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Tue Sep 29 21:28:04 2015 +0200
clang: add struct test that is currently mishandled by find-unprefixed-members
diff --git a/clang/test.hxx b/clang/test.hxx
index 6b3d9c4..78ae7c2 100644
--- a/clang/test.hxx
+++ b/clang/test.hxx
@@ -25,6 +25,11 @@ public:
C() { }
};
+/// This has no ctor/dtor/member functions, so members are OK to be not prefixed.
+struct S
+{
+ int nX, mnY, m_nZ;
+};
}
#define DELETEZ( p ) ( delete p,p = 0 )
More information about the Libreoffice-commits
mailing list