From 67e9c2d7a0902154facd2b4dfaac2a745abded2a Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 23 Nov 2022 15:49:49 +0100 Subject: [PATCH] CppEditor: Proliferate FilePath use Remove SnapShot::{find,contains}(QString) overloads and fix fallout. Change-Id: I50c415826939e09ac111f33def611c7478fa5d97 Reviewed-by: Qt CI Bot Reviewed-by: Christian Stenger Reviewed-by: Christian Kandeler --- src/libs/cplusplus/CppDocument.h | 4 - src/libs/cplusplus/pp-engine.cpp | 8 +- src/libs/cplusplus/pp-engine.h | 2 +- src/plugins/clangtools/clangtool.cpp | 2 +- .../clangtools/documentclangtoolrunner.cpp | 2 +- src/plugins/coreplugin/testdatadir.cpp | 14 ++- src/plugins/coreplugin/testdatadir.h | 3 + .../cppeditor/builtineditordocumentparser.cpp | 5 +- .../cppeditor/builtinindexingsupport.cpp | 10 +- src/plugins/cppeditor/cppcompletionassist.cpp | 2 +- src/plugins/cppeditor/cppfindreferences.cpp | 2 +- .../cppeditor/cppfollowsymbolundercursor.cpp | 2 +- src/plugins/cppeditor/cppmodelmanager.cpp | 2 +- src/plugins/cppeditor/cppmodelmanager.h | 2 +- .../cppeditor/cppmodelmanager_test.cpp | 110 +++++++++--------- src/plugins/cppeditor/cpptoolstestcase.cpp | 8 +- .../cppeditor/modelmanagertesthelper.cpp | 17 +-- .../cppeditor/modelmanagertesthelper.h | 2 +- src/plugins/designer/qtcreatorintegration.cpp | 5 +- .../qmakeprojectmanager/qmakeproject.cpp | 2 +- 20 files changed, 114 insertions(+), 90 deletions(-) diff --git a/src/libs/cplusplus/CppDocument.h b/src/libs/cplusplus/CppDocument.h index 13df3a8db0b..069279c8f2c 100644 --- a/src/libs/cplusplus/CppDocument.h +++ b/src/libs/cplusplus/CppDocument.h @@ -388,16 +388,12 @@ public: const_iterator end() const { return _documents.end(); } bool contains(const Utils::FilePath &fileName) const; - bool contains(const QString &fileName) const - { return contains(Utils::FilePath::fromString(fileName)); } Document::Ptr document(const Utils::FilePath &fileName) const; Document::Ptr document(const QString &fileName) const { return document(Utils::FilePath::fromString(fileName)); } const_iterator find(const Utils::FilePath &fileName) const; - const_iterator find(const QString &fileName) const - { return find(Utils::FilePath::fromString(fileName)); } Snapshot simplified(Document::Ptr doc) const; diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp index 58fa33b0a9e..69a5a0b3539 100644 --- a/src/libs/cplusplus/pp-engine.cpp +++ b/src/libs/cplusplus/pp-engine.cpp @@ -716,7 +716,11 @@ void Preprocessor::State::updateIncludeGuardState_helper(IncludeGuardStateHint h #endif // DEBUG_INCLUDE_GUARD_TRACKING } -QString Preprocessor::configurationFileName() { return QStringLiteral(""); } +const FilePath &Preprocessor::configurationFileName() +{ + const static FilePath configurationFile = FilePath::fromPathPart(u""); + return configurationFile; +} Preprocessor::Preprocessor(Client *client, Environment *env) : m_client(client) @@ -2010,7 +2014,7 @@ void Preprocessor::handleIfDefDirective(bool checkUndefined, PPToken *tk) // the macro is a feature constraint(e.g. QT_NO_XXX) if (checkUndefined && macroName.startsWith("QT_NO_")) { - if (macro->fileName() == configurationFileName()) { + if (macro->fileName() == configurationFileName().pathView()) { // and it' defined in a pro file (e.g. DEFINES += QT_NO_QOBJECT) value = false; // take the branch diff --git a/src/libs/cplusplus/pp-engine.h b/src/libs/cplusplus/pp-engine.h index f5c2474ffc7..a83c5dc9bef 100644 --- a/src/libs/cplusplus/pp-engine.h +++ b/src/libs/cplusplus/pp-engine.h @@ -54,7 +54,7 @@ class CPLUSPLUS_EXPORT Preprocessor typedef Internal::Value Value; public: - static QString configurationFileName(); + static const Utils::FilePath &configurationFileName(); public: Preprocessor(Client *client, Environment *env); diff --git a/src/plugins/clangtools/clangtool.cpp b/src/plugins/clangtools/clangtool.cpp index 826cdb8d352..e56c9721a20 100644 --- a/src/plugins/clangtools/clangtool.cpp +++ b/src/plugins/clangtools/clangtool.cpp @@ -316,7 +316,7 @@ static FileInfos sortedFileInfos(const QVector for (const CppEditor::ProjectFile &file : std::as_const(projectPart->files)) { QTC_ASSERT(file.kind != CppEditor::ProjectFile::Unclassified, continue); QTC_ASSERT(file.kind != CppEditor::ProjectFile::Unsupported, continue); - if (file.path == CppEditor::CppModelManager::configurationFileName()) + if (file.path == CppEditor::CppModelManager::configurationFileName().path()) continue; if (file.active diff --git a/src/plugins/clangtools/documentclangtoolrunner.cpp b/src/plugins/clangtools/documentclangtoolrunner.cpp index 010c751e9fd..1108d098b12 100644 --- a/src/plugins/clangtools/documentclangtoolrunner.cpp +++ b/src/plugins/clangtools/documentclangtoolrunner.cpp @@ -134,7 +134,7 @@ static FileInfo getFileInfo(const FilePath &file, Project *project) for (const ProjectFile &projectFile : std::as_const(projectPart->files)) { QTC_ASSERT(projectFile.kind != ProjectFile::Unclassified, continue); QTC_ASSERT(projectFile.kind != ProjectFile::Unsupported, continue); - if (projectFile.path == CppModelManager::configurationFileName()) + if (projectFile.path == CppModelManager::configurationFileName().path()) continue; const auto projectFilePath = FilePath::fromString(projectFile.path); if (file != projectFilePath) diff --git a/src/plugins/coreplugin/testdatadir.cpp b/src/plugins/coreplugin/testdatadir.cpp index c77299750bf..5070a1d86b8 100644 --- a/src/plugins/coreplugin/testdatadir.cpp +++ b/src/plugins/coreplugin/testdatadir.cpp @@ -5,10 +5,13 @@ #include #include -#include #include -using namespace Core::Tests; +#include + +using namespace Utils; + +namespace Core::Tests { TestDataDir::TestDataDir(const QString &directory) : m_directory(directory) @@ -23,6 +26,11 @@ QString TestDataDir::file(const QString &fileName) const return directory() + QLatin1Char('/') + fileName; } +FilePath TestDataDir::filePath(const QString &fileName) const +{ + return FilePath::fromString(directory()) / fileName; +} + QString TestDataDir::path() const { return m_directory; @@ -37,3 +45,5 @@ QString TestDataDir::directory(const QString &subdir, bool clean) const path = QDir::cleanPath(path); return path; } + +} // Core::Tests diff --git a/src/plugins/coreplugin/testdatadir.h b/src/plugins/coreplugin/testdatadir.h index 07c689a3e86..04cff8c2040 100644 --- a/src/plugins/coreplugin/testdatadir.h +++ b/src/plugins/coreplugin/testdatadir.h @@ -15,6 +15,8 @@ : TestDataDir(QLatin1String(SRCDIR "/" PATH) + testDataDirectory) {} \ }; +namespace Utils { class FilePath; } + namespace Core { namespace Tests { @@ -24,6 +26,7 @@ public: TestDataDir(const QString &directory); QString file(const QString &fileName) const; + Utils::FilePath filePath(const QString &fileName) const; QString directory(const QString &subdir = QString(), bool clean = true) const; QString path() const; diff --git a/src/plugins/cppeditor/builtineditordocumentparser.cpp b/src/plugins/cppeditor/builtineditordocumentparser.cpp index 221b7d70c87..02d52f4096a 100644 --- a/src/plugins/cppeditor/builtineditordocumentparser.cpp +++ b/src/plugins/cppeditor/builtineditordocumentparser.cpp @@ -12,6 +12,7 @@ #include using namespace CPlusPlus; +using namespace Utils; namespace CppEditor { @@ -157,7 +158,7 @@ void BuiltinEditorDocumentParser::updateImpl(const QFutureInterface &futur // Update the snapshot if (invalidateSnapshot) { - const QString configurationFileName = CppModelManager::configurationFileName(); + const FilePath configurationFileName = CppModelManager::configurationFileName(); if (invalidateConfig) state.snapshot.remove(configurationFileName); if (!state.snapshot.contains(configurationFileName)) @@ -186,7 +187,7 @@ void BuiltinEditorDocumentParser::updateImpl(const QFutureInterface &futur sourceProcessor.setWorkingCopy(workingCopy); sourceProcessor.setHeaderPaths(state.headerPaths); sourceProcessor.setLanguageFeatures(features); - sourceProcessor.run(configurationFileName); + sourceProcessor.run(configurationFileName.path()); if (baseConfig.usePrecompiledHeaders) { for (const QString &precompiledHeader : std::as_const(state.precompiledHeaders)) sourceProcessor.run(precompiledHeader); diff --git a/src/plugins/cppeditor/builtinindexingsupport.cpp b/src/plugins/cppeditor/builtinindexingsupport.cpp index 474c410e147..4a8182e34d6 100644 --- a/src/plugins/cppeditor/builtinindexingsupport.cpp +++ b/src/plugins/cppeditor/builtinindexingsupport.cpp @@ -6,7 +6,6 @@ #include "builtineditordocumentparser.h" #include "cppchecksymbols.h" #include "cppeditorconstants.h" -#include "cppeditorplugin.h" #include "cppmodelmanager.h" #include "cppprojectfile.h" #include "cppsourceprocessor.h" @@ -26,8 +25,11 @@ #include #include +#include #include +using namespace Utils; + namespace CppEditor::Internal { static Q_LOGGING_CATEGORY(indexerLog, "qtc.cppeditor.indexer", QtWarningMsg) @@ -176,7 +178,7 @@ void index(QFutureInterface &indexingFuture, sourceProcessor->setTodo(Utils::toSet(files)); - const QString conf = CppModelManager::configurationFileName(); + const FilePath &conf = CppModelManager::configurationFileName(); bool processingHeaders = false; CppModelManager *cmm = CppModelManager::instance(); @@ -198,9 +200,9 @@ void index(QFutureInterface &indexingFuture, const bool isSourceFile = i < sourceCount; if (isSourceFile) { - (void) sourceProcessor->run(conf); + (void) sourceProcessor->run(conf.path()); } else if (!processingHeaders) { - (void) sourceProcessor->run(conf); + (void) sourceProcessor->run(conf.path()); processingHeaders = true; } diff --git a/src/plugins/cppeditor/cppcompletionassist.cpp b/src/plugins/cppeditor/cppcompletionassist.cpp index b58b8d277c7..8be4155bcff 100644 --- a/src/plugins/cppeditor/cppcompletionassist.cpp +++ b/src/plugins/cppeditor/cppcompletionassist.cpp @@ -1479,7 +1479,7 @@ bool InternalCppCompletionAssistProcessor::globalCompletion(Scope *currentScope) completeNamespace(b); addKeywords(); - addMacros(CppModelManager::configurationFileName(), context.snapshot()); + addMacros(CppModelManager::configurationFileName().path(), context.snapshot()); addMacros(context.thisDocument()->filePath().toString(), context.snapshot()); addSnippets(); return !m_completions.isEmpty(); diff --git a/src/plugins/cppeditor/cppfindreferences.cpp b/src/plugins/cppeditor/cppfindreferences.cpp index 0f0db5b66df..42d77a5493c 100644 --- a/src/plugins/cppeditor/cppfindreferences.cpp +++ b/src/plugins/cppeditor/cppfindreferences.cpp @@ -536,7 +536,7 @@ CPlusPlus::Symbol *CppFindReferences::findSymbol(const CppFindReferencesParamete { QTC_ASSERT(context, return nullptr); QString symbolFile = QLatin1String(parameters.symbolFileName); - if (!snapshot.contains(symbolFile)) + if (!snapshot.contains(FilePath::fromString(symbolFile))) return nullptr; CPlusPlus::Document::Ptr newSymbolDocument = snapshot.document(symbolFile); diff --git a/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp b/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp index 7e86acfc123..38939b8ddbf 100644 --- a/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp +++ b/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp @@ -651,7 +651,7 @@ void FollowSymbolUnderCursor::findLink( const QString fileName = use->macro().fileName(); if (fileName == CppModelManager::editorConfigurationFileName()) { editorWidget->showPreProcessorWidget(); - } else if (fileName != CppModelManager::configurationFileName()) { + } else if (fileName != CppModelManager::configurationFileName().path()) { const Macro ¯o = use->macro(); link.targetFilePath = Utils::FilePath::fromString(macro.fileName()); link.targetLine = macro.line(); diff --git a/src/plugins/cppeditor/cppmodelmanager.cpp b/src/plugins/cppeditor/cppmodelmanager.cpp index a4e0d357b17..230655a43ec 100644 --- a/src/plugins/cppeditor/cppmodelmanager.cpp +++ b/src/plugins/cppeditor/cppmodelmanager.cpp @@ -848,7 +848,7 @@ Core::ILocatorFilter *CppModelManager::currentDocumentFilter() const return d->m_currentDocumentFilter.get(); } -QString CppModelManager::configurationFileName() +const FilePath &CppModelManager::configurationFileName() { return Preprocessor::configurationFileName(); } diff --git a/src/plugins/cppeditor/cppmodelmanager.h b/src/plugins/cppeditor/cppmodelmanager.h index 181fd91d31c..78d9a3685ed 100644 --- a/src/plugins/cppeditor/cppmodelmanager.h +++ b/src/plugins/cppeditor/cppmodelmanager.h @@ -210,7 +210,7 @@ public: static QSet timeStampModifiedFiles(const QList &documentsToCheck); static Internal::CppSourceProcessor *createSourceProcessor(); - static QString configurationFileName(); + static const Utils::FilePath &configurationFileName(); static QString editorConfigurationFileName(); void setLocatorFilter(std::unique_ptr &&filter); diff --git a/src/plugins/cppeditor/cppmodelmanager_test.cpp b/src/plugins/cppeditor/cppmodelmanager_test.cpp index ed1ac752682..8ed0b8cd555 100644 --- a/src/plugins/cppeditor/cppmodelmanager_test.cpp +++ b/src/plugins/cppeditor/cppmodelmanager_test.cpp @@ -65,8 +65,10 @@ public: QString frameworksDir(bool cleaned = true) const { return directory(_("frameworks"), cleaned); } - QString fileFromSourcesDir(const QString &fileName) const - { return directory(_("sources")) + QLatin1Char('/') + fileName; } + FilePath fileFromSourcesDir(const QString &fileName) const + { + return FilePath::fromString(directory(_("sources"))).pathAppended(fileName); + } FilePath filePath(const QString &p) const { @@ -74,12 +76,12 @@ public: } }; -QStringList toAbsolutePaths(const QStringList &relativePathList, - const TemporaryCopiedDir &temporaryDir) +FilePaths toAbsolutePaths(const QStringList &relativePathList, + const TemporaryCopiedDir &temporaryDir) { - QStringList result; + FilePaths result; for (const QString &file : relativePathList) - result << temporaryDir.absolutePath(file.toUtf8()); + result << FilePath::fromString(temporaryDir.absolutePath(file.toUtf8())); return result; } @@ -96,12 +98,14 @@ public: { const MyTestDataDir projectDir(dir); for (const QString &file : files) - projectFiles << projectDir.file(file); + projectFiles << projectDir.filePath(file); RawProjectPart rpp; rpp.setQtVersion(Utils::QtMajorVersion::Qt5); const ProjectFiles rppFiles = Utils::transform(projectFiles, - [](const QString &file) { return ProjectFile(file, ProjectFile::classify(file)); }); + [](const FilePath &file) { + return ProjectFile(file.toString(), ProjectFile::classify(file.toString())); + }); const auto project = modelManagerTestHelper->createProject( name, Utils::FilePath::fromString(dir).pathAppended(name + ".pro")); @@ -112,7 +116,7 @@ public: ModelManagerTestHelper *modelManagerTestHelper; ProjectInfo::ConstPtr projectInfo; - QStringList projectFiles; + FilePaths projectFiles; }; /// Changes a file on the disk and restores its original contents on destruction @@ -211,10 +215,10 @@ void ModelManagerTest::testFrameworkHeaders() rpp.setMacros({{"OH_BEHAVE", "-1"}}); rpp.setHeaderPaths({HeaderPath::makeUser(testDataDir.includeDir(false)), HeaderPath::makeFramework(testDataDir.frameworksDir(false))}); - const QString &source = testDataDir.fileFromSourcesDir( - _("test_modelmanager_framework_headers.cpp")); + const FilePath source = + testDataDir.fileFromSourcesDir("test_modelmanager_framework_headers.cpp"); const auto part = ProjectPart::create(project->projectFilePath(), rpp, {}, - {ProjectFile(source, ProjectFile::CXXSource)}); + {ProjectFile(source.toString(), ProjectFile::CXXSource)}); const auto pi = ProjectInfo::create(ProjectUpdateInfo(project, KitInfo(nullptr), {}, {}), {part}); @@ -222,7 +226,7 @@ void ModelManagerTest::testFrameworkHeaders() QCoreApplication::processEvents(); QVERIFY(mm->snapshot().contains(source)); - Document::Ptr doc = mm->document(Utils::FilePath::fromString(source)); + Document::Ptr doc = mm->document(source); QVERIFY(!doc.isNull()); CPlusPlus::Namespace *ns = doc->globalNamespace(); QVERIFY(ns); @@ -248,8 +252,8 @@ void ModelManagerTest::testRefreshAlsoIncludesOfProjectFiles() const MyTestDataDir testDataDir(_("testdata")); - const QString testCpp(testDataDir.fileFromSourcesDir(_("test_modelmanager_refresh.cpp"))); - const QString testHeader(testDataDir.fileFromSourcesDir( _("test_modelmanager_refresh.h"))); + const FilePath testCpp = testDataDir.fileFromSourcesDir(_("test_modelmanager_refresh.cpp")); + const FilePath testHeader = testDataDir.fileFromSourcesDir( _("test_modelmanager_refresh.h")); const auto project = helper.createProject(_("test_modelmanager_refresh_also_includes_of_project_files"), @@ -259,10 +263,10 @@ void ModelManagerTest::testRefreshAlsoIncludesOfProjectFiles() rpp.setMacros({{"OH_BEHAVE", "-1"}}); rpp.setHeaderPaths({HeaderPath::makeUser(testDataDir.includeDir(false))}); auto part = ProjectPart::create(project->projectFilePath(), rpp, {}, - {ProjectFile(testCpp, ProjectFile::CXXSource)}); + {ProjectFile(testCpp.toString(), ProjectFile::CXXSource)}); auto pi = ProjectInfo::create(ProjectUpdateInfo(project, KitInfo(nullptr), {}, {}), {part}); - QSet refreshedFiles = helper.updateProjectInfo(pi); + QSet refreshedFiles = helper.updateProjectInfo(pi); QCOMPARE(refreshedFiles.size(), 1); QVERIFY(refreshedFiles.contains(testCpp)); CPlusPlus::Snapshot snapshot = mm->snapshot(); @@ -277,7 +281,7 @@ void ModelManagerTest::testRefreshAlsoIncludesOfProjectFiles() // Introduce a define that will enable another define once the document is reparsed. rpp.setMacros({{"TEST_DEFINE", "1"}}); part = ProjectPart::create(project->projectFilePath(), rpp, {}, - {ProjectFile(testCpp, ProjectFile::CXXSource)}); + {ProjectFile(testCpp.toString(), ProjectFile::CXXSource)}); pi = ProjectInfo::create(ProjectUpdateInfo(project, KitInfo(nullptr), {}, {}), {part}); refreshedFiles = helper.updateProjectInfo(pi); @@ -305,25 +309,25 @@ void ModelManagerTest::testRefreshSeveralTimes() const MyTestDataDir testDataDir(_("testdata_refresh")); - const QString testHeader1(testDataDir.file(_("defines.h"))); - const QString testHeader2(testDataDir.file(_("header.h"))); - const QString testCpp(testDataDir.file(_("source.cpp"))); + const FilePath testHeader1 = testDataDir.filePath("defines.h"); + const FilePath testHeader2 = testDataDir.filePath("header.h"); + const FilePath testCpp = testDataDir.filePath("source.cpp"); const auto project = helper.createProject(_("test_modelmanager_refresh_several_times"), Utils::FilePath::fromString("blubb.pro")); RawProjectPart rpp; rpp.setQtVersion(Utils::QtMajorVersion::Qt5); const ProjectFiles files = { - ProjectFile(testHeader1, ProjectFile::CXXHeader), - ProjectFile(testHeader2, ProjectFile::CXXHeader), - ProjectFile(testCpp, ProjectFile::CXXSource) + ProjectFile(testHeader1.toString(), ProjectFile::CXXHeader), + ProjectFile(testHeader2.toString(), ProjectFile::CXXHeader), + ProjectFile(testCpp.toString(), ProjectFile::CXXSource) }; const auto part = ProjectPart::create(project->projectFilePath(), rpp, {}, files); auto pi = ProjectInfo::create(ProjectUpdateInfo(project, KitInfo(nullptr), {}, {}), {part}); mm->updateProjectInfo(pi); CPlusPlus::Snapshot snapshot; - QSet refreshedFiles; + QSet refreshedFiles; Document::Ptr document; ProjectExplorer::Macros macros = {{"FIRST_DEFINE"}}; @@ -399,20 +403,21 @@ void ModelManagerTest::testRefreshAddedAndPurgeRemoved() const MyTestDataDir testDataDir(_("testdata_refresh")); - const QString testHeader1(testDataDir.file(_("header.h"))); - const QString testHeader2(testDataDir.file(_("defines.h"))); - const QString testCpp(testDataDir.file(_("source.cpp"))); + const FilePath testHeader1 = testDataDir.filePath("header.h"); + const FilePath testHeader2 = testDataDir.filePath("defines.h"); + const FilePath testCpp = testDataDir.filePath("source.cpp"); const auto project = helper.createProject(_("test_modelmanager_refresh_3"), Utils::FilePath::fromString("blubb.pro")); RawProjectPart rpp; rpp.setQtVersion(Utils::QtMajorVersion::Qt5); const auto part = ProjectPart::create(project->projectFilePath(), rpp, {}, - {{testCpp, ProjectFile::CXXSource}, {testHeader1, ProjectFile::CXXHeader}}); + {{testCpp.toString(), ProjectFile::CXXSource}, + {testHeader1.toString(), ProjectFile::CXXHeader}}); auto pi = ProjectInfo::create({project, KitInfo(nullptr), {}, {}}, {part}); CPlusPlus::Snapshot snapshot; - QSet refreshedFiles; + QSet refreshedFiles; refreshedFiles = helper.updateProjectInfo(pi); @@ -426,7 +431,8 @@ void ModelManagerTest::testRefreshAddedAndPurgeRemoved() // Now add testHeader2 and remove testHeader1 const auto newPart = ProjectPart::create(project->projectFilePath(), rpp, {}, - {{testCpp, ProjectFile::CXXSource}, {testHeader2, ProjectFile::CXXHeader}}); + {{testCpp.toString(), ProjectFile::CXXSource}, + {testHeader2.toString(), ProjectFile::CXXHeader}}); pi = ProjectInfo::create({project, KitInfo(nullptr), {}, {}}, {newPart}); refreshedFiles = helper.updateProjectInfo(pi); @@ -452,31 +458,31 @@ void ModelManagerTest::testRefreshTimeStampModifiedIfSourcefilesChange() TemporaryCopiedDir temporaryDir(MyTestDataDir(QLatin1String("testdata_refresh2")).path()); fileToChange = temporaryDir.absolutePath(fileToChange.toUtf8()); - initialProjectFiles = toAbsolutePaths(initialProjectFiles, temporaryDir); - finalProjectFiles = toAbsolutePaths(finalProjectFiles, temporaryDir); + const FilePaths initialProjectFilePaths = toAbsolutePaths(initialProjectFiles, temporaryDir); + const FilePaths finalProjectFilePaths = toAbsolutePaths(finalProjectFiles, temporaryDir); ModelManagerTestHelper helper; CppModelManager *mm = CppModelManager::instance(); const auto project = helper.createProject(_("test_modelmanager_refresh_timeStampModified"), - Utils::FilePath::fromString("blubb.pro")); + FilePath::fromString("blubb.pro")); RawProjectPart rpp; rpp.setQtVersion(Utils::QtMajorVersion::Qt5); - auto files = Utils::transform(initialProjectFiles, [](const QString &f) { - return ProjectFile(f, ProjectFile::CXXSource); + auto files = Utils::transform(initialProjectFilePaths, [](const FilePath &f) { + return ProjectFile(f.toString(), ProjectFile::CXXSource); }); auto part = ProjectPart::create(project->projectFilePath(), rpp, {}, files); auto pi = ProjectInfo::create({project, KitInfo(nullptr), {}, {}}, {part}); Document::Ptr document; CPlusPlus::Snapshot snapshot; - QSet refreshedFiles; + QSet refreshedFiles; refreshedFiles = helper.updateProjectInfo(pi); - QCOMPARE(refreshedFiles.size(), initialProjectFiles.size()); + QCOMPARE(refreshedFiles.size(), initialProjectFilePaths.size()); snapshot = mm->snapshot(); - for (const QString &file : std::as_const(initialProjectFiles)) { + for (const FilePath &file : initialProjectFilePaths) { QVERIFY(refreshedFiles.contains(file)); QVERIFY(snapshot.contains(file)); } @@ -495,17 +501,17 @@ void ModelManagerTest::testRefreshTimeStampModifiedIfSourcefilesChange() QVERIFY(fileChangerAndRestorer.writeContents(newFileContentes)); // Add or remove source file. The configuration stays the same. - files = Utils::transform(finalProjectFiles, [](const QString &f) { - return ProjectFile(f, ProjectFile::CXXSource); + files = Utils::transform(finalProjectFilePaths, [](const FilePath &f) { + return ProjectFile(f.toString(), ProjectFile::CXXSource); }); part = ProjectPart::create(project->projectFilePath(), rpp, {}, files); pi = ProjectInfo::create({project, KitInfo(nullptr), {}, {}}, {part}); refreshedFiles = helper.updateProjectInfo(pi); - QCOMPARE(refreshedFiles.size(), finalProjectFiles.size()); + QCOMPARE(refreshedFiles.size(), finalProjectFilePaths.size()); snapshot = mm->snapshot(); - for (const QString &file : std::as_const(finalProjectFiles)) { + for (const FilePath &file : finalProjectFilePaths) { QVERIFY(refreshedFiles.contains(file)); QVERIFY(snapshot.contains(file)); } @@ -541,7 +547,7 @@ void ModelManagerTest::testRefreshTimeStampModifiedIfSourcefilesChange_data() /// files of the first project. void ModelManagerTest::testSnapshotAfterTwoProjects() { - QSet refreshedFiles; + QSet refreshedFiles; ModelManagerTestHelper helper; ProjectCreator project1(&helper); ProjectCreator project2(&helper); @@ -556,7 +562,7 @@ void ModelManagerTest::testSnapshotAfterTwoProjects() QCOMPARE(refreshedFiles, Utils::toSet(project1.projectFiles)); const int snapshotSizeAfterProject1 = mm->snapshot().size(); - for (const QString &file : std::as_const(project1.projectFiles)) + for (const FilePath &file : std::as_const(project1.projectFiles)) QVERIFY(mm->snapshot().contains(file)); // Project 2 @@ -571,9 +577,9 @@ void ModelManagerTest::testSnapshotAfterTwoProjects() QVERIFY(snapshotSizeAfterProject2 > snapshotSizeAfterProject1); QVERIFY(snapshotSizeAfterProject2 >= snapshotSizeAfterProject1 + project2.projectFiles.size()); - for (const QString &file : std::as_const(project1.projectFiles)) + for (const FilePath &file : std::as_const(project1.projectFiles)) QVERIFY(mm->snapshot().contains(file)); - for (const QString &file : std::as_const(project2.projectFiles)) + for (const FilePath &file : std::as_const(project2.projectFiles)) QVERIFY(mm->snapshot().contains(file)); } @@ -608,7 +614,7 @@ void ModelManagerTest::testExtraeditorsupportUiFiles() fileNamesInWorkinCopy.sort(); const QString expectedUiHeaderFileName = _("ui_mainwindow.h"); - QCOMPARE(fileNamesInWorkinCopy.at(0), mm->configurationFileName()); + QCOMPARE(fileNamesInWorkinCopy.at(0), mm->configurationFileName().toString()); QCOMPARE(fileNamesInWorkinCopy.at(1), expectedUiHeaderFileName); // Check CppSourceProcessor / includes. @@ -633,14 +639,14 @@ void ModelManagerTest::testGcIfLastCppeditorClosed() ModelManagerTestHelper helper; MyTestDataDir testDataDirectory(_("testdata_guiproject1")); - const QString file = testDataDirectory.file(_("main.cpp")); + const FilePath file = testDataDirectory.filePath("main.cpp"); CppModelManager *mm = CppModelManager::instance(); helper.resetRefreshedSourceFiles(); // Open a file in the editor QCOMPARE(Core::DocumentModel::openedDocuments().size(), 0); - Core::IEditor *editor = Core::EditorManager::openEditor(Utils::FilePath::fromString(file)); + Core::IEditor *editor = Core::EditorManager::openEditor(file); QVERIFY(editor); QCOMPARE(Core::DocumentModel::openedDocuments().size(), 1); QVERIFY(mm->isCppEditor(editor)); @@ -664,14 +670,14 @@ void ModelManagerTest::testDontGcOpenedFiles() ModelManagerTestHelper helper; MyTestDataDir testDataDirectory(_("testdata_guiproject1")); - const QString file = testDataDirectory.file(_("main.cpp")); + const FilePath file = testDataDirectory.filePath("main.cpp"); CppModelManager *mm = CppModelManager::instance(); helper.resetRefreshedSourceFiles(); // Open a file in the editor QCOMPARE(Core::DocumentModel::openedDocuments().size(), 0); - Core::IEditor *editor = Core::EditorManager::openEditor(Utils::FilePath::fromString(file)); + Core::IEditor *editor = Core::EditorManager::openEditor(file); QVERIFY(editor); QCOMPARE(Core::DocumentModel::openedDocuments().size(), 1); QVERIFY(mm->isCppEditor(editor)); diff --git a/src/plugins/cppeditor/cpptoolstestcase.cpp b/src/plugins/cppeditor/cpptoolstestcase.cpp index 2633e41ffbe..79fdca9471b 100644 --- a/src/plugins/cppeditor/cpptoolstestcase.cpp +++ b/src/plugins/cppeditor/cpptoolstestcase.cpp @@ -177,11 +177,11 @@ static bool closeEditorsWithoutGarbageCollectorInvocation(const QList &filePaths) +static bool snapshotContains(const CPlusPlus::Snapshot &snapshot, const QSet &filePaths) { - for (const QString &filePath : filePaths) { + for (const FilePath &filePath : filePaths) { if (!snapshot.contains(filePath)) { - qWarning() << "Missing file in snapshot:" << qPrintable(filePath); + qWarning() << "Missing file in snapshot:" << qPrintable(filePath.toString()); return false; } } @@ -291,7 +291,7 @@ bool TestCase::parseFiles(const QSet &filePaths) qWarning("After parsing: snapshot is empty."); return false; } - if (!snapshotContains(snapshot, filePaths_)) { + if (!snapshotContains(snapshot, filePaths)) { qWarning("After parsing: snapshot does not contain all expected files."); return false; } diff --git a/src/plugins/cppeditor/modelmanagertesthelper.cpp b/src/plugins/cppeditor/modelmanagertesthelper.cpp index 6b9f98e6c7b..4ac6beecca3 100644 --- a/src/plugins/cppeditor/modelmanagertesthelper.cpp +++ b/src/plugins/cppeditor/modelmanagertesthelper.cpp @@ -4,23 +4,26 @@ #include "modelmanagertesthelper.h" #include "cpptoolstestcase.h" -#include "cppworkingcopy.h" #include "projectinfo.h" #include +#include + #include #include +using namespace Utils; + namespace CppEditor::Tests { -TestProject::TestProject(const QString &name, QObject *parent, const Utils::FilePath &filePath) : +TestProject::TestProject(const QString &name, QObject *parent, const FilePath &filePath) : ProjectExplorer::Project("x-binary/foo", filePath), m_name(name) { setParent(parent); - setId(Utils::Id::fromString(name)); + setId(Id::fromString(name)); setDisplayName(name); qRegisterMetaType >(); } @@ -65,7 +68,7 @@ void ModelManagerTestHelper::cleanup() } ModelManagerTestHelper::Project *ModelManagerTestHelper::createProject( - const QString &name, const Utils::FilePath &filePath) + const QString &name, const FilePath &filePath) { auto tp = new TestProject(name, this, filePath); m_projects.push_back(tp); @@ -74,13 +77,13 @@ ModelManagerTestHelper::Project *ModelManagerTestHelper::createProject( return tp; } -QSet ModelManagerTestHelper::updateProjectInfo( +QSet ModelManagerTestHelper::updateProjectInfo( const ProjectInfo::ConstPtr &projectInfo) { resetRefreshedSourceFiles(); CppModelManager::instance()->updateProjectInfo(projectInfo).waitForFinished(); QCoreApplication::processEvents(); - return waitForRefreshedSourceFiles(); + return Utils::transform(waitForRefreshedSourceFiles(), &FilePath::fromString); } void ModelManagerTestHelper::resetRefreshedSourceFiles() @@ -116,4 +119,4 @@ void ModelManagerTestHelper::gcFinished() m_gcFinished = true; } -} // namespace CppEditor::Tests +} // CppEditor::Tests diff --git a/src/plugins/cppeditor/modelmanagertesthelper.h b/src/plugins/cppeditor/modelmanagertesthelper.h index d52ca3986eb..f1cfcca3cd2 100644 --- a/src/plugins/cppeditor/modelmanagertesthelper.h +++ b/src/plugins/cppeditor/modelmanagertesthelper.h @@ -40,7 +40,7 @@ public: Project *createProject(const QString &name, const Utils::FilePath &filePath = {}); - QSet updateProjectInfo(const ProjectInfo::ConstPtr &projectInfo); + QSet updateProjectInfo(const ProjectInfo::ConstPtr &projectInfo); void resetRefreshedSourceFiles(); QSet waitForRefreshedSourceFiles(); diff --git a/src/plugins/designer/qtcreatorintegration.cpp b/src/plugins/designer/qtcreatorintegration.cpp index e3c0cc4e067..831f522267d 100644 --- a/src/plugins/designer/qtcreatorintegration.cpp +++ b/src/plugins/designer/qtcreatorintegration.cpp @@ -348,7 +348,7 @@ static ClassDocumentPtrPair const unsigned recursionMaxIncludeDepth = maxIncludeDepth - 1u; const auto includedFiles = doc->includedFiles(); for (const QString &include : includedFiles) { - const Snapshot::const_iterator it = docTable.find(include); + const Snapshot::const_iterator it = docTable.find(FilePath::fromString(include)); if (it != docTable.end()) { const Document::Ptr &includeDoc = it.value(); LookupContext context(includeDoc, docTable); @@ -437,8 +437,7 @@ bool QtCreatorIntegration::navigateToSlot(const QString &objectName, newDocTable.insert(i.value()); } } else { - const Utils::FilePath configFileName = - Utils::FilePath::fromString(CppEditor::CppModelManager::configurationFileName()); + const FilePath configFileName = CppEditor::CppModelManager::configurationFileName(); const CppEditor::WorkingCopy::Table elements = CppEditor::CppModelManager::instance()->workingCopy().elements(); for (auto it = elements.cbegin(), end = elements.cend(); it != end; ++it) { diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index 5b330ae7524..6c8103c52b1 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -392,7 +392,7 @@ void QmakeBuildSystem::updateCppCodeModel() }); } generators.append(proGenerators); - fileList.prepend(CppEditor::CppModelManager::configurationFileName()); + fileList.prepend(CppEditor::CppModelManager::configurationFileName().toString()); rpp.setFiles(fileList, [cumulativeSourceFiles](const QString &filePath) { // Keep this lambda thread-safe! return !cumulativeSourceFiles.contains(filePath);