aboutsummaryrefslogtreecommitdiffstats
path: root/src/checks/level2/missing-qobject-macro.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/checks/level2/missing-qobject-macro.cpp')
-rw-r--r--src/checks/level2/missing-qobject-macro.cpp18
1 files changed, 7 insertions, 11 deletions
diff --git a/src/checks/level2/missing-qobject-macro.cpp b/src/checks/level2/missing-qobject-macro.cpp
index 79c700cb..1828aef1 100644
--- a/src/checks/level2/missing-qobject-macro.cpp
+++ b/src/checks/level2/missing-qobject-macro.cpp
@@ -22,11 +22,9 @@
#include <llvm/Config/llvm-config.h>
#include "missing-qobject-macro.h"
-
#include "ClazyContext.h"
#include "Utils.h"
#include "QtUtils.h"
-#include "checkmanager.h"
#include "StringUtils.h"
#include <clang/AST/AST.h>
@@ -36,23 +34,23 @@
using namespace clang;
using namespace std;
-MissingQ_OBJECT::MissingQ_OBJECT(const std::string &name, ClazyContext *context)
+MissingQObjectMacro::MissingQObjectMacro(const std::string &name, ClazyContext *context)
: CheckBase(name, context)
{
enablePreProcessorCallbacks();
}
-void MissingQ_OBJECT::VisitMacroExpands(const clang::Token &MacroNameTok, const clang::SourceRange &range)
+void MissingQObjectMacro::VisitMacroExpands(const clang::Token &MacroNameTok, const clang::SourceRange &range, const MacroInfo *)
{
IdentifierInfo *ii = MacroNameTok.getIdentifierInfo();
if (ii && ii->getName() == "Q_OBJECT")
registerQ_OBJECT(range.getBegin());
}
-void MissingQ_OBJECT::VisitDecl(clang::Decl *decl)
+void MissingQObjectMacro::VisitDecl(clang::Decl *decl)
{
CXXRecordDecl *record = dyn_cast<CXXRecordDecl>(decl);
- if (!record || !record->hasDefinition() || record->getDefinition() != record || !QtUtils::isQObject(record))
+ if (!record || !record->hasDefinition() || record->getDefinition() != record || !clazy::isQObject(record))
return;
if (record->getDescribedClassTemplate() != nullptr) // moc doesn't accept Q_OBJECT in templates
@@ -61,22 +59,20 @@ void MissingQ_OBJECT::VisitDecl(clang::Decl *decl)
if (m_context->usingPreCompiledHeaders())
return;
- const SourceLocation startLoc = decl->getLocStart();
+ const SourceLocation startLoc = getLocStart(decl);
for (const SourceLocation &loc : m_qobjectMacroLocations) {
if (sm().getFileID(loc) != sm().getFileID(startLoc))
continue; // Different file
- if (sm().isBeforeInSLocAddrSpace(startLoc, loc) && sm().isBeforeInSLocAddrSpace(loc, decl->getLocEnd()))
+ if (sm().isBeforeInSLocAddrSpace(startLoc, loc) && sm().isBeforeInSLocAddrSpace(loc, getLocEnd(decl)))
return; // We found a Q_OBJECT after start and before end, it's ours.
}
emitWarning(startLoc, record->getQualifiedNameAsString() + " is missing a Q_OBJECT macro");
}
-void MissingQ_OBJECT::registerQ_OBJECT(SourceLocation loc)
+void MissingQObjectMacro::registerQ_OBJECT(SourceLocation loc)
{
m_qobjectMacroLocations.push_back(loc);
}
-
-REGISTER_CHECK("missing-qobject-macro", MissingQ_OBJECT, CheckLevel2)