aboutsummaryrefslogtreecommitdiffstats
path: root/src/checks/level0/qvariant-template-instantiation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/checks/level0/qvariant-template-instantiation.cpp')
-rw-r--r--src/checks/level0/qvariant-template-instantiation.cpp32
1 files changed, 14 insertions, 18 deletions
diff --git a/src/checks/level0/qvariant-template-instantiation.cpp b/src/checks/level0/qvariant-template-instantiation.cpp
index 548bdb9e..2e0fd8e7 100644
--- a/src/checks/level0/qvariant-template-instantiation.cpp
+++ b/src/checks/level0/qvariant-template-instantiation.cpp
@@ -26,26 +26,24 @@
#include "Utils.h"
#include "TemplateUtils.h"
#include "StringUtils.h"
-#include "checkmanager.h"
using namespace std;
using namespace clang;
QVariantTemplateInstantiation::QVariantTemplateInstantiation(const std::string &name, ClazyContext *context)
- : CheckBase(name, context)
+ : CheckBase(name, context, Option_CanIgnoreIncludes)
{
-
}
-static bool isMatchingClass(const std::string &name)
+static bool isMatchingClass(StringRef name)
{
- static const vector<string> classes = {"QBitArray", "QByteArray", "QChar", "QDate", "QDateTime",
- "QEasingCurve", "QJsonArray", "QJsonDocument", "QJsonObject",
- "QJsonValue", "QLocale", "QModelIndex", "QPoint", "QPointF",
- "QRect", "QRectF", "QRegExp", "QString", "QRegularExpression",
- "QSize", "QSizeF", "QStringList", "QTime", "QUrl", "QUuid" };
+ static const vector<StringRef> classes = {"QBitArray", "QByteArray", "QChar", "QDate", "QDateTime",
+ "QEasingCurve", "QJsonArray", "QJsonDocument", "QJsonObject",
+ "QJsonValue", "QLocale", "QModelIndex", "QPoint", "QPointF",
+ "QRect", "QRectF", "QRegExp", "QString", "QRegularExpression",
+ "QSize", "QSizeF", "QStringList", "QTime", "QUrl", "QUuid" };
- return clazy_std::contains(classes, name);
+ return clazy::contains(classes, name);
}
void QVariantTemplateInstantiation::VisitStmt(clang::Stmt *stm)
@@ -55,14 +53,14 @@ void QVariantTemplateInstantiation::VisitStmt(clang::Stmt *stm)
return;
CXXMethodDecl *methodDecl = callExpr->getMethodDecl();
- if (!methodDecl || methodDecl->getNameAsString() != "value")
+ if (!methodDecl || clazy::name(methodDecl) != "value")
return;
CXXRecordDecl *decl = methodDecl->getParent();
- if (!decl || decl->getNameAsString() != "QVariant")
+ if (!decl || clazy::name(decl) != "QVariant")
return;
- vector<QualType> typeList = TemplateUtils::getTemplateArgumentsTypes(methodDecl);
+ vector<QualType> typeList = clazy::getTemplateArgumentsTypes(methodDecl);
const Type *t = typeList.empty() ? nullptr : typeList[0].getTypePtrOrNull();
if (!t)
return;
@@ -72,19 +70,17 @@ void QVariantTemplateInstantiation::VisitStmt(clang::Stmt *stm)
matches = true;
} else {
CXXRecordDecl *recordDecl = t->getAsCXXRecordDecl();
- matches = recordDecl && t->isClassType() && isMatchingClass(recordDecl->getNameAsString());
+ matches = recordDecl && t->isClassType() && isMatchingClass(clazy::name(recordDecl));
}
if (matches) {
- string typeName = StringUtils::simpleTypeName(typeList[0], lo());
+ string typeName = clazy::simpleTypeName(typeList[0], lo());
typeName[0] = toupper(typeName[0]);
string typeName2 = typeName;
if (typeName[0] == 'Q')
typeName2.erase(0, 1); // Remove first letter
std::string error = std::string("Use QVariant::to" + typeName2 + "() instead of QVariant::value<" + typeName + ">()");
- emitWarning(stm->getLocStart(), error.c_str());
+ emitWarning(getLocStart(stm), error.c_str());
}
}
-
-REGISTER_CHECK("qvariant-template-instantiation", QVariantTemplateInstantiation, CheckLevel0)