[Libreoffice-commits] dev-tools.git: clang/find-unprefixed-members.cxx clang/test.hxx
Miklos Vajna
vmiklos at collabora.co.uk
Mon Oct 12 00:10:37 PDT 2015
clang/find-unprefixed-members.cxx | 23 +++++++++++++----------
clang/test.hxx | 4 ++++
2 files changed, 17 insertions(+), 10 deletions(-)
New commits:
commit 5b813f18f23a34fcc4855d3cc46934cbf06aada4
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Mon Oct 12 09:09:21 2015 +0200
clang: avoid prefixing members of unnamed unions/structs
E.g. suggesting SwTOXBase::(anonymous)::nLevel -> m_nLevel is pointless,
as it's always accessed as m_aData->nLevel. Problem was that an
SwTOXBase ctor whitelisted all SwTOXBase::(anonymouse) members as well.
diff --git a/clang/find-unprefixed-members.cxx b/clang/find-unprefixed-members.cxx
index 1d5c67f..d8c609c 100644
--- a/clang/find-unprefixed-members.cxx
+++ b/clang/find-unprefixed-members.cxx
@@ -34,7 +34,9 @@ public:
class Visitor : public clang::RecursiveASTVisitor<Visitor>
{
const Context m_rContext;
- std::vector<std::string> m_aResults;
+ /// List of qualified class name -- member name pairs.
+ std::vector<std::pair<std::string, std::string>> m_aResults;
+ /// List of qualified class names which have ctors/dtors/member functions.
std::set<std::string> m_aFunctions;
public:
@@ -43,7 +45,7 @@ public:
{
}
- const std::vector<std::string>& getResults()
+ const std::vector<std::pair<std::string, std::string>>& getResults()
{
return m_aResults;
}
@@ -71,8 +73,8 @@ public:
{
aName.insert(0, "m_");
std::stringstream ss;
- ss << pRecord->getQualifiedNameAsString() << "::" << pDecl->getNameAsString() << "," << aName;
- m_aResults.push_back(ss.str());
+ ss << pDecl->getNameAsString() << "," << aName;
+ m_aResults.push_back(std::make_pair(pRecord->getQualifiedNameAsString(), ss.str()));
}
}
@@ -100,8 +102,8 @@ public:
{
aName.insert(0, "m_");
std::stringstream ss;
- ss << pRecord->getQualifiedNameAsString() << "::" << pDecl->getNameAsString() << "," << aName;
- m_aResults.push_back(ss.str());
+ ss << pDecl->getNameAsString() << "," << aName;
+ m_aResults.push_back(std::make_pair(pRecord->getQualifiedNameAsString(), ss.str()));
}
}
@@ -148,15 +150,16 @@ public:
Visitor aVisitor(m_rContext);
aVisitor.TraverseDecl(rContext.getTranslationUnitDecl());
const std::set<std::string>& rFunctions = aVisitor.getFunctions();
- const std::vector<std::string>& rResults = aVisitor.getResults();
+ const std::vector<std::pair<std::string, std::string>>& rResults = aVisitor.getResults();
+ // Ignore missing prefixes in structs without ctors/dtors/member functions.
bool bFound = false;
for (const std::string& rFunction : rFunctions)
{
- for (const std::string& rResult : rResults)
+ for (const std::pair<std::string, std::string>& rResult : rResults)
{
- if (rResult.find(rFunction) == 0)
+ if (rResult.first == rFunction)
{
- std::cerr << rResult << std::endl;
+ std::cerr << rResult.first << "::" << rResult.second << std::endl;
bFound = true;
}
}
diff --git a/clang/test.hxx b/clang/test.hxx
index 78ae7c2..1669b9d 100644
--- a/clang/test.hxx
+++ b/clang/test.hxx
@@ -10,6 +10,10 @@ public:
static const int aS[];
// This is intentionally not initialized explicitly in C::C().
A aA;
+ union {
+ int nFoo;
+ int nBar;
+ } aUnion;
C();
~C();
More information about the Libreoffice-commits
mailing list