diff --git a/src/plugins/autotest/boost/boosttestparser.cpp b/src/plugins/autotest/boost/boosttestparser.cpp index 47b190ecffe..65e5807e7b3 100644 --- a/src/plugins/autotest/boost/boosttestparser.cpp +++ b/src/plugins/autotest/boost/boosttestparser.cpp @@ -109,7 +109,7 @@ bool BoostTestParser::processDocument(QPromise &promise, if (projectParts.isEmpty()) // happens if shutting down while parsing return false; const CppEditor::ProjectPart::ConstPtr projectPart = projectParts.first(); - const auto projectFile = FilePath::fromString(projectPart->projectFile); + const FilePath &projectFile = projectPart->projectFile; const QByteArray &fileContent = getFileContent(fileName); BoostCodeParser codeParser(fileContent, projectPart->languageFeatures, doc, m_cppSnapshot); diff --git a/src/plugins/autotest/catch/catchtestparser.cpp b/src/plugins/autotest/catch/catchtestparser.cpp index 314f54e62bb..7633fcb7474 100644 --- a/src/plugins/autotest/catch/catchtestparser.cpp +++ b/src/plugins/autotest/catch/catchtestparser.cpp @@ -123,7 +123,7 @@ bool CatchTestParser::processDocument(QPromise &promise, return false; FilePath proFile; const CppEditor::ProjectPart::ConstPtr projectPart = projectParts.first(); - proFile = FilePath::fromString(projectPart->projectFile); + proFile = projectPart->projectFile; CatchCodeParser codeParser(fileContent, projectPart->languageFeatures); const CatchTestCodeLocationList foundTests = codeParser.findTests(); diff --git a/src/plugins/autotest/gtest/gtestparser.cpp b/src/plugins/autotest/gtest/gtestparser.cpp index 8fc292a9224..5a4ef9555b5 100644 --- a/src/plugins/autotest/gtest/gtestparser.cpp +++ b/src/plugins/autotest/gtest/gtestparser.cpp @@ -97,7 +97,7 @@ bool GTestParser::processDocument(QPromise &promise, const QList &ppList = CppEditor::CppModelManager::projectPart(filePath); if (!ppList.isEmpty()) - proFile = FilePath::fromString(ppList.first()->projectFile); + proFile = ppList.first()->projectFile; else return false; // happens if shutting down while parsing diff --git a/src/plugins/autotest/gtest/gtesttreeitem.cpp b/src/plugins/autotest/gtest/gtesttreeitem.cpp index 280bdfa9160..ec195eabb4b 100644 --- a/src/plugins/autotest/gtest/gtesttreeitem.cpp +++ b/src/plugins/autotest/gtest/gtesttreeitem.cpp @@ -500,10 +500,10 @@ QSet internalTargets(const TestTreeItem &item) if (projectParts.isEmpty()) return CppEditor::CppModelManager::dependingInternalTargets(item.filePath()); for (const CppEditor::ProjectPart::ConstPtr &projectPart : projectParts) { - if (FilePath::fromString(projectPart->projectFile) == item.proFile() - && Utils::anyOf(projectPart->files, [&filePath](const CppEditor::ProjectFile &pf) { - return pf.path == filePath; - })) { + if (projectPart->projectFile == item.proFile() + && Utils::anyOf(projectPart->files, [&filePath](const CppEditor::ProjectFile &pf) { + return pf.path == filePath; + })) { result.insert(projectPart->buildSystemTarget); if (projectPart->buildTargetType != ProjectExplorer::BuildTargetType::Executable) result.unite(CppEditor::CppModelManager::dependingInternalTargets(filePath)); diff --git a/src/plugins/autotest/qtest/qttestparser.cpp b/src/plugins/autotest/qtest/qttestparser.cpp index a74944b7b64..7295b582154 100644 --- a/src/plugins/autotest/qtest/qttestparser.cpp +++ b/src/plugins/autotest/qtest/qttestparser.cpp @@ -370,7 +370,7 @@ std::optional QtTestParser::fillTestCaseData( } QtTestParseResult *QtTestParser::createParseResult( - const QString &testCaseName, const TestCaseData &data, const QString &projectFile) const + const QString &testCaseName, const TestCaseData &data, const FilePath &projectFile) const { QtTestParseResult *parseResult = new QtTestParseResult(framework()); parseResult->itemType = TestTreeItem::TestCase; @@ -379,7 +379,7 @@ QtTestParseResult *QtTestParser::createParseResult( parseResult->displayName = testCaseName; parseResult->line = data.line; parseResult->column = data.column; - parseResult->proFile = FilePath::fromString(projectFile); + parseResult->proFile = projectFile; parseResult->setRunsMultipleTestcases(data.multipleTestCases); QMap::ConstIterator it = data.testFunctions.begin(); const QMap::ConstIterator end = data.testFunctions.end(); diff --git a/src/plugins/autotest/qtest/qttestparser.h b/src/plugins/autotest/qtest/qttestparser.h index 9f8c44593f0..f95f823891d 100644 --- a/src/plugins/autotest/qtest/qttestparser.h +++ b/src/plugins/autotest/qtest/qttestparser.h @@ -53,8 +53,10 @@ private: std::optional fillTestCaseData(const QString &testCaseName, const CPlusPlus::Document::Ptr &doc, TestCaseData &data) const; - QtTestParseResult *createParseResult(const QString &testCaseName, const TestCaseData &data, - const QString &projectFile) const; + QtTestParseResult *createParseResult( + const QString &testCaseName, + const TestCaseData &data, + const Utils::FilePath &projectFile) const; QHash m_testCases; QMultiHash m_alternativeFiles; QSet m_prefilteredFiles; diff --git a/src/plugins/autotest/quick/quicktestparser.cpp b/src/plugins/autotest/quick/quicktestparser.cpp index e67926a262c..c761961b3aa 100644 --- a/src/plugins/autotest/quick/quicktestparser.cpp +++ b/src/plugins/autotest/quick/quicktestparser.cpp @@ -260,7 +260,7 @@ bool QuickTestParser::handleQtQuickTest(QPromise &promise, if (ppList.isEmpty()) // happens if shutting down while parsing return false; const FilePath cppFileName = document->filePath(); - const FilePath proFile = FilePath::fromString(ppList.at(0)->projectFile); + const FilePath proFile = ppList.at(0)->projectFile; { QWriteLocker lock(&m_parseLock); m_mainCppFiles.insert(cppFileName, proFile); diff --git a/src/plugins/autotest/quick/quicktesttreeitem.cpp b/src/plugins/autotest/quick/quicktesttreeitem.cpp index c4adf945872..f6dc1194748 100644 --- a/src/plugins/autotest/quick/quicktesttreeitem.cpp +++ b/src/plugins/autotest/quick/quicktesttreeitem.cpp @@ -377,7 +377,7 @@ QSet internalTargets(const FilePath &proFile) for (const CppEditor::ProjectPart::ConstPtr &projectPart : projectInfo->projectParts()) { if (projectPart->buildTargetType != ProjectExplorer::BuildTargetType::Executable) continue; - if (projectPart->projectFile != proFile.path()) + if (projectPart->projectFile != proFile) continue; if (Utils::anyOf(projectPart->projectMacros, [](const ProjectExplorer::Macro ¯o){ return macro.type == ProjectExplorer::MacroType::Define && diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildsystem.cpp b/src/plugins/autotoolsprojectmanager/autotoolsbuildsystem.cpp index e913ec47e08..3a759cafead 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsbuildsystem.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildsystem.cpp @@ -154,7 +154,7 @@ void AutotoolsBuildSystem::makefileParsingFinished(const MakefileParserOutputDat RawProjectPart rpp; rpp.setDisplayName(project()->displayName()); - rpp.setProjectFileLocation(projectFilePath().toString()); + rpp.setProjectFileLocation(projectFilePath()); rpp.setQtVersion(kitInfo.projectPartQtVersion); const QStringList cflags = outputData.m_cflags; QStringList cxxflags = outputData.m_cxxflags; diff --git a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp index 43af6c8a143..ab583af3264 100644 --- a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp +++ b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp @@ -446,8 +446,7 @@ static RawProjectParts generateRawProjectParts(const QFuture &cancelFuture } RawProjectPart rpp; - rpp.setProjectFileLocation( - t.sourceDir.pathAppended(Constants::CMAKE_LISTS_TXT).toString()); + rpp.setProjectFileLocation(t.sourceDir.pathAppended(Constants::CMAKE_LISTS_TXT)); rpp.setBuildSystemTarget(t.name); const QString postfix = needPostfix ? QString("_%1_%2").arg(ci.language).arg(count) : QString(); diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp index 2b01a6b9124..93d98593deb 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp @@ -172,7 +172,7 @@ static RawProjectPart makeRawProjectPart(const FilePath &projectFile, RawProjectPart rpp; - rpp.setProjectFileLocation(projectFile.toString()); + rpp.setProjectFileLocation(projectFile); rpp.setBuildSystemTarget(workingDir.path()); rpp.setDisplayName(filePath.fileName()); rpp.setFiles({filePath.toFSPathString()}); diff --git a/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp b/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp index dd62fb1fbf1..badad82f691 100644 --- a/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp +++ b/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp @@ -1142,7 +1142,7 @@ QVariant ProjectPartsModel::data(const QModelIndex &index, int role) const if (column == PartNameColumn) return m_projectPartsList.at(row)->displayName; else if (column == PartFilePathColumn) - return QDir::toNativeSeparators(m_projectPartsList.at(row)->projectFile); + return m_projectPartsList.at(row)->projectFile.nativePath(); } else if (role == Qt::ForegroundRole) { if (!m_projectPartsList.at(row)->selectedForBuilding) { return QApplication::palette().color(QPalette::ColorGroup::Disabled, diff --git a/src/plugins/cppeditor/cppparsecontext.cpp b/src/plugins/cppeditor/cppparsecontext.cpp index 554c6ca8390..9721bccdc29 100644 --- a/src/plugins/cppeditor/cppparsecontext.cpp +++ b/src/plugins/cppeditor/cppparsecontext.cpp @@ -105,7 +105,7 @@ QVariant ParseContextModel::data(const QModelIndex &index, int role) const if (role == Qt::DisplayRole) return m_projectParts[row]->displayName; else if (role == Qt::ToolTipRole) - return QDir::toNativeSeparators(m_projectParts[row]->projectFile); + return m_projectParts[row]->projectFile.nativePath(); return QVariant(); } diff --git a/src/plugins/cppeditor/projectinfo_test.cpp b/src/plugins/cppeditor/projectinfo_test.cpp index 3536c139106..f1035dd7fa0 100644 --- a/src/plugins/cppeditor/projectinfo_test.cpp +++ b/src/plugins/cppeditor/projectinfo_test.cpp @@ -115,7 +115,7 @@ void ProjectPartChooserTest::testChooseManuallySet() rpp2.setProjectFileLocation("someId"); ProjectPart::ConstPtr p2 = ProjectPart::create({}, rpp2); ProjectPartChooserTestHelper t; - t.preferredProjectPartId = p2->projectFile; + t.preferredProjectPartId = p2->projectFile.toString(); t.projectPartsForFile += {p1, p2}; QCOMPARE(t.choose().projectPart, p2); @@ -128,7 +128,7 @@ void ProjectPartChooserTest::testIndicateManuallySet() rpp2.setProjectFileLocation("someId"); ProjectPart::ConstPtr p2 = ProjectPart::create({}, rpp2); ProjectPartChooserTestHelper t; - t.preferredProjectPartId = p2->projectFile; + t.preferredProjectPartId = p2->projectFile.toString(); t.projectPartsForFile += {p1, p2}; QVERIFY(t.choose().hints & ProjectPartInfo::IsPreferredMatch); @@ -141,7 +141,7 @@ void ProjectPartChooserTest::testIndicateManuallySetForFallbackToProjectPartFrom rpp2.setProjectFileLocation("someId"); ProjectPart::ConstPtr p2 = ProjectPart::create({}, rpp2); ProjectPartChooserTestHelper t; - t.preferredProjectPartId = p2->projectFile; + t.preferredProjectPartId = p2->projectFile.toString(); t.projectPartsFromDependenciesForFile += {p1, p2}; QVERIFY(t.choose().hints & ProjectPartInfo::IsPreferredMatch); diff --git a/src/plugins/cppeditor/projectpart.cpp b/src/plugins/cppeditor/projectpart.cpp index 8e4bd1c4fe5..5aed4f19acc 100644 --- a/src/plugins/cppeditor/projectpart.cpp +++ b/src/plugins/cppeditor/projectpart.cpp @@ -27,7 +27,7 @@ QString ProjectPart::id() const QString ProjectPart::projectFileLocation() const { - QString location = QDir::fromNativeSeparators(projectFile); + QString location = projectFile.toString(); if (projectFileLine > 0) location += ":" + QString::number(projectFileLine); if (projectFileColumn > 0) diff --git a/src/plugins/cppeditor/projectpart.h b/src/plugins/cppeditor/projectpart.h index d3a96ab60c6..88c67762eb6 100644 --- a/src/plugins/cppeditor/projectpart.h +++ b/src/plugins/cppeditor/projectpart.h @@ -54,7 +54,7 @@ public: const Utils::FilePath topLevelProject; const QString displayName; - const QString projectFile; + const Utils::FilePath projectFile; const QString projectConfigFile; // Generic Project Manager only const int projectFileLine = -1; diff --git a/src/plugins/cppeditor/quickfixes/bringidentifierintoscope.cpp b/src/plugins/cppeditor/quickfixes/bringidentifierintoscope.cpp index 157f48894d1..9b34a09628c 100644 --- a/src/plugins/cppeditor/quickfixes/bringidentifierintoscope.cpp +++ b/src/plugins/cppeditor/quickfixes/bringidentifierintoscope.cpp @@ -398,7 +398,7 @@ private: FileType fileType = node && node->asFileNode() ? node->asFileNode()->fileType() : FileType::Unknown; if (fileType == FileType::Unknown - && ProjectFile::isHeader(ProjectFile::classify(interface.filePath().toString()))) { + && ProjectFile::isHeader(ProjectFile::classify(interface.filePath()))) { fileType = FileType::Header; } if (fileType == FileType::Header) { diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 634f6482a12..81543685cdf 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -565,7 +565,7 @@ void GenericBuildSystem::refreshCppCodeModel() RawProjectPart rpp; rpp.setDisplayName(project()->displayName()); - rpp.setProjectFileLocation(projectFilePath().toString()); + rpp.setProjectFileLocation(projectFilePath()); rpp.setQtVersion(kitInfo.projectPartQtVersion); rpp.setHeaderPaths(m_projectIncludePaths); rpp.setConfigFileName(m_configFileName); diff --git a/src/plugins/mesonprojectmanager/mesonprojectparser.cpp b/src/plugins/mesonprojectmanager/mesonprojectparser.cpp index 006f4ad57a2..07eb419a122 100644 --- a/src/plugins/mesonprojectmanager/mesonprojectparser.cpp +++ b/src/plugins/mesonprojectmanager/mesonprojectparser.cpp @@ -310,7 +310,7 @@ RawProjectPart MesonProjectParser::buildRawPart( CompilerArgs flags = splitArgs(sources.parameters); part.setMacros(flags.macros); part.setIncludePaths(toAbsolutePath(m_buildDir, flags.includePaths)); - part.setProjectFileLocation(target.definedIn); + part.setProjectFileLocation(FilePath::fromUserInput(target.definedIn)); if (sources.language == "cpp") part.setFlagsForCxx({cxxToolchain, flags.args, {}}); else if (sources.language == "c") diff --git a/src/plugins/projectexplorer/rawprojectpart.cpp b/src/plugins/projectexplorer/rawprojectpart.cpp index 9bb69c5e846..c98bbea4b42 100644 --- a/src/plugins/projectexplorer/rawprojectpart.cpp +++ b/src/plugins/projectexplorer/rawprojectpart.cpp @@ -63,7 +63,7 @@ HeaderPath RawProjectPart::frameworkDetectionHeuristic(const HeaderPath &header) return header; } -void RawProjectPart::setProjectFileLocation(const QString &projectFile, int line, int column) +void RawProjectPart::setProjectFileLocation(const Utils::FilePath &projectFile, int line, int column) { this->projectFile = projectFile; projectFileLine = line; diff --git a/src/plugins/projectexplorer/rawprojectpart.h b/src/plugins/projectexplorer/rawprojectpart.h index 55729e8e91f..c5ca8a08a5c 100644 --- a/src/plugins/projectexplorer/rawprojectpart.h +++ b/src/plugins/projectexplorer/rawprojectpart.h @@ -50,7 +50,7 @@ class PROJECTEXPLORER_EXPORT RawProjectPart public: void setDisplayName(const QString &displayName); - void setProjectFileLocation(const QString &projectFile, int line = -1, int column = -1); + void setProjectFileLocation(const Utils::FilePath &projectFile, int line = -1, int column = -1); void setConfigFileName(const QString &configFileName); void setCallGroupId(const QString &id); @@ -79,7 +79,7 @@ public: public: QString displayName; - QString projectFile; + Utils::FilePath projectFile; int projectFileLine = -1; int projectFileColumn = -1; QString callGroupId; diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index 2f6bf2cba23..e487107ad12 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -858,9 +858,10 @@ static RawProjectPart generateProjectPart( rpp.setHeaderPaths(headerPaths); rpp.setDisplayName(groupName); const QJsonObject location = groupOrProduct.value("location").toObject(); - rpp.setProjectFileLocation(location.value("file-path").toString(), - location.value("line").toInt(), - location.value("column").toInt()); + rpp.setProjectFileLocation( + FilePath::fromUserInput(location.value("file-path").toString()), + location.value("line").toInt(), + location.value("column").toInt()); rpp.setBuildSystemTarget(QbsProductNode::getBuildKey(product)); if (product.value("is-runnable").toBool()) { rpp.setBuildTargetType(BuildTargetType::Executable); diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index 53e80f482b2..e43681ab901 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -324,7 +324,7 @@ void QmakeBuildSystem::updateCppCodeModel() warnOnToolChainMismatch(pro); RawProjectPart rpp; rpp.setDisplayName(pro->displayName()); - rpp.setProjectFileLocation(pro->filePath().toString()); + rpp.setProjectFileLocation(pro->filePath()); rpp.setBuildSystemTarget(pro->filePath().toString()); switch (pro->projectType()) { case ProjectType::ApplicationTemplate: