summaryrefslogtreecommitdiff
path: root/src/plugins/autotest/itestparser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/autotest/itestparser.cpp')
-rw-r--r--src/plugins/autotest/itestparser.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/plugins/autotest/itestparser.cpp b/src/plugins/autotest/itestparser.cpp
index 740f029e4c..cd0f2591dd 100644
--- a/src/plugins/autotest/itestparser.cpp
+++ b/src/plugins/autotest/itestparser.cpp
@@ -28,6 +28,10 @@
#include <coreplugin/editormanager/editormanager.h>
#include <cpptools/cppmodelmanager.h>
#include <utils/textfileformat.h>
+#include <utils/algorithm.h>
+
+#include <QRegularExpression>
+#include <QRegularExpressionMatch>
namespace Autotest {
@@ -69,6 +73,39 @@ QByteArray CppParser::getFileContent(const Utils::FilePath &filePath) const
return fileContent;
}
+bool precompiledHeaderContains(const CPlusPlus::Snapshot &snapshot,
+ const Utils::FilePath &filePath,
+ const std::function<bool(const QString &)> &checker)
+{
+ const CppTools::CppModelManager *modelManager = CppTools::CppModelManager::instance();
+ const QList<CppTools::ProjectPart::Ptr> projectParts = modelManager->projectPart(filePath);
+ if (projectParts.isEmpty())
+ return false;
+ const QStringList precompiledHeaders = projectParts.first()->precompiledHeaders;
+ auto headerContains = [&](const QString &header){
+ return Utils::anyOf(snapshot.allIncludesForDocument(header), checker);
+ };
+ return Utils::anyOf(precompiledHeaders, headerContains);
+}
+
+bool CppParser::precompiledHeaderContains(const CPlusPlus::Snapshot &snapshot,
+ const Utils::FilePath &filePath,
+ const QString &headerFilePath)
+{
+ return Autotest::precompiledHeaderContains(snapshot, filePath, [&](const QString &include) {
+ return include.endsWith(headerFilePath);
+ });
+}
+
+bool CppParser::precompiledHeaderContains(const CPlusPlus::Snapshot &snapshot,
+ const Utils::FilePath &filePath,
+ const QRegularExpression &headerFileRegex)
+{
+ return Autotest::precompiledHeaderContains(snapshot, filePath, [&](const QString &include) {
+ return headerFileRegex.match(include).hasMatch();
+ });
+}
+
void CppParser::release()
{
m_cppSnapshot = CPlusPlus::Snapshot();