diff options
Diffstat (limited to 'src/plugins')
176 files changed, 539 insertions, 498 deletions
diff --git a/src/plugins/android/avdmanageroutputparser.cpp b/src/plugins/android/avdmanageroutputparser.cpp index 7da4c3cdd8..dbe6d9faa0 100644 --- a/src/plugins/android/avdmanageroutputparser.cpp +++ b/src/plugins/android/avdmanageroutputparser.cpp @@ -6,13 +6,13 @@ #include <projectexplorer/projectexplorerconstants.h> #include <utils/algorithm.h> #include <utils/fileutils.h> -#include <utils/optional.h> #include <utils/qtcassert.h> #include <QLoggingCategory> #include <QRegularExpression> #include <QSettings> +#include <optional> #include <variant> namespace { @@ -44,7 +44,7 @@ static bool valueForKey(QString key, const QString &line, QString *value = nullp return false; } -static Utils::optional<AndroidDeviceInfo> parseAvd(const QStringList &deviceInfo) +static std::optional<AndroidDeviceInfo> parseAvd(const QStringList &deviceInfo) { AndroidDeviceInfo avd; for (const QString &line : deviceInfo) { @@ -100,7 +100,7 @@ AndroidDeviceInfoList parseAvdList(const QString &output, QStringList *avdErrorP if (valueForKey(avdInfoPathKey, line, &value)) return AvdResult(value); // error path } - } else if (Utils::optional<AndroidDeviceInfo> avd = parseAvd(avdInfo)) { + } else if (std::optional<AndroidDeviceInfo> avd = parseAvd(avdInfo)) { // armeabi-v7a devices can also run armeabi code if (avd->cpuAbi.contains(Constants::ANDROID_ABI_ARMEABI_V7A)) avd->cpuAbi << Constants::ANDROID_ABI_ARMEABI; diff --git a/src/plugins/autotest/itemdatacache.h b/src/plugins/autotest/itemdatacache.h index 47ee2fb617..f01a2e9316 100644 --- a/src/plugins/autotest/itemdatacache.h +++ b/src/plugins/autotest/itemdatacache.h @@ -6,11 +6,11 @@ #include "itestframework.h" #include "testtreeitem.h" -#include <utils/optional.h> - #include <QRegularExpression> #include <QVariantHash> +#include <optional> + namespace Autotest { namespace Internal { @@ -35,13 +35,13 @@ public: } } - Utils::optional<T> get(ITestTreeItem *item) + std::optional<T> get(ITestTreeItem *item) { auto entry = m_cache.find(item->cacheName()); if (entry == m_cache.end()) - return Utils::nullopt; + return std::nullopt; entry->generation = 0; - return Utils::make_optional(entry->value); + return std::make_optional(entry->value); }; void clear() { m_cache.clear(); } diff --git a/src/plugins/autotest/qtest/qttestparser.cpp b/src/plugins/autotest/qtest/qttestparser.cpp index 9d09960b6a..492e584359 100644 --- a/src/plugins/autotest/qtest/qttestparser.cpp +++ b/src/plugins/autotest/qtest/qttestparser.cpp @@ -314,7 +314,7 @@ bool QtTestParser::processDocument(QFutureInterface<TestParseResultPtr> &futureI for (const TestCase &testCase : testCaseList) { if (!testCase.name.isEmpty()) { TestCaseData data; - Utils::optional<bool> earlyReturn = fillTestCaseData(testCase.name, doc, data); + std::optional<bool> earlyReturn = fillTestCaseData(testCase.name, doc, data); if (earlyReturn.has_value() || !data.valid) continue; @@ -333,7 +333,7 @@ bool QtTestParser::processDocument(QFutureInterface<TestParseResultPtr> &futureI return reported; } -Utils::optional<bool> QtTestParser::fillTestCaseData( +std::optional<bool> QtTestParser::fillTestCaseData( const QString &testCaseName, const CPlusPlus::Document::Ptr &doc, TestCaseData &data) const { @@ -366,7 +366,7 @@ Utils::optional<bool> QtTestParser::fillTestCaseData( data.fileName = Utils::FilePath::fromString(declaringDoc->fileName()); data.valid = true; - return Utils::optional<bool>(); + return std::optional<bool>(); } QtTestParseResult *QtTestParser::createParseResult( diff --git a/src/plugins/autotest/qtest/qttestparser.h b/src/plugins/autotest/qtest/qttestparser.h index ba6f8856a8..c64e2e159f 100644 --- a/src/plugins/autotest/qtest/qttestparser.h +++ b/src/plugins/autotest/qtest/qttestparser.h @@ -8,7 +8,7 @@ #include "qttest_utils.h" #include "qttesttreeitem.h" -#include <utils/optional.h> +#include <optional> namespace CppEditor { class CppModelManager; } @@ -53,7 +53,7 @@ private: bool valid = false; }; - Utils::optional<bool> fillTestCaseData(const QString &testCaseName, + std::optional<bool> fillTestCaseData(const QString &testCaseName, const CPlusPlus::Document::Ptr &doc, TestCaseData &data) const; QtTestParseResult *createParseResult(const QString &testCaseName, const TestCaseData &data, diff --git a/src/plugins/autotest/testnavigationwidget.cpp b/src/plugins/autotest/testnavigationwidget.cpp index 48720a06c8..c6cb1ae4ee 100644 --- a/src/plugins/autotest/testnavigationwidget.cpp +++ b/src/plugins/autotest/testnavigationwidget.cpp @@ -318,7 +318,8 @@ void TestNavigationWidget::reapplyCachedExpandedState() using namespace Utils; for (TreeItem *rootNode : *m_model->rootItem()) { rootNode->forAllChildren([this](TreeItem *child) { - optional<bool> cached = m_expandedStateCache.get(static_cast<ITestTreeItem *>(child)); + std::optional<bool> cached = m_expandedStateCache.get( + static_cast<ITestTreeItem *>(child)); if (cached.has_value()) { QModelIndex index = child->index(); if (m_view->isExpanded(index) != cached.value()) diff --git a/src/plugins/autotest/testresultmodel.cpp b/src/plugins/autotest/testresultmodel.cpp index 66b69bc2c0..b76a5b3f03 100644 --- a/src/plugins/autotest/testresultmodel.cpp +++ b/src/plugins/autotest/testresultmodel.cpp @@ -58,7 +58,7 @@ static QIcon testResultIcon(ResultType result) { return icons[int(result)]; } -static QIcon testSummaryIcon(const Utils::optional<TestResultItem::SummaryEvaluation> &summary) +static QIcon testSummaryIcon(const std::optional<TestResultItem::SummaryEvaluation> &summary) { if (!summary) return QIcon(); @@ -114,7 +114,7 @@ static bool isSignificant(ResultType type) } void TestResultItem::updateResult(bool &changed, ResultType addedChildType, - const Utils::optional<SummaryEvaluation> &summary) + const std::optional<SummaryEvaluation> &summary) { changed = false; if (m_testResult->result() != ResultType::TestStart) diff --git a/src/plugins/autotest/testresultmodel.h b/src/plugins/autotest/testresultmodel.h index 7ea51a1a26..3749abe101 100644 --- a/src/plugins/autotest/testresultmodel.h +++ b/src/plugins/autotest/testresultmodel.h @@ -10,9 +10,10 @@ #include <QSet> #include <QSortFilterProxyModel> -#include <utils/optional.h> #include <utils/treemodel.h> +#include <optional> + namespace Autotest { namespace Internal { @@ -36,16 +37,16 @@ public: }; void updateResult(bool &changed, ResultType addedChildType, - const Utils::optional<SummaryEvaluation> &summary); + const std::optional<SummaryEvaluation> &summary); TestResultItem *intermediateFor(const TestResultItem *item) const; TestResultItem *createAndAddIntermediateFor(const TestResultItem *child); QString resultString() const; - Utils::optional<SummaryEvaluation> summaryResult() const { return m_summaryResult; } + std::optional<SummaryEvaluation> summaryResult() const { return m_summaryResult; } private: TestResultPtr m_testResult; - Utils::optional<SummaryEvaluation> m_summaryResult; + std::optional<SummaryEvaluation> m_summaryResult; }; class TestResultModel : public Utils::TreeModel<TestResultItem> diff --git a/src/plugins/autotest/testtreemodel.cpp b/src/plugins/autotest/testtreemodel.cpp index c1db6af365..d50d801858 100644 --- a/src/plugins/autotest/testtreemodel.cpp +++ b/src/plugins/autotest/testtreemodel.cpp @@ -259,7 +259,7 @@ void TestTreeModel::onBuildSystemTestsUpdated() for (const auto &tci : bs->testcasesInfo()) { ITestTreeItem *item = testTool->createItemFromTestCaseInfo(tci); QTC_ASSERT(item, continue); - if (Utils::optional<Qt::CheckState> cached = m_checkStateCache->get(item)) + if (std::optional<Qt::CheckState> cached = m_checkStateCache->get(item)) item->setData(0, cached.value(), Qt::CheckStateRole); m_checkStateCache->insert(item, item->checked()); rootNode->appendChild(item); @@ -393,7 +393,7 @@ void TestTreeModel::synchronizeTestTools() for (const auto &tci : bs->testcasesInfo()) { ITestTreeItem *item = testTool->createItemFromTestCaseInfo(tci); QTC_ASSERT(item, continue); - if (Utils::optional<Qt::CheckState> cached = m_checkStateCache->get(item)) + if (std::optional<Qt::CheckState> cached = m_checkStateCache->get(item)) item->setData(0, cached.value(), Qt::CheckStateRole); m_checkStateCache->insert(item, item->checked()); rootNode->appendChild(item); @@ -592,13 +592,13 @@ void TestTreeModel::insertItemInParent(TestTreeItem *item, TestTreeItem *root, b delete item; } else { // restore former check state if available - Utils::optional<Qt::CheckState> cached = m_checkStateCache->get(item); + std::optional<Qt::CheckState> cached = m_checkStateCache->get(item); if (cached.has_value()) item->setData(0, cached.value(), Qt::CheckStateRole); else applyParentCheckState(parentNode, item); // ..and the failed state if available - Utils::optional<bool> failed = m_failedStateCache.get(item); + std::optional<bool> failed = m_failedStateCache.get(item); if (failed.has_value()) item->setData(0, *failed, FailedRole); parentNode->appendChild(item); @@ -717,10 +717,10 @@ void TestTreeModel::handleParseResult(const TestParseResult *result, TestTreeIte newItem->forAllChildItems([this](TestTreeItem *childItem) { if (!m_checkStateCache) // parse results may arrive after session switch / project close return; - Utils::optional<Qt::CheckState> cached = m_checkStateCache->get(childItem); + std::optional<Qt::CheckState> cached = m_checkStateCache->get(childItem); if (cached.has_value()) childItem->setData(0, cached.value(), Qt::CheckStateRole); - Utils::optional<bool> failed = m_failedStateCache.get(childItem); + std::optional<bool> failed = m_failedStateCache.get(childItem); if (failed.has_value()) childItem->setData(0, *failed, FailedRole); }); diff --git a/src/plugins/bineditor/bineditorwidget.cpp b/src/plugins/bineditor/bineditorwidget.cpp index 79f38cf67d..a6f77425ca 100644 --- a/src/plugins/bineditor/bineditorwidget.cpp +++ b/src/plugins/bineditor/bineditorwidget.cpp @@ -536,12 +536,12 @@ QChar BinEditorWidget::displayChar(char ch) const return uc.at(0); } -Utils::optional<qint64> BinEditorWidget::posAt(const QPoint &pos, bool includeEmptyArea) const +std::optional<qint64> BinEditorWidget::posAt(const QPoint &pos, bool includeEmptyArea) const { const int xoffset = horizontalScrollBar()->value(); int x = xoffset + pos.x() - m_margin - m_labelWidth; if (!includeEmptyArea && x < 0) - return Utils::nullopt; + return std::nullopt; int column = qMin(15, qMax(0,x) / m_columnWidth); const qint64 topLine = verticalScrollBar()->value(); const qint64 line = topLine + pos.y() / m_lineHeight; @@ -559,12 +559,12 @@ Utils::optional<qint64> BinEditorWidget::posAt(const QPoint &pos, bool includeEm break; } if (!includeEmptyArea && x > 0) // right of the text area - return Utils::nullopt; + return std::nullopt; } const qint64 bytePos = line * m_bytesPerLine + column; if (!includeEmptyArea && bytePos >= m_size) - return Utils::nullopt; + return std::nullopt; return qMin(m_size - 1, bytePos); } @@ -1163,7 +1163,7 @@ QString BinEditorWidget::toolTip(const QHelpEvent *helpEvent) const } while (startInLine <= selEnd); if (!insideSelection) { // show popup for byte under cursor - Utils::optional<qint64> pos = posAt(helpEvent->pos(), /*includeEmptyArea*/false); + std::optional<qint64> pos = posAt(helpEvent->pos(), /*includeEmptyArea*/false); if (!pos) return QString(); selStart = pos.value(); diff --git a/src/plugins/bineditor/bineditorwidget.h b/src/plugins/bineditor/bineditorwidget.h index ffafcbd32e..596f98b3c3 100644 --- a/src/plugins/bineditor/bineditorwidget.h +++ b/src/plugins/bineditor/bineditorwidget.h @@ -8,7 +8,6 @@ #include "bineditorservice.h" #include <utils/filepath.h> -#include <utils/optional.h> #include <QAbstractScrollArea> #include <QBasicTimer> @@ -19,6 +18,8 @@ #include <QTextDocument> #include <QTextFormat> +#include <optional> + QT_BEGIN_NAMESPACE class QHelpEvent; class QMenu; @@ -194,7 +195,7 @@ private: QBasicTimer m_cursorBlinkTimer; void init(); - Utils::optional<qint64> posAt(const QPoint &pos, bool includeEmptyArea = true) const; + std::optional<qint64> posAt(const QPoint &pos, bool includeEmptyArea = true) const; bool inTextArea(const QPoint &pos) const; QRect cursorRect() const; void updateLines(); diff --git a/src/plugins/clangcodemodel/clangdast.cpp b/src/plugins/clangcodemodel/clangdast.cpp index da2d68ae24..4e1ce3f780 100644 --- a/src/plugins/clangcodemodel/clangdast.cpp +++ b/src/plugins/clangcodemodel/clangdast.cpp @@ -23,20 +23,26 @@ static constexpr char16_t arcanaKey[] = u"arcana"; QString ClangdAstNode::role() const { return typedValue<QString>(roleKey); } QString ClangdAstNode::kind() const { return typedValue<QString>(kindKey); } -optional<QString> ClangdAstNode::detail() const { return optionalValue<QString>(detailKey); } -optional<QString> ClangdAstNode::arcana() const { return optionalValue<QString>(arcanaKey); } +std::optional<QString> ClangdAstNode::detail() const +{ + return optionalValue<QString>(detailKey); +} +std::optional<QString> ClangdAstNode::arcana() const +{ + return optionalValue<QString>(arcanaKey); +} Range ClangdAstNode::range() const { return typedValue<Range>(rangeKey); } bool ClangdAstNode::hasRange() const { return contains(rangeKey); } bool ClangdAstNode::isValid() const { return contains(roleKey) && contains(kindKey); } -optional<QList<ClangdAstNode> > ClangdAstNode::children() const +std::optional<QList<ClangdAstNode>> ClangdAstNode::children() const { return optionalArray<ClangdAstNode>(childrenKey); } bool ClangdAstNode::arcanaContains(const QString &s) const { - const optional<QString> arcanaString = arcana(); + const std::optional<QString> arcanaString = arcana(); return arcanaString && arcanaString->contains(s); } @@ -88,7 +94,7 @@ bool ClangdAstNode::isTemplateParameterDeclaration() const QString ClangCodeModel::Internal::ClangdAstNode::type() const { - const optional<QString> arcanaString = arcana(); + const std::optional<QString> arcanaString = arcana(); if (!arcanaString) return {}; return typeFromPos(*arcanaString, 0); @@ -156,7 +162,7 @@ bool ClangdAstNode::hasConstType() const bool ClangdAstNode::childContainsRange(int index, const LanguageServerProtocol::Range &range) const { - const optional<QList<ClangdAstNode>> childList = children(); + const std::optional<QList<ClangdAstNode>> childList = children(); return childList && childList->size() > index && childList->at(index).range().contains(range); } @@ -171,7 +177,7 @@ QString ClangdAstNode::operatorString() const if (kind() == "BinaryOperator") return detail().value_or(QString()); QTC_ASSERT(kind() == "CXXOperatorCall", return {}); - const optional<QString> arcanaString = arcana(); + const std::optional<QString> arcanaString = arcana(); if (!arcanaString) return {}; const int closingQuoteOffset = arcanaString->lastIndexOf('\''); @@ -186,7 +192,7 @@ QString ClangdAstNode::operatorString() const ClangdAstNode::FileStatus ClangdAstNode::fileStatus(const FilePath &thisFile) const { - const optional<QString> arcanaString = arcana(); + const std::optional<QString> arcanaString = arcana(); if (!arcanaString) return FileStatus::Unknown; @@ -368,7 +374,7 @@ MessageId requestAst(Client *client, const FilePath &filePath, const Range range // The region of the source code whose AST is fetched. The highest-level node that entirely // contains the range is returned. - optional<Range> range() const { return optionalValue<Range>(rangeKey); } + std::optional<Range> range() const { return optionalValue<Range>(rangeKey); } void setRange(const Range &range) { insert(rangeKey, range); } bool isValid() const override { return contains(textDocumentKey); } diff --git a/src/plugins/clangcodemodel/clangdast.h b/src/plugins/clangcodemodel/clangdast.h index 9709de1fd4..7419d4f89e 100644 --- a/src/plugins/clangcodemodel/clangdast.h +++ b/src/plugins/clangcodemodel/clangdast.h @@ -40,11 +40,11 @@ public: QString kind() const; // Brief additional details, such as ‘||’. Information present here depends on the node kind. - Utils::optional<QString> detail() const; + std::optional<QString> detail() const; // One line dump of information, similar to that printed by clang -Xclang -ast-dump. // Only available for certain types of nodes. - Utils::optional<QString> arcana() const; + std::optional<QString> arcana() const; // The part of the code that produced this node. Missing for implicit nodes, nodes produced // by macro expansion, etc. @@ -52,7 +52,7 @@ public: // Descendants describing the internal structure. The tree of nodes is similar to that printed // by clang -Xclang -ast-dump, or that traversed by clang::RecursiveASTVisitor. - Utils::optional<QList<ClangdAstNode>> children() const; + std::optional<QList<ClangdAstNode>> children() const; bool hasRange() const; bool arcanaContains(const QString &s) const; diff --git a/src/plugins/clangcodemodel/clangdclient.cpp b/src/plugins/clangcodemodel/clangdclient.cpp index 34de081eb3..e7e34251f5 100644 --- a/src/plugins/clangcodemodel/clangdclient.cpp +++ b/src/plugins/clangcodemodel/clangdclient.cpp @@ -99,7 +99,7 @@ public: QString usr() const { return typedValue<QString>(usrKey); } // the clangd-specific opaque symbol ID - Utils::optional<QString> id() const { return optionalValue<QString>(idKey); } + std::optional<QString> id() const { return optionalValue<QString>(idKey); } bool isValid() const override { @@ -206,7 +206,7 @@ public: m_data.emplace(std::make_pair(doc, VersionedDocData(doc, data))); } void remove(const DocType &doc) { m_data.erase(doc); } - Utils::optional<VersionedDocData<DocType, DataType>> take(const DocType &doc) + std::optional<VersionedDocData<DocType, DataType>> take(const DocType &doc) { const auto it = m_data.find(doc); if (it == m_data.end()) @@ -215,7 +215,7 @@ public: m_data.erase(it); return data; } - Utils::optional<DataType> get(const DocType &doc) + std::optional<DataType> get(const DocType &doc) { const auto it = m_data.find(doc); if (it == m_data.end()) @@ -251,7 +251,7 @@ public: : q(q), settings(CppEditor::ClangdProjectSettings(project).settings()) {} void findUsages(TextDocument *document, const QTextCursor &cursor, - const QString &searchTerm, const Utils::optional<QString> &replacement, + const QString &searchTerm, const std::optional<QString> &replacement, bool categorize); void handleDeclDefSwitchReplies(); @@ -275,7 +275,7 @@ public: ClangdFollowSymbol *followSymbol = nullptr; ClangdSwitchDeclDef *switchDeclDef = nullptr; ClangdFindLocalReferences *findLocalRefs = nullptr; - Utils::optional<QVersionNumber> versionNumber; + std::optional<QVersionNumber> versionNumber; QHash<TextDocument *, HighlightingData> highlightingData; QHash<Utils::FilePath, CppEditor::BaseEditorDocumentParser::Configuration> parserConfigs; @@ -354,7 +354,7 @@ ClangdClient::ClangdClient(Project *project, const Utils::FilePath &jsonDbDir) for (const Client *client : clients) qCWarning(clangdLog) << client->name() << client->stateString(); ClientCapabilities caps = Client::defaultClientCapabilities(); - Utils::optional<TextDocumentClientCapabilities> textCaps = caps.textDocument(); + std::optional<TextDocumentClientCapabilities> textCaps = caps.textDocument(); if (textCaps) { ClangdTextDocumentClientCapabilities clangdTextCaps(*textCaps); clangdTextCaps.clearDocumentHighlight(); @@ -362,7 +362,7 @@ ClangdClient::ClangdClient(Project *project, const Utils::FilePath &jsonDbDir) diagnostics.enableCategorySupport(); diagnostics.enableCodeActionsInline(); clangdTextCaps.setPublishDiagnostics(diagnostics); - Utils::optional<TextDocumentClientCapabilities::CompletionCapabilities> completionCaps + std::optional<TextDocumentClientCapabilities::CompletionCapabilities> completionCaps = textCaps->completion(); if (completionCaps) clangdTextCaps.setCompletion(ClangdCompletionCapabilities(*completionCaps)); @@ -441,7 +441,7 @@ void ClangdClient::closeExtraFile(const Utils::FilePath &filePath) } void ClangdClient::findUsages(TextDocument *document, const QTextCursor &cursor, - const Utils::optional<QString> &replacement) + const std::optional<QString> &replacement) { // Quick check: Are we even on anything searchable? const QTextCursor adjustedCursor = d->adjustedCursor(cursor, document); @@ -615,7 +615,7 @@ CppEditor::ClangdSettings::Data ClangdClient::settingsData() const { return d->s void ClangdClient::Private::findUsages(TextDocument *document, const QTextCursor &cursor, const QString &searchTerm, - const Utils::optional<QString> &replacement, bool categorize) + const std::optional<QString> &replacement, bool categorize) { const auto findRefs = new ClangdFindReferences(q, document, cursor, searchTerm, replacement, categorize); @@ -753,7 +753,7 @@ void ClangdClient::clearTasks(const Utils::FilePath &filePath) d->issuePaneEntries[filePath].clear(); } -Utils::optional<bool> ClangdClient::hasVirtualFunctionAt(TextDocument *doc, int revision, +std::optional<bool> ClangdClient::hasVirtualFunctionAt(TextDocument *doc, int revision, const Range &range) { const auto highlightingData = d->highlightingData.constFind(doc); @@ -860,7 +860,7 @@ void ClangdClient::switchHeaderSource(const Utils::FilePath &filePath, bool inNe }; SwitchSourceHeaderRequest req(filePath); req.setResponseCallback([inNextSplit](const SwitchSourceHeaderRequest::Response &response) { - if (const Utils::optional<QJsonValue> result = response.result()) { + if (const std::optional<QJsonValue> result = response.result()) { const DocumentUri uri = DocumentUri::fromProtocol(result->toString()); const Utils::FilePath filePath = uri.toFilePath(); if (!filePath.isEmpty()) @@ -900,7 +900,7 @@ void ClangdClient::findLocalUsages(TextDocument *document, const QTextCursor &cu void ClangdClient::gatherHelpItemForTooltip(const HoverRequest::Response &hoverResponse, const DocumentUri &uri) { - if (const Utils::optional<HoverResult> result = hoverResponse.result()) { + if (const std::optional<HoverResult> result = hoverResponse.result()) { if (auto hover = std::get_if<Hover>(&(*result))) { const HoverContent content = hover->content(); const MarkupContent *const markup = std::get_if<MarkupContent>(&content); @@ -942,7 +942,7 @@ void ClangdClient::gatherHelpItemForTooltip(const HoverRequest::Response &hoverR const auto astHandler = [this, uri, hoverResponse](const ClangdAstNode &ast, const MessageId &) { const MessageId id = hoverResponse.id(); Range range; - if (const Utils::optional<HoverResult> result = hoverResponse.result()) { + if (const std::optional<HoverResult> result = hoverResponse.result()) { if (auto hover = std::get_if<Hover>(&(*result))) range = hover->range().value_or(Range()); } @@ -953,12 +953,12 @@ void ClangdClient::gatherHelpItemForTooltip(const HoverRequest::Response &hoverR } ClangdAstNode node = path.last(); if (node.role() == "expression" && node.kind() == "ImplicitCast") { - const Utils::optional<QList<ClangdAstNode>> children = node.children(); + const std::optional<QList<ClangdAstNode>> children = node.children(); if (children && !children->isEmpty()) node = children->first(); } while (node.kind() == "Qualified") { - const Utils::optional<QList<ClangdAstNode>> children = node.children(); + const std::optional<QList<ClangdAstNode>> children = node.children(); if (children && !children->isEmpty()) node = children->first(); } @@ -1120,7 +1120,7 @@ QTextCursor ClangdClient::Private::adjustedCursor(const QTextCursor &cursor, case T_DOT: break; case T_ARROW: { - const Utils::optional<ClangdAstNode> clangdAst = astCache.get(doc); + const std::optional<ClangdAstNode> clangdAst = astCache.get(doc); if (!clangdAst) return cursor; const ClangdAstPath clangdAstPath = getAstPath(*clangdAst, Range(cursor)); @@ -1289,7 +1289,7 @@ void ClangdClient::Private::handleSemanticTokens(TextDocument *doc, getAndHandleAst(doc, astHandler, AstCallbackMode::SyncIfPossible); } -Utils::optional<QList<CodeAction> > ClangdDiagnostic::codeActions() const +std::optional<QList<CodeAction> > ClangdDiagnostic::codeActions() const { auto actions = optionalArray<LanguageServerProtocol::CodeAction>(u"codeActions"); if (!actions) diff --git a/src/plugins/clangcodemodel/clangdclient.h b/src/plugins/clangcodemodel/clangdclient.h index 5b6c22bf1a..fe18af4087 100644 --- a/src/plugins/clangcodemodel/clangdclient.h +++ b/src/plugins/clangcodemodel/clangdclient.h @@ -9,10 +9,11 @@ #include <cppeditor/cursorineditor.h> #include <languageclient/client.h> #include <utils/link.h> -#include <utils/optional.h> #include <QVersionNumber> +#include <optional> + namespace CppEditor { class CppEditorWidget; } namespace LanguageServerProtocol { class Range; } namespace ProjectExplorer { @@ -48,7 +49,7 @@ public: void closeExtraFile(const Utils::FilePath &filePath); void findUsages(TextEditor::TextDocument *document, const QTextCursor &cursor, - const Utils::optional<QString> &replacement); + const std::optional<QString> &replacement); void followSymbol(TextEditor::TextDocument *document, const QTextCursor &cursor, CppEditor::CppEditorWidget *editorWidget, @@ -85,7 +86,7 @@ public: void switchIssuePaneEntries(const Utils::FilePath &filePath); void addTask(const ProjectExplorer::Task &task); void clearTasks(const Utils::FilePath &filePath); - Utils::optional<bool> hasVirtualFunctionAt(TextEditor::TextDocument *doc, int revision, + std::optional<bool> hasVirtualFunctionAt(TextEditor::TextDocument *doc, int revision, const LanguageServerProtocol::Range &range); using TextDocOrFile = std::variant<const TextEditor::TextDocument *, Utils::FilePath>; @@ -136,7 +137,7 @@ class ClangdDiagnostic : public LanguageServerProtocol::Diagnostic { public: using Diagnostic::Diagnostic; - Utils::optional<QList<LanguageServerProtocol::CodeAction>> codeActions() const; + std::optional<QList<LanguageServerProtocol::CodeAction>> codeActions() const; QString category() const; }; diff --git a/src/plugins/clangcodemodel/clangdcompletion.cpp b/src/plugins/clangcodemodel/clangdcompletion.cpp index b82a046821..d99e9ae92f 100644 --- a/src/plugins/clangcodemodel/clangdcompletion.cpp +++ b/src/plugins/clangcodemodel/clangdcompletion.cpp @@ -336,7 +336,7 @@ void ClangdCompletionItem::apply(TextDocumentManipulatorInterface &manipulator, ClangdCompletionItem::SpecialQtType ClangdCompletionItem::getQtType(const CompletionItem &item) { - const Utils::optional<MarkupOrString> doc = item.documentation(); + const std::optional<MarkupOrString> doc = item.documentation(); if (!doc) return SpecialQtType::None; QString docText; @@ -612,7 +612,7 @@ ClangdCompletionCapabilities::ClangdCompletionCapabilities(const JsonObject &obj : TextDocumentClientCapabilities::CompletionCapabilities(object) { insert(u"editsNearCursor", true); // For dot-to-arrow correction. - if (Utils::optional<CompletionItemCapbilities> completionItemCaps = completionItem()) { + if (std::optional<CompletionItemCapbilities> completionItemCaps = completionItem()) { completionItemCaps->setSnippetSupport(false); setCompletionItem(*completionItemCaps); } diff --git a/src/plugins/clangcodemodel/clangdfindreferences.cpp b/src/plugins/clangcodemodel/clangdfindreferences.cpp index de4d79c85c..932b50fefa 100644 --- a/src/plugins/clangcodemodel/clangdfindreferences.cpp +++ b/src/plugins/clangcodemodel/clangdfindreferences.cpp @@ -65,21 +65,21 @@ public: void finishSearch(); void reportAllSearchResultsAndFinish(); void addSearchResultsForFile(const FilePath &file, const ReferencesFileData &fileData); - Utils::optional<QString> getContainingFunctionName(const ClangdAstPath &astPath, + std::optional<QString> getContainingFunctionName(const ClangdAstPath &astPath, const Range& range); ClangdFindReferences * const q; QMap<DocumentUri, ReferencesFileData> fileData; QList<MessageId> pendingAstRequests; QPointer<SearchResult> search; - Utils::optional<ReplacementData> replacementData; + std::optional<ReplacementData> replacementData; bool canceled = false; bool categorize = false; }; ClangdFindReferences::ClangdFindReferences(ClangdClient *client, TextDocument *document, const QTextCursor &cursor, const QString &searchTerm, - const Utils::optional<QString> &replacement, bool categorize) + const std::optional<QString> &replacement, bool categorize) : QObject(client), d(new ClangdFindReferences::Private(this)) { d->categorize = categorize; @@ -121,7 +121,7 @@ ClangdFindReferences::ClangdFindReferences(ClangdClient *client, TextDocument *d }); SearchResultWindow::instance()->popup(IOutputPane::ModeSwitch | IOutputPane::WithFocus); - const Utils::optional<MessageId> requestId = client->symbolSupport().findUsages( + const std::optional<MessageId> requestId = client->symbolSupport().findUsages( document, cursor, [self = QPointer(this)](const QList<Location> &locations) { if (self) self->d->handleFindUsagesResult(locations); @@ -324,7 +324,7 @@ void ClangdFindReferences::Private::addSearchResultsForFile(const FilePath &file search->addResults(items, SearchResult::AddOrdered); } -Utils::optional<QString> ClangdFindReferences::Private::getContainingFunctionName( +std::optional<QString> ClangdFindReferences::Private::getContainingFunctionName( const ClangdAstPath &astPath, const Range& range) { const ClangdAstNode* containingFuncNode{nullptr}; @@ -344,7 +344,7 @@ Utils::optional<QString> ClangdFindReferences::Private::getContainingFunctionNam } if (!containingFuncNode || !containingFuncNode->isValid()) - return Utils::nullopt; + return std::nullopt; return containingFuncNode->detail(); } diff --git a/src/plugins/clangcodemodel/clangdfindreferences.h b/src/plugins/clangcodemodel/clangdfindreferences.h index 8d99edaa84..f45a61b25e 100644 --- a/src/plugins/clangcodemodel/clangdfindreferences.h +++ b/src/plugins/clangcodemodel/clangdfindreferences.h @@ -5,10 +5,11 @@ #include <coreplugin/find/searchresultitem.h> #include <cppeditor/cursorineditor.h> -#include <utils/optional.h> #include <QObject> +#include <optional> + QT_BEGIN_NAMESPACE class QTextCursor; QT_END_NAMESPACE @@ -24,7 +25,7 @@ class ClangdFindReferences : public QObject public: explicit ClangdFindReferences(ClangdClient *client, TextEditor::TextDocument *document, const QTextCursor &cursor, const QString &searchTerm, - const Utils::optional<QString> &replacement, bool categorize); + const std::optional<QString> &replacement, bool categorize); ~ClangdFindReferences(); signals: diff --git a/src/plugins/clangcodemodel/clangdfollowsymbol.cpp b/src/plugins/clangcodemodel/clangdfollowsymbol.cpp index a2b2916d38..49cbef3682 100644 --- a/src/plugins/clangcodemodel/clangdfollowsymbol.cpp +++ b/src/plugins/clangcodemodel/clangdfollowsymbol.cpp @@ -107,7 +107,7 @@ public: Link defLink; Links allLinks; QHash<Link, Link> declDefMap; - optional<ClangdAstNode> cursorNode; + std::optional<ClangdAstNode> cursorNode; ClangdAstNode defLinkNode; SymbolDataList symbolsToDisplay; std::set<FilePath> openedFiles; @@ -375,7 +375,7 @@ void ClangdFollowSymbol::Private::handleGotoDefinitionResult() void ClangdFollowSymbol::Private::handleGotoImplementationResult( const GotoImplementationRequest::Response &response) { - if (const optional<GotoResult> &result = response.result()) { + if (const std::optional<GotoResult> &result = response.result()) { QList<Link> newLinks; if (const auto ploc = std::get_if<Location>(&*result)) newLinks = {ploc->toLink()}; @@ -451,7 +451,7 @@ void ClangdFollowSymbol::Private::handleGotoImplementationResult( if (!sentinel) return; Link newLink; - if (optional<GotoResult> _result = response.result()) { + if (std::optional<GotoResult> _result = response.result()) { const GotoResult result = _result.value(); if (const auto ploc = std::get_if<Location>(&result)) { newLink = ploc->toLink(); diff --git a/src/plugins/clangcodemodel/clangdmemoryusagewidget.cpp b/src/plugins/clangcodemodel/clangdmemoryusagewidget.cpp index 429ebfe791..06ec53d621 100644 --- a/src/plugins/clangcodemodel/clangdmemoryusagewidget.cpp +++ b/src/plugins/clangcodemodel/clangdmemoryusagewidget.cpp @@ -131,7 +131,7 @@ public: const QPointer<ClangdClient> client; MemoryTreeModel model; TreeView view; - Utils::optional<MessageId> currentRequest; + std::optional<MessageId> currentRequest; }; ClangdMemoryUsageWidget::ClangdMemoryUsageWidget(ClangdClient *client) diff --git a/src/plugins/clangcodemodel/clangdquickfixes.cpp b/src/plugins/clangcodemodel/clangdquickfixes.cpp index 6b6f7676ce..83ad6a0d80 100644 --- a/src/plugins/clangcodemodel/clangdquickfixes.cpp +++ b/src/plugins/clangcodemodel/clangdquickfixes.cpp @@ -65,7 +65,7 @@ private: auto toOperation = [=](const std::variant<Command, CodeAction> &item) -> QuickFixOperation * { if (auto action = std::get_if<CodeAction>(&item)) { - const Utils::optional<QList<Diagnostic>> diagnostics = action->diagnostics(); + const std::optional<QList<Diagnostic>> diagnostics = action->diagnostics(); if (!diagnostics.has_value() || diagnostics->isEmpty()) return new CodeActionQuickFixOperation(*action, client()); } diff --git a/src/plugins/clangcodemodel/clangdswitchdecldef.cpp b/src/plugins/clangcodemodel/clangdswitchdecldef.cpp index c39553259c..7773e7fa0e 100644 --- a/src/plugins/clangcodemodel/clangdswitchdecldef.cpp +++ b/src/plugins/clangcodemodel/clangdswitchdecldef.cpp @@ -10,12 +10,13 @@ #include <languageclient/documentsymbolcache.h> #include <languageserverprotocol/lsptypes.h> #include <texteditor/textdocument.h> -#include <utils/optional.h> #include <utils/qtcassert.h> #include <QApplication> #include <QTextCursor> +#include <optional> + using namespace CppEditor; using namespace LanguageClient; using namespace LanguageServerProtocol; @@ -33,7 +34,7 @@ public: cursor(cursor), editorWidget(editorWidget), callback(callback) {} - optional<ClangdAstNode> getFunctionNode() const; + std::optional<ClangdAstNode> getFunctionNode() const; QTextCursor cursorForFunctionName(const ClangdAstNode &functionNode) const; void handleDeclDefSwitchReplies(); @@ -44,8 +45,8 @@ public: const QTextCursor cursor; const QPointer<CppEditorWidget> editorWidget; const LinkHandler callback; - optional<ClangdAstNode> ast; - optional<DocumentSymbolsResult> docSymbols; + std::optional<ClangdAstNode> ast; + std::optional<DocumentSymbolsResult> docSymbols; bool done = false; }; @@ -110,7 +111,7 @@ void ClangdSwitchDeclDef::emitDone() emit done(); } -optional<ClangdAstNode> ClangdSwitchDeclDef::Private::getFunctionNode() const +std::optional<ClangdAstNode> ClangdSwitchDeclDef::Private::getFunctionNode() const { QTC_ASSERT(ast, return {}); @@ -157,7 +158,7 @@ void ClangdSwitchDeclDef::Private::handleDeclDefSwitchReplies() // on a function return type, or ... if (clangdLogAst().isDebugEnabled()) ast->print(0); - const Utils::optional<ClangdAstNode> functionNode = getFunctionNode(); + const std::optional<ClangdAstNode> functionNode = getFunctionNode(); if (!functionNode) { q->emitDone(); return; diff --git a/src/plugins/clangcodemodel/clangtextmark.cpp b/src/plugins/clangcodemodel/clangtextmark.cpp index 47028c37c6..e5ef9f4d81 100644 --- a/src/plugins/clangcodemodel/clangtextmark.cpp +++ b/src/plugins/clangcodemodel/clangtextmark.cpp @@ -215,10 +215,10 @@ ClangDiagnostic convertDiagnostic(const ClangdDiagnostic &src, const FilePath &f if (codeString && codeString->startsWith("-W")) target.enableOption = *codeString; for (const CodeAction &codeAction : src.codeActions().value_or(QList<CodeAction>())) { - const Utils::optional<WorkspaceEdit> edit = codeAction.edit(); + const std::optional<WorkspaceEdit> edit = codeAction.edit(); if (!edit) continue; - const Utils::optional<WorkspaceEdit::Changes> changes = edit->changes(); + const std::optional<WorkspaceEdit::Changes> changes = edit->changes(); if (!changes) continue; ClangDiagnostic fixItDiag; diff --git a/src/plugins/clangformat/clangformatbaseindenter.cpp b/src/plugins/clangformat/clangformatbaseindenter.cpp index 7fa4ac9cb1..34039583ed 100644 --- a/src/plugins/clangformat/clangformatbaseindenter.cpp +++ b/src/plugins/clangformat/clangformatbaseindenter.cpp @@ -706,7 +706,7 @@ bool ClangFormatBaseIndenter::isElectricCharacter(const QChar &ch) const return false; } -Utils::optional<int> ClangFormat::ClangFormatBaseIndenter::margin() const +std::optional<int> ClangFormat::ClangFormatBaseIndenter::margin() const { return styleForFile().ColumnLimit; } diff --git a/src/plugins/clangformat/clangformatbaseindenter.h b/src/plugins/clangformat/clangformatbaseindenter.h index 7174a0b4af..aa5290f4ff 100644 --- a/src/plugins/clangformat/clangformatbaseindenter.h +++ b/src/plugins/clangformat/clangformatbaseindenter.h @@ -44,7 +44,7 @@ public: bool isElectricCharacter(const QChar &ch) const override; - Utils::optional<int> margin() const override; + std::optional<int> margin() const override; clang::format::FormatStyle styleForFile() const; diff --git a/src/plugins/clangformat/clangformatindenter.cpp b/src/plugins/clangformat/clangformatindenter.cpp index 75383a1bc7..8328d3fdfb 100644 --- a/src/plugins/clangformat/clangformatindenter.cpp +++ b/src/plugins/clangformat/clangformatindenter.cpp @@ -55,7 +55,7 @@ bool ClangFormatIndenter::formatCodeInsteadOfIndent() const return ClangFormatSettings::instance().mode() == ClangFormatSettings::Mode::Formatting; } -Utils::optional<TabSettings> ClangFormatIndenter::tabSettings() const +std::optional<TabSettings> ClangFormatIndenter::tabSettings() const { FormatStyle style = styleForFile(); TabSettings tabSettings; diff --git a/src/plugins/clangformat/clangformatindenter.h b/src/plugins/clangformat/clangformatindenter.h index 438ab2a0bd..0303b3c066 100644 --- a/src/plugins/clangformat/clangformatindenter.h +++ b/src/plugins/clangformat/clangformatindenter.h @@ -13,7 +13,7 @@ class ClangFormatIndenter final : public ClangFormatBaseIndenter { public: ClangFormatIndenter(QTextDocument *doc); - Utils::optional<TextEditor::TabSettings> tabSettings() const override; + std::optional<TextEditor::TabSettings> tabSettings() const override; bool formatOnSave() const override; private: diff --git a/src/plugins/clangformat/tests/clangformat-test.cpp b/src/plugins/clangformat/tests/clangformat-test.cpp index ede1768783..74107a40e7 100644 --- a/src/plugins/clangformat/tests/clangformat-test.cpp +++ b/src/plugins/clangformat/tests/clangformat-test.cpp @@ -7,12 +7,13 @@ #include <texteditor/tabsettings.h> #include <utils/fileutils.h> -#include <utils/optional.h> #include <QTextCursor> #include <QTextDocument> #include <QtTest> +#include <optional> + namespace ClangFormat::Internal { class ClangFormatTestIndenter : public ClangFormatBaseIndenter @@ -21,7 +22,7 @@ public: ClangFormatTestIndenter(QTextDocument *doc) : ClangFormatBaseIndenter(doc) {} private: - Utils::optional<TextEditor::TabSettings> tabSettings() const override { return {}; } + std::optional<TextEditor::TabSettings> tabSettings() const override { return {}; } }; class ClangFormatExtendedTestIndenter : public ClangFormatTestIndenter diff --git a/src/plugins/clangtools/clangtoolsdiagnosticmodel.h b/src/plugins/clangtools/clangtoolsdiagnosticmodel.h index 5eb7740e50..0fa4c97bda 100644 --- a/src/plugins/clangtools/clangtoolsdiagnosticmodel.h +++ b/src/plugins/clangtools/clangtoolsdiagnosticmodel.h @@ -10,7 +10,6 @@ #include <debugger/analyzer/detailederrorview.h> #include <utils/fileutils.h> -#include <utils/optional.h> #include <utils/treemodel.h> #include <QFileSystemWatcher> @@ -21,6 +20,7 @@ #include <functional> #include <map> #include <memory> +#include <optional> namespace ProjectExplorer { class Project; } @@ -127,7 +127,7 @@ class FilterOptions { public: QSet<QString> checks; }; -using OptionalFilterOptions = Utils::optional<FilterOptions>; +using OptionalFilterOptions = std::optional<FilterOptions>; class DiagnosticFilterModel : public QSortFilterProxyModel { diff --git a/src/plugins/clangtools/clangtoolslogfilereader.cpp b/src/plugins/clangtools/clangtoolslogfilereader.cpp index debba17ba8..5ab8755bfc 100644 --- a/src/plugins/clangtools/clangtoolslogfilereader.cpp +++ b/src/plugins/clangtools/clangtoolslogfilereader.cpp @@ -31,7 +31,7 @@ static bool checkFilePath(const Utils::FilePath &filePath, QString *errorMessage return true; } -Utils::optional<LineColumnInfo> byteOffsetInUtf8TextToLineColumn(const char *text, +std::optional<LineColumnInfo> byteOffsetInUtf8TextToLineColumn(const char *text, int offset, int startLine) { diff --git a/src/plugins/clangtools/clangtoolslogfilereader.h b/src/plugins/clangtools/clangtoolslogfilereader.h index 4a069381c2..fb062f3b8e 100644 --- a/src/plugins/clangtools/clangtoolslogfilereader.h +++ b/src/plugins/clangtools/clangtoolslogfilereader.h @@ -3,10 +3,11 @@ #pragma once -#include <utils/optional.h> #include "clangtoolsdiagnostic.h" +#include <optional> + namespace Utils { class FilePath; } namespace ClangTools { @@ -27,7 +28,7 @@ struct LineColumnInfo { int column = 1; // 1-based int lineStartOffset = 0; // for optimiation/caching purposes }; -using OptionalLineColumnInfo = Utils::optional<LineColumnInfo>; +using OptionalLineColumnInfo = std::optional<LineColumnInfo>; OptionalLineColumnInfo byteOffsetInUtf8TextToLineColumn(const char *text, int offset, int startLine = 1); diff --git a/src/plugins/clangtools/clangtoolsutils.cpp b/src/plugins/clangtools/clangtoolsutils.cpp index 5b30f7fc76..741e5de9f9 100644 --- a/src/plugins/clangtools/clangtoolsutils.cpp +++ b/src/plugins/clangtools/clangtoolsutils.cpp @@ -54,7 +54,7 @@ static QString fixitStatus(FixitStatus status) QString createDiagnosticToolTipString( const Diagnostic &diagnostic, - Utils::optional<FixitStatus> status, + std::optional<FixitStatus> status, bool showSteps) { using StringPair = QPair<QString, QString>; diff --git a/src/plugins/clangtools/clangtoolsutils.h b/src/plugins/clangtools/clangtoolsutils.h index 176bbd5ea1..ed6c60603b 100644 --- a/src/plugins/clangtools/clangtoolsutils.h +++ b/src/plugins/clangtools/clangtoolsutils.h @@ -6,10 +6,11 @@ #include <cppeditor/clangdiagnosticconfig.h> #include <utils/id.h> -#include <utils/optional.h> #include <QtGlobal> +#include <optional> + namespace CppEditor { class ClangDiagnosticConfigsModel; } namespace Debugger { class DiagnosticLocation; } namespace Utils { class FilePath; } @@ -31,10 +32,9 @@ enum class FixitStatus { Invalidated, }; -QString createDiagnosticToolTipString( - const Diagnostic &diagnostic, - Utils::optional<FixitStatus> status = Utils::nullopt, - bool showSteps = true); +QString createDiagnosticToolTipString(const Diagnostic &diagnostic, + std::optional<FixitStatus> status = std::nullopt, + bool showSteps = true); CppEditor::ClangDiagnosticConfig builtinConfig(); diff --git a/src/plugins/clangtools/diagnosticmark.cpp b/src/plugins/clangtools/diagnosticmark.cpp index 3fe52d4762..2b8cd472db 100644 --- a/src/plugins/clangtools/diagnosticmark.cpp +++ b/src/plugins/clangtools/diagnosticmark.cpp @@ -30,7 +30,7 @@ DiagnosticMark::DiagnosticMark(const Diagnostic &diagnostic) setPriority(TextEditor::TextMark::HighPriority); QIcon markIcon = diagnostic.icon(); setIcon(markIcon.isNull() ? Utils::Icons::CODEMODEL_WARNING.icon() : markIcon); - setToolTip(createDiagnosticToolTipString(diagnostic, Utils::nullopt, true)); + setToolTip(createDiagnosticToolTipString(diagnostic, std::nullopt, true)); setLineAnnotation(diagnostic.description); setActionsProvider([diagnostic] { // Copy to clipboard action diff --git a/src/plugins/clangtools/settingswidget.cpp b/src/plugins/clangtools/settingswidget.cpp index 738e600a97..7c667d6ee6 100644 --- a/src/plugins/clangtools/settingswidget.cpp +++ b/src/plugins/clangtools/settingswidget.cpp @@ -13,7 +13,7 @@ #include <debugger/analyzer/analyzericons.h> -#include <utils/optional.h> +#include <optional> using namespace Utils; diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 0e7924efaf..36736b6f9d 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -1188,7 +1188,7 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id) const auto buildDirAspect = aspect<BuildDirectoryAspect>(); buildDirAspect->setValueAcceptor( - [](const QString &oldDir, const QString &newDir) -> Utils::optional<QString> { + [](const QString &oldDir, const QString &newDir) -> std::optional<QString> { if (oldDir.isEmpty()) return newDir; @@ -1204,7 +1204,7 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id) == QMessageBox::Ok) { return newDir; } - return Utils::nullopt; + return std::nullopt; } return newDir; }); diff --git a/src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp b/src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp index dbf5f6f3d5..28dadbcd99 100644 --- a/src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp @@ -166,7 +166,7 @@ QString CMakeConfigItem::typeToTypeString(const CMakeConfigItem::Type t) return {}; } -Utils::optional<bool> CMakeConfigItem::toBool(const QString &value) +std::optional<bool> CMakeConfigItem::toBool(const QString &value) { // Taken from CMakes if(<constant>) documentation: // "Named boolean constants are case-insensitive." diff --git a/src/plugins/cmakeprojectmanager/cmakeconfigitem.h b/src/plugins/cmakeprojectmanager/cmakeconfigitem.h index f808b55de6..afec217cd1 100644 --- a/src/plugins/cmakeprojectmanager/cmakeconfigitem.h +++ b/src/plugins/cmakeprojectmanager/cmakeconfigitem.h @@ -5,11 +5,12 @@ #include "cmake_global.h" -#include <utils/optional.h> #include <QByteArray> #include <QStringList> +#include <optional> + namespace Utils { class FilePath; class MacroExpander; @@ -33,7 +34,7 @@ public: static QStringList cmakeSplitValue(const QString &in, bool keepEmpty = false); static Type typeStringToType(const QByteArray &typeString); static QString typeToTypeString(const Type t); - static Utils::optional<bool> toBool(const QString &value); + static std::optional<bool> toBool(const QString &value); bool isNull() const { return key.isEmpty(); } QString expandedValue(const ProjectExplorer::Kit *k) const; diff --git a/src/plugins/cmakeprojectmanager/cmakeparser.h b/src/plugins/cmakeprojectmanager/cmakeparser.h index 3cb349d2ca..686840575e 100644 --- a/src/plugins/cmakeprojectmanager/cmakeparser.h +++ b/src/plugins/cmakeprojectmanager/cmakeparser.h @@ -8,11 +8,11 @@ #include <projectexplorer/ioutputparser.h> #include <projectexplorer/task.h> -#include <utils/optional.h> - #include <QDir> #include <QRegularExpression> +#include <optional> + namespace CMakeProjectManager { class CMAKE_EXPORT CMakeParser : public ProjectExplorer::OutputTaskParser @@ -31,7 +31,7 @@ private: TripleLineError m_expectTripleLineErrorData = NONE; - Utils::optional<QDir> m_sourceDirectory; + std::optional<QDir> m_sourceDirectory; ProjectExplorer::Task m_lastTask; QRegularExpression m_commonError; QRegularExpression m_nextSubError; diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp index c591e903de..3cb364a08a 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp @@ -39,7 +39,7 @@ bool CMakeListsNode::showInSimpleTree() const return false; } -Utils::optional<Utils::FilePath> CMakeListsNode::visibleAfterAddFileAction() const +std::optional<Utils::FilePath> CMakeListsNode::visibleAfterAddFileAction() const { return filePath().pathAppended("CMakeLists.txt"); } @@ -169,7 +169,7 @@ void CMakeTargetNode::setConfig(const CMakeConfig &config) m_config = config; } -Utils::optional<Utils::FilePath> CMakeTargetNode::visibleAfterAddFileAction() const +std::optional<Utils::FilePath> CMakeTargetNode::visibleAfterAddFileAction() const { return filePath().pathAppended("CMakeLists.txt"); } diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h index 9434da0e55..05f081bf99 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h +++ b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h @@ -22,7 +22,7 @@ public: CMakeListsNode(const Utils::FilePath &cmakeListPath); bool showInSimpleTree() const final; - Utils::optional<Utils::FilePath> visibleAfterAddFileAction() const override; + std::optional<Utils::FilePath> visibleAfterAddFileAction() const override; }; class CMakeProjectNode : public ProjectExplorer::ProjectNode @@ -45,7 +45,7 @@ public: Utils::FilePath buildDirectory() const; void setBuildDirectory(const Utils::FilePath &directory); - Utils::optional<Utils::FilePath> visibleAfterAddFileAction() const override; + std::optional<Utils::FilePath> visibleAfterAddFileAction() const override; void build() override; diff --git a/src/plugins/cmakeprojectmanager/cmaketool.cpp b/src/plugins/cmakeprojectmanager/cmaketool.cpp index 7165ceab26..7b9f699f06 100644 --- a/src/plugins/cmakeprojectmanager/cmaketool.cpp +++ b/src/plugins/cmakeprojectmanager/cmaketool.cpp @@ -49,7 +49,7 @@ namespace Internal { const char READER_TYPE_FILEAPI[] = "fileapi"; -static Utils::optional<CMakeTool::ReaderType> readerTypeFromString(const QString &input) +static std::optional<CMakeTool::ReaderType> readerTypeFromString(const QString &input) { // Do not try to be clever here, just use whatever is in the string! if (input == READER_TYPE_FILEAPI) @@ -331,7 +331,7 @@ CMakeTool::PathMapper CMakeTool::pathMapper() const return [](const FilePath &fn) { return fn; }; } -Utils::optional<CMakeTool::ReaderType> CMakeTool::readerType() const +std::optional<CMakeTool::ReaderType> CMakeTool::readerType() const { if (m_readerType) return m_readerType; // Allow overriding the auto-detected value via .user files diff --git a/src/plugins/cmakeprojectmanager/cmaketool.h b/src/plugins/cmakeprojectmanager/cmaketool.h index 9d1f1fe197..94e122d204 100644 --- a/src/plugins/cmakeprojectmanager/cmaketool.h +++ b/src/plugins/cmakeprojectmanager/cmaketool.h @@ -9,7 +9,8 @@ #include <utils/fileutils.h> #include <utils/id.h> -#include <utils/optional.h> + +#include <optional> namespace Utils { class QtcProcess; } @@ -83,7 +84,7 @@ public: void setPathMapper(const PathMapper &includePathMapper); PathMapper pathMapper() const; - Utils::optional<ReaderType> readerType() const; + std::optional<ReaderType> readerType() const; static Utils::FilePath searchQchFile(const Utils::FilePath &executable); @@ -115,7 +116,7 @@ private: QString m_detectionSource; bool m_autoCreateBuildDirectory = false; - Utils::optional<ReaderType> m_readerType; + std::optional<ReaderType> m_readerType; std::unique_ptr<Internal::IntrospectionData> m_introspection; diff --git a/src/plugins/cmakeprojectmanager/fileapidataextractor.h b/src/plugins/cmakeprojectmanager/fileapidataextractor.h index 4e7308cc2f..fbecc237c9 100644 --- a/src/plugins/cmakeprojectmanager/fileapidataextractor.h +++ b/src/plugins/cmakeprojectmanager/fileapidataextractor.h @@ -9,13 +9,13 @@ #include <projectexplorer/rawprojectpart.h> #include <utils/fileutils.h> -#include <utils/optional.h> #include <QList> #include <QSet> #include <QString> #include <memory> +#include <optional> namespace CMakeProjectManager { namespace Internal { diff --git a/src/plugins/cmakeprojectmanager/fileapiparser.h b/src/plugins/cmakeprojectmanager/fileapiparser.h index aab05cb7da..acd31d77fe 100644 --- a/src/plugins/cmakeprojectmanager/fileapiparser.h +++ b/src/plugins/cmakeprojectmanager/fileapiparser.h @@ -195,8 +195,8 @@ public: QList<Utils::FilePath> artifacts; QString installPrefix; std::vector<InstallDestination> installDestination; - Utils::optional<LinkInfo> link; - Utils::optional<ArchiveInfo> archive; + std::optional<LinkInfo> link; + std::optional<ArchiveInfo> archive; std::vector<DependencyInfo> dependencies; std::vector<SourceInfo> sources; std::vector<QString> sourceGroups; diff --git a/src/plugins/cmakeprojectmanager/fileapireader.h b/src/plugins/cmakeprojectmanager/fileapireader.h index 3e362423be..6f59a17ddd 100644 --- a/src/plugins/cmakeprojectmanager/fileapireader.h +++ b/src/plugins/cmakeprojectmanager/fileapireader.h @@ -12,13 +12,13 @@ #include <projectexplorer/treescanner.h> #include <utils/filesystemwatcher.h> -#include <utils/optional.h> #include <QDateTime> #include <QFuture> #include <QObject> #include <memory> +#include <optional> namespace ProjectExplorer { class ProjectNode; @@ -92,7 +92,7 @@ private: bool m_usesAllCapsTargets = false; int m_lastCMakeExitCode = 0; - Utils::optional<QFuture<std::shared_ptr<FileApiQtcData>>> m_future; + std::optional<QFuture<std::shared_ptr<FileApiQtcData>>> m_future; // Update related: bool m_isParsing = false; diff --git a/src/plugins/coco/cocolanguageclient.cpp b/src/plugins/coco/cocolanguageclient.cpp index aa79ec1289..8db497d10e 100644 --- a/src/plugins/coco/cocolanguageclient.cpp +++ b/src/plugins/coco/cocolanguageclient.cpp @@ -119,11 +119,11 @@ class CocoDiagnostic : public Diagnostic { public: using Diagnostic::Diagnostic; - optional<CocoDiagnosticSeverity> cocoSeverity() const + std::optional<CocoDiagnosticSeverity> cocoSeverity() const { if (auto val = optionalValue<int>(severityKey)) - return Utils::make_optional(static_cast<CocoDiagnosticSeverity>(*val)); - return Utils::nullopt; + return std::make_optional(static_cast<CocoDiagnosticSeverity>(*val)); + return std::nullopt; } }; @@ -154,7 +154,7 @@ public: } } - optional<CocoDiagnosticSeverity> m_severity; + std::optional<CocoDiagnosticSeverity> m_severity; QColor m_annotationColor; }; @@ -185,7 +185,7 @@ private: bool /*isProjectFile*/) const override { const CocoDiagnostic cocoDiagnostic(diagnostic); - if (optional<CocoDiagnosticSeverity> severity = cocoDiagnostic.cocoSeverity()) + if (std::optional<CocoDiagnosticSeverity> severity = cocoDiagnostic.cocoSeverity()) return new CocoTextMark(filePath, cocoDiagnostic, client()->id()); return nullptr; } @@ -193,7 +193,8 @@ private: QTextEdit::ExtraSelection createDiagnosticSelection(const Diagnostic &diagnostic, QTextDocument *textDocument) const override { - if (optional<CocoDiagnosticSeverity> severity = CocoDiagnostic(diagnostic).cocoSeverity()) { + if (std::optional<CocoDiagnosticSeverity> severity = CocoDiagnostic(diagnostic) + .cocoSeverity()) { QTextCursor cursor(textDocument); cursor.setPosition(diagnostic.range().start().toPositionInDocument(textDocument)); cursor.setPosition(diagnostic.range().end().toPositionInDocument(textDocument), @@ -210,7 +211,7 @@ private: void setDiagnostics(const DocumentUri &uri, const QList<Diagnostic> &diagnostics, - const Utils::optional<int> &version) override + const std::optional<int> &version) override { DiagnosticManager::setDiagnostics(uri, diagnostics, version); showDiagnostics(uri, client()->documentVersion(uri.toFilePath())); diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp index 187acaa2bb..e503c47729 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp @@ -8,13 +8,14 @@ #include <utils/algorithm.h> #include <utils/hostosinfo.h> -#include <utils/optional.h> #include <utils/stringutils.h> #include <QDir> #include <QRegularExpression> #include <QSet> +#include <optional> + using namespace ProjectExplorer; using namespace Utils; @@ -100,8 +101,8 @@ void filteredFlags(const QString &fileName, bool skipNext = Utils::HostOsInfo::isWindowsHost() ? (!flags.front().startsWith('/') && !flags.front().startsWith('-')) : (!flags.front().startsWith('-')); - Utils::optional<HeaderPathType> includePathType; - Utils::optional<MacroType> macroType; + std::optional<HeaderPathType> includePathType; + std::optional<MacroType> macroType; bool fileKindIsNext = false; QStringList filtered; diff --git a/src/plugins/coreplugin/documentmanager.cpp b/src/plugins/coreplugin/documentmanager.cpp index d46044c8a3..13698bb50f 100644 --- a/src/plugins/coreplugin/documentmanager.cpp +++ b/src/plugins/coreplugin/documentmanager.cpp @@ -30,7 +30,6 @@ #include <utils/globalfilechangeblocker.h> #include <utils/hostosinfo.h> #include <utils/mimeutils.h> -#include <utils/optional.h> #include <utils/pathchooser.h> #include <utils/qtcassert.h> #include <utils/reloadpromptutils.h> @@ -52,6 +51,8 @@ #include <QStringList> #include <QTimer> +#include <optional> + static const bool kUseProjectsDirectoryDefault = true; static Q_LOGGING_CATEGORY(log, "qtc.core.documentmanager", QtWarningMsg) @@ -1131,7 +1132,7 @@ void DocumentManager::checkForReload() QStringList filesToDiff; for (IDocument *document : qAsConst(changedIDocuments)) { IDocument::ChangeTrigger trigger = IDocument::TriggerInternal; - optional<IDocument::ChangeType> type; + std::optional<IDocument::ChangeType> type; bool changed = false; // find out the type & behavior from the two possible files // behavior is internal if all changes are expected (and none removed) diff --git a/src/plugins/coreplugin/editormanager/documentmodel.cpp b/src/plugins/coreplugin/editormanager/documentmodel.cpp index e0f2723ac3..512939911c 100644 --- a/src/plugins/coreplugin/editormanager/documentmodel.cpp +++ b/src/plugins/coreplugin/editormanager/documentmodel.cpp @@ -203,14 +203,14 @@ QIcon DocumentModelPrivate::pinnedIcon() return icon; } -Utils::optional<int> DocumentModelPrivate::indexOfFilePath(const Utils::FilePath &filePath) const +std::optional<int> DocumentModelPrivate::indexOfFilePath(const Utils::FilePath &filePath) const { if (filePath.isEmpty()) - return Utils::nullopt; + return std::nullopt; const FilePath fixedPath = DocumentManager::filePathKey(filePath, DocumentManager::ResolveLinks); const int index = m_entries.indexOf(m_entryByFixedPath.value(fixedPath)); if (index < 0) - return Utils::nullopt; + return std::nullopt; return index; } @@ -233,13 +233,13 @@ void DocumentModelPrivate::removeDocument(int idx) delete entry; } -Utils::optional<int> DocumentModelPrivate::indexOfDocument(IDocument *document) const +std::optional<int> DocumentModelPrivate::indexOfDocument(IDocument *document) const { const int index = Utils::indexOf(m_entries, [&document](DocumentModel::Entry *entry) { return entry->document == document; }); if (index < 0) - return Utils::nullopt; + return std::nullopt; return index; } @@ -320,7 +320,7 @@ QVariant DocumentModelPrivate::data(const QModelIndex &index, int role) const void DocumentModelPrivate::itemChanged(IDocument *document) { - const Utils::optional<int> idx = indexOfDocument(document); + const std::optional<int> idx = indexOfDocument(document); if (!idx) return; const FilePath fixedPath = DocumentManager::filePathKey(document->filePath(), @@ -582,12 +582,12 @@ QList<IEditor *> DocumentModel::editorsForDocuments(const QList<IDocument *> &do return result; } -Utils::optional<int> DocumentModel::indexOfDocument(IDocument *document) +std::optional<int> DocumentModel::indexOfDocument(IDocument *document) { return d->indexOfDocument(document); } -Utils::optional<int> DocumentModel::indexOfFilePath(const Utils::FilePath &filePath) +std::optional<int> DocumentModel::indexOfFilePath(const Utils::FilePath &filePath) { return d->indexOfFilePath(filePath); } @@ -638,14 +638,14 @@ int DocumentModel::entryCount() return d->m_entries.count(); } -Utils::optional<int> DocumentModel::rowOfDocument(IDocument *document) +std::optional<int> DocumentModel::rowOfDocument(IDocument *document) { if (!document) return 0 /*<no document>*/; - const Utils::optional<int> index = indexOfDocument(document); + const std::optional<int> index = indexOfDocument(document); if (index) return *index + 1/*correction for <no document>*/; - return Utils::nullopt; + return std::nullopt; } QList<DocumentModel::Entry *> DocumentModel::entries() diff --git a/src/plugins/coreplugin/editormanager/documentmodel.h b/src/plugins/coreplugin/editormanager/documentmodel.h index eb0c21f429..5918ab350a 100644 --- a/src/plugins/coreplugin/editormanager/documentmodel.h +++ b/src/plugins/coreplugin/editormanager/documentmodel.h @@ -7,7 +7,8 @@ #include <utils/filepath.h> #include <utils/id.h> -#include <utils/optional.h> + +#include <optional> QT_BEGIN_NAMESPACE class QAbstractItemModel; @@ -52,12 +53,12 @@ public: }; static Entry *entryAtRow(int row); - static Utils::optional<int> rowOfDocument(IDocument *document); + static std::optional<int> rowOfDocument(IDocument *document); static int entryCount(); static QList<Entry *> entries(); - static Utils::optional<int> indexOfDocument(IDocument *document); - static Utils::optional<int> indexOfFilePath(const Utils::FilePath &filePath); + static std::optional<int> indexOfDocument(IDocument *document); + static std::optional<int> indexOfFilePath(const Utils::FilePath &filePath); static Entry *entryForDocument(IDocument *document); static Entry *entryForFilePath(const Utils::FilePath &filePath); static QList<IDocument *> openedDocuments(); diff --git a/src/plugins/coreplugin/editormanager/documentmodel_p.h b/src/plugins/coreplugin/editormanager/documentmodel_p.h index ae4c2f98e0..560dd0d0bd 100644 --- a/src/plugins/coreplugin/editormanager/documentmodel_p.h +++ b/src/plugins/coreplugin/editormanager/documentmodel_p.h @@ -36,8 +36,8 @@ public: void addEntry(DocumentModel::Entry *entry); void removeDocument(int idx); - Utils::optional<int> indexOfFilePath(const Utils::FilePath &filePath) const; - Utils::optional<int> indexOfDocument(IDocument *document) const; + std::optional<int> indexOfFilePath(const Utils::FilePath &filePath) const; + std::optional<int> indexOfDocument(IDocument *document) const; bool disambiguateDisplayNames(DocumentModel::Entry *entry); diff --git a/src/plugins/coreplugin/editormanager/openeditorsview.cpp b/src/plugins/coreplugin/editormanager/openeditorsview.cpp index 1a74a527d0..87e4174d2f 100644 --- a/src/plugins/coreplugin/editormanager/openeditorsview.cpp +++ b/src/plugins/coreplugin/editormanager/openeditorsview.cpp @@ -53,7 +53,7 @@ void OpenEditorsWidget::updateCurrentItem(IEditor *editor) clearSelection(); return; } - const Utils::optional<int> index = DocumentModel::indexOfDocument(editor->document()); + const std::optional<int> index = DocumentModel::indexOfDocument(editor->document()); if (QTC_GUARD(index)) setCurrentIndex(m_model->index(index.value(), 0)); selectionModel()->select(currentIndex(), diff --git a/src/plugins/coreplugin/editortoolbar.cpp b/src/plugins/coreplugin/editortoolbar.cpp index 76f10ba15e..e7aaa2a51e 100644 --- a/src/plugins/coreplugin/editortoolbar.cpp +++ b/src/plugins/coreplugin/editortoolbar.cpp @@ -296,7 +296,7 @@ void EditorToolBar::setMenuProvider(const EditorToolBar::MenuProvider &provider) void EditorToolBar::setCurrentEditor(IEditor *editor) { IDocument *document = editor ? editor->document() : nullptr; - const Utils::optional<int> index = DocumentModel::rowOfDocument(document); + const std::optional<int> index = DocumentModel::rowOfDocument(document); if (QTC_GUARD(index)) d->m_editorList->setCurrentIndex(*index); diff --git a/src/plugins/coreplugin/externaltool.cpp b/src/plugins/coreplugin/externaltool.cpp index 6c774b36af..d00d7e572b 100644 --- a/src/plugins/coreplugin/externaltool.cpp +++ b/src/plugins/coreplugin/externaltool.cpp @@ -159,7 +159,7 @@ Id ExternalTool::baseEnvironmentProviderId() const Environment ExternalTool::baseEnvironment() const { if (m_baseEnvironmentProviderId.isValid()) { - const optional<EnvironmentProvider> provider = EnvironmentProvider::provider( + const std::optional<EnvironmentProvider> provider = EnvironmentProvider::provider( m_baseEnvironmentProviderId.name()); if (provider && provider->environment) return provider->environment(); diff --git a/src/plugins/coreplugin/find/searchresultitem.h b/src/plugins/coreplugin/find/searchresultitem.h index 3c6400128d..fe6cedbacb 100644 --- a/src/plugins/coreplugin/find/searchresultitem.h +++ b/src/plugins/coreplugin/find/searchresultitem.h @@ -7,12 +7,13 @@ #include <utils/filepath.h> #include <utils/hostosinfo.h> -#include <utils/optional.h> #include <QIcon> #include <QStringList> #include <QVariant> +#include <optional> + namespace Core { namespace Search { @@ -106,9 +107,9 @@ public: bool selectForReplacement() const { return m_selectForReplacement; } void setSelectForReplacement(bool select) { m_selectForReplacement = select; } - Utils::optional<QString> containingFunctionName() const { return m_containingFunctionName; } + std::optional<QString> containingFunctionName() const { return m_containingFunctionName; } - void setContainingFunctionName(Utils::optional<QString> containingFunctionName) + void setContainingFunctionName(std::optional<QString> containingFunctionName) { m_containingFunctionName = std::move(containingFunctionName); } @@ -122,7 +123,7 @@ private: bool m_useTextEditorFont = false; bool m_selectForReplacement = true; SearchResultColor::Style m_style = SearchResultColor::Style::Default; - Utils::optional<QString> m_containingFunctionName; + std::optional<QString> m_containingFunctionName; }; } // namespace Core diff --git a/src/plugins/coreplugin/helpitem.h b/src/plugins/coreplugin/helpitem.h index 79aa913324..8efab6467d 100644 --- a/src/plugins/coreplugin/helpitem.h +++ b/src/plugins/coreplugin/helpitem.h @@ -5,12 +5,11 @@ #include "core_global.h" -#include <utils/optional.h> - #include <QString> #include <QUrl> #include <QVariant> +#include <optional> #include <vector> namespace Core { @@ -70,8 +69,8 @@ private: QStringList m_helpIds; QString m_docMark; Category m_category = Unknown; - mutable Utils::optional<Links> m_helpLinks; // cached help links - mutable Utils::optional<QString> m_firstParagraph; + mutable std::optional<Links> m_helpLinks; // cached help links + mutable std::optional<QString> m_firstParagraph; mutable QString m_keyword; mutable bool m_isFuzzyMatch = false; }; diff --git a/src/plugins/coreplugin/idocument.cpp b/src/plugins/coreplugin/idocument.cpp index 1f828bfd24..8add39dfe0 100644 --- a/src/plugins/coreplugin/idocument.cpp +++ b/src/plugins/coreplugin/idocument.cpp @@ -6,13 +6,13 @@ #include <utils/filepath.h> #include <utils/infobar.h> #include <utils/minimizableinfobars.h> -#include <utils/optional.h> #include <utils/qtcassert.h> #include <QFile> #include <QFileInfo> #include <memory> +#include <optional> /*! \class Core::IDocument @@ -209,7 +209,7 @@ public: Utils::InfoBar *infoBar = nullptr; std::unique_ptr<MinimizableInfoBars> minimizableInfoBars; Id id; - optional<bool> fileIsReadOnly; + std::optional<bool> fileIsReadOnly; bool temporary = false; bool hasWriteWarning = false; bool restored = false; diff --git a/src/plugins/coreplugin/locator/ilocatorfilter.h b/src/plugins/coreplugin/locator/ilocatorfilter.h index 90564eed0b..993d49495b 100644 --- a/src/plugins/coreplugin/locator/ilocatorfilter.h +++ b/src/plugins/coreplugin/locator/ilocatorfilter.h @@ -7,13 +7,14 @@ #include <utils/filepath.h> #include <utils/id.h> -#include <utils/optional.h> #include <QFutureInterface> #include <QIcon> #include <QMetaType> #include <QVariant> +#include <optional> + namespace Core { class ILocatorFilter; @@ -45,8 +46,10 @@ struct LocatorFilterEntry LocatorFilterEntry() = default; - LocatorFilterEntry(ILocatorFilter *fromFilter, const QString &name, const QVariant &data, - Utils::optional<QIcon> icon = Utils::nullopt) + LocatorFilterEntry(ILocatorFilter *fromFilter, + const QString &name, + const QVariant &data, + std::optional<QIcon> icon = std::nullopt) : filter(fromFilter) , displayName(name) , internalData(data) @@ -64,7 +67,7 @@ struct LocatorFilterEntry /* can be used by the filter to save more information about the entry */ QVariant internalData; /* icon to display along with the entry */ - Utils::optional<QIcon> displayIcon; + std::optional<QIcon> displayIcon; /* file path, if the entry is related to a file, is used e.g. for resolving a file icon */ Utils::FilePath filePath; /* highlighting support */ diff --git a/src/plugins/coreplugin/locator/locatorwidget.h b/src/plugins/coreplugin/locator/locatorwidget.h index 63b34f3405..ef6a25e8f6 100644 --- a/src/plugins/coreplugin/locator/locatorwidget.h +++ b/src/plugins/coreplugin/locator/locatorwidget.h @@ -6,13 +6,13 @@ #include "locator.h" #include <extensionsystem/iplugin.h> -#include <utils/optional.h> #include <QFutureWatcher> #include <QPointer> #include <QWidget> #include <functional> +#include <optional> QT_BEGIN_NAMESPACE class QAbstractItemModel; @@ -94,7 +94,7 @@ private: bool m_possibleToolTipRequest = false; QWidget *m_progressIndicator = nullptr; QTimer m_showProgressTimer; - Utils::optional<int> m_rowRequestedForAccept; + std::optional<int> m_rowRequestedForAccept; QPointer<QWidget> m_previousFocusWidget; }; diff --git a/src/plugins/coreplugin/loggingmanager.cpp b/src/plugins/coreplugin/loggingmanager.cpp index 5f2fadfb9d..4a3f392d4c 100644 --- a/src/plugins/coreplugin/loggingmanager.cpp +++ b/src/plugins/coreplugin/loggingmanager.cpp @@ -75,9 +75,9 @@ static bool parseLine(const QString &line, FilterRuleSpec *filterRule) filterRule->category = categoryName; if (match.capturedLength(2) == 0) - filterRule->level = Utils::nullopt; + filterRule->level = std::nullopt; else - filterRule->level = Utils::make_optional(parseLevel(match.captured(2).mid(1))); + filterRule->level = std::make_optional(parseLevel(match.captured(2).mid(1))); const QString enabled = parts.at(1); if (enabled == "true" || enabled == "false") { diff --git a/src/plugins/coreplugin/loggingmanager.h b/src/plugins/coreplugin/loggingmanager.h index a323527476..9a2108051d 100644 --- a/src/plugins/coreplugin/loggingmanager.h +++ b/src/plugins/coreplugin/loggingmanager.h @@ -3,20 +3,20 @@ #pragma once -#include <utils/optional.h> - #include <QColor> #include <QLoggingCategory> #include <QMap> #include <QObject> +#include <optional> + namespace Core { namespace Internal { struct FilterRuleSpec { QString category; - Utils::optional<QtMsgType> level; + std::optional<QtMsgType> level; bool enabled; }; diff --git a/src/plugins/coreplugin/systemsettings.cpp b/src/plugins/coreplugin/systemsettings.cpp index 663f447063..bdb480ffc3 100644 --- a/src/plugins/coreplugin/systemsettings.cpp +++ b/src/plugins/coreplugin/systemsettings.cpp @@ -319,7 +319,7 @@ public: m_environmentChanges = CorePlugin::environmentChanges(); updateEnvironmentChangesLabel(); connect(environmentButton, &QPushButton::clicked, this, [this, environmentButton] { - Utils::optional<EnvironmentItems> changes + std::optional<EnvironmentItems> changes = Utils::EnvironmentDialog::getEnvironmentItems(environmentButton, m_environmentChanges); if (!changes) diff --git a/src/plugins/coreplugin/vcsmanager.cpp b/src/plugins/coreplugin/vcsmanager.cpp index 0e944683c3..3e070950d9 100644 --- a/src/plugins/coreplugin/vcsmanager.cpp +++ b/src/plugins/coreplugin/vcsmanager.cpp @@ -15,7 +15,6 @@ #include <utils/algorithm.h> #include <utils/fileutils.h> #include <utils/infobar.h> -#include <utils/optional.h> #include <utils/qtcassert.h> #include <vcsbase/vcsbaseconstants.h> @@ -27,6 +26,8 @@ #include <QFileInfo> #include <QMessageBox> +#include <optional> + using namespace Utils; namespace Core { @@ -57,14 +58,14 @@ public: QString topLevel; }; - Utils::optional<VcsInfo> findInCache(const QString &dir) const + std::optional<VcsInfo> findInCache(const QString &dir) const { - QTC_ASSERT(QDir(dir).isAbsolute(), return Utils::nullopt); - QTC_ASSERT(!dir.endsWith(QLatin1Char('/')), return Utils::nullopt); - QTC_ASSERT(QDir::fromNativeSeparators(dir) == dir, return Utils::nullopt); + QTC_ASSERT(QDir(dir).isAbsolute(), return std::nullopt); + QTC_ASSERT(!dir.endsWith(QLatin1Char('/')), return std::nullopt); + QTC_ASSERT(QDir::fromNativeSeparators(dir) == dir, return std::nullopt); const auto it = m_cachedMatches.constFind(dir); - return it == m_cachedMatches.constEnd() ? Utils::nullopt : Utils::make_optional(it.value()); + return it == m_cachedMatches.constEnd() ? std::nullopt : std::make_optional(it.value()); } void clearCache() diff --git a/src/plugins/coreplugin/welcomepagehelper.h b/src/plugins/coreplugin/welcomepagehelper.h index 4a57b1f1a6..e6351e7273 100644 --- a/src/plugins/coreplugin/welcomepagehelper.h +++ b/src/plugins/coreplugin/welcomepagehelper.h @@ -6,14 +6,14 @@ #include "core_global.h" #include "iwelcomepage.h" -#include <utils/optional.h> - #include <QElapsedTimer> #include <QPointer> #include <QSortFilterProxyModel> #include <QStyledItemDelegate> #include <QListView> +#include <optional> + namespace Utils { class FancyLineEdit; } namespace Core { @@ -43,7 +43,7 @@ protected: void leaveEvent(QEvent *) final; }; -using OptModelIndex = Utils::optional<QModelIndex>; +using OptModelIndex = std::optional<QModelIndex>; class CORE_EXPORT ListItem { diff --git a/src/plugins/cppeditor/compileroptionsbuilder_test.cpp b/src/plugins/cppeditor/compileroptionsbuilder_test.cpp index 523a3c9a2d..a2de9d9c81 100644 --- a/src/plugins/cppeditor/compileroptionsbuilder_test.cpp +++ b/src/plugins/cppeditor/compileroptionsbuilder_test.cpp @@ -81,7 +81,7 @@ public: QStringList extraFlags; bool isMsvc2015 = false; - Utils::optional<CompilerOptionsBuilder> compilerOptionsBuilder; + std::optional<CompilerOptionsBuilder> compilerOptionsBuilder; private: ProjectPart::ConstPtr projectPart; diff --git a/src/plugins/cppeditor/cppcodemodelsettings.cpp b/src/plugins/cppeditor/cppcodemodelsettings.cpp index cea4de6a7c..15280ef2a6 100644 --- a/src/plugins/cppeditor/cppcodemodelsettings.cpp +++ b/src/plugins/cppeditor/cppcodemodelsettings.cpp @@ -194,7 +194,7 @@ bool ClangdSettings::hardwareFulfillsRequirements() instance().m_data.haveCheckedHardwareReqirements = true; instance().saveSettings(); const quint64 minRam = quint64(12) * 1024 * 1024 * 1024; - const Utils::optional<quint64> totalRam = Utils::HostOsInfo::totalMemoryInstalledInBytes(); + const std::optional<quint64> totalRam = Utils::HostOsInfo::totalMemoryInstalledInBytes(); return !totalRam || *totalRam >= minRam; } diff --git a/src/plugins/cppeditor/cppcodestylesettings.cpp b/src/plugins/cppeditor/cppcodestylesettings.cpp index 2fc9df0c11..31344ad52a 100644 --- a/src/plugins/cppeditor/cppcodestylesettings.cpp +++ b/src/plugins/cppeditor/cppcodestylesettings.cpp @@ -210,7 +210,7 @@ static void configureOverviewWithCodeStyleSettings(CPlusPlus::Overview &overview CPlusPlus::Overview CppCodeStyleSettings::currentProjectCodeStyleOverview() { CPlusPlus::Overview overview; - const Utils::optional<CppCodeStyleSettings> codeStyleSettings = currentProjectCodeStyle(); + const std::optional<CppCodeStyleSettings> codeStyleSettings = currentProjectCodeStyle(); configureOverviewWithCodeStyleSettings(overview, codeStyleSettings.value_or(currentGlobalCodeStyle())); return overview; diff --git a/src/plugins/cppeditor/cppcodestylesettings.h b/src/plugins/cppeditor/cppcodestylesettings.h index 9b36aeddb1..cf763ddde0 100644 --- a/src/plugins/cppeditor/cppcodestylesettings.h +++ b/src/plugins/cppeditor/cppcodestylesettings.h @@ -5,10 +5,10 @@ #include "cppeditor_global.h" -#include <utils/optional.h> - #include <QVariantMap> +#include <optional> + namespace CPlusPlus { class Overview; } namespace TextEditor { class TabSettings; } namespace ProjectExplorer { class Project; } diff --git a/src/plugins/cppeditor/cppquickfixes.cpp b/src/plugins/cppeditor/cppquickfixes.cpp index 1bd8bda761..c2c91acec7 100644 --- a/src/plugins/cppeditor/cppquickfixes.cpp +++ b/src/plugins/cppeditor/cppquickfixes.cpp @@ -3346,7 +3346,7 @@ void InsertDefsFromDecls::match(const CppQuickFixInterface &interface, QuickFixO namespace { -Utils::optional<FullySpecifiedType> getFirstTemplateParameter(const Name *name) +std::optional<FullySpecifiedType> getFirstTemplateParameter(const Name *name) { if (const QualifiedNameId *qualifiedName = name->asQualifiedNameId()) return getFirstTemplateParameter(qualifiedName->name()); @@ -3358,7 +3358,7 @@ Utils::optional<FullySpecifiedType> getFirstTemplateParameter(const Name *name) return {}; } -Utils::optional<FullySpecifiedType> getFirstTemplateParameter(Type *type) +std::optional<FullySpecifiedType> getFirstTemplateParameter(Type *type) { if (NamedType *namedType = type->asNamedType()) return getFirstTemplateParameter(namedType->name()); @@ -3366,7 +3366,7 @@ Utils::optional<FullySpecifiedType> getFirstTemplateParameter(Type *type) return {}; } -Utils::optional<FullySpecifiedType> getFirstTemplateParameter(FullySpecifiedType type) +std::optional<FullySpecifiedType> getFirstTemplateParameter(FullySpecifiedType type) { return getFirstTemplateParameter(type.type()); } @@ -3870,7 +3870,7 @@ void GetterSetterRefactoringHelper::performGeneration(ExistingGetterSetterData d getSetTemplate.replacePlaceholders(data.memberVariableName, parameterName); using Pattern = CppQuickFixSettings::GetterSetterTemplate; - Utils::optional<FullySpecifiedType> returnTypeTemplateParameter; + std::optional<FullySpecifiedType> returnTypeTemplateParameter; if (getSetTemplate.returnTypeTemplate.has_value()) { QString returnTypeTemplate = getSetTemplate.returnTypeTemplate.value(); if (returnTypeTemplate.contains(Pattern::TEMPLATE_PARAMETER_PATTERN)) { diff --git a/src/plugins/cppeditor/cppquickfixsettings.h b/src/plugins/cppeditor/cppquickfixsettings.h index 78032ab51d..0ac2ed91f8 100644 --- a/src/plugins/cppeditor/cppquickfixsettings.h +++ b/src/plugins/cppeditor/cppquickfixsettings.h @@ -3,11 +3,10 @@ #pragma once -#include <utils/optional.h> - #include <QString> #include <QStringList> +#include <optional> #include <vector> QT_BEGIN_NAMESPACE @@ -48,7 +47,7 @@ public: QString assignment = "<cur> = <new>"; const static inline QString TYPE_PATTERN = "<type>"; const static inline QString TEMPLATE_PARAMETER_PATTERN = "<T>"; - Utils::optional<QString> returnTypeTemplate; + std::optional<QString> returnTypeTemplate; void replacePlaceholders(QString currentValueVariableName, QString newValueVariableName); }; diff --git a/src/plugins/cppeditor/projectinfo_test.cpp b/src/plugins/cppeditor/projectinfo_test.cpp index b2ea784135..de1807c1fd 100644 --- a/src/plugins/cppeditor/projectinfo_test.cpp +++ b/src/plugins/cppeditor/projectinfo_test.cpp @@ -513,7 +513,7 @@ public: user("/projectb/user_path"), user("/project/user_path")}; - Utils::optional<HeaderPathFilter> filter; + std::optional<HeaderPathFilter> filter; private: ProjectPart::ConstPtr projectPart; diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index ad752a778e..0ed1bb3ef5 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -175,7 +175,7 @@ public: const Utils::MacroExpander *macroExpander = nullptr; - Utils::optional<int> exitCode = {}; + std::optional<int> exitCode = {}; // For Debugger testing. int testCase = 0; diff --git a/src/plugins/debugger/peripheralregisterhandler.cpp b/src/plugins/debugger/peripheralregisterhandler.cpp index f1ea47802a..4d9a8341d8 100644 --- a/src/plugins/debugger/peripheralregisterhandler.cpp +++ b/src/plugins/debugger/peripheralregisterhandler.cpp @@ -543,8 +543,8 @@ PeripheralRegisterHandler::PeripheralRegisterHandler(DebuggerEngine *engine) static void handleField(QXmlStreamReader &in, PeripheralRegister ®) { PeripheralRegisterField fld; - Utils::optional<int> from; - Utils::optional<int> to; + std::optional<int> from; + std::optional<int> to; while (in.readNextStartElement()) { const auto elementName = in.name(); if (elementName == QLatin1String(kName)) { diff --git a/src/plugins/docker/dockerapi.cpp b/src/plugins/docker/dockerapi.cpp index e9ef889107..6371757dac 100644 --- a/src/plugins/docker/dockerapi.cpp +++ b/src/plugins/docker/dockerapi.cpp @@ -62,7 +62,7 @@ void DockerApi::checkCanConnect(bool async) if (!lk.owns_lock()) return; - m_dockerDaemonAvailable = nullopt; + m_dockerDaemonAvailable = std::nullopt; emit dockerDaemonAvailableChanged(); auto future = Utils::runAsync([lk = std::move(lk), this] { @@ -88,16 +88,16 @@ void DockerApi::recheckDockerDaemon() s_instance->checkCanConnect(); } -Utils::optional<bool> DockerApi::dockerDaemonAvailable(bool async) +std::optional<bool> DockerApi::dockerDaemonAvailable(bool async) { if (!m_dockerDaemonAvailable.has_value()) checkCanConnect(async); return m_dockerDaemonAvailable; } -Utils::optional<bool> DockerApi::isDockerDaemonAvailable(bool async) +std::optional<bool> DockerApi::isDockerDaemonAvailable(bool async) { - QTC_ASSERT(s_instance, return nullopt); + QTC_ASSERT(s_instance, return std::nullopt); return s_instance->dockerDaemonAvailable(async); } diff --git a/src/plugins/docker/dockerapi.h b/src/plugins/docker/dockerapi.h index 1834c995d4..990b06a76a 100644 --- a/src/plugins/docker/dockerapi.h +++ b/src/plugins/docker/dockerapi.h @@ -7,11 +7,12 @@ #include <utils/filepath.h> #include <utils/guard.h> -#include <utils/optional.h> #include <QMutex> #include <QObject> +#include <optional> + namespace Docker::Internal { class DockerApi : public QObject @@ -31,13 +32,13 @@ signals: void dockerDaemonAvailableChanged(); public: - Utils::optional<bool> dockerDaemonAvailable(bool async = true); - static Utils::optional<bool> isDockerDaemonAvailable(bool async = true); + std::optional<bool> dockerDaemonAvailable(bool async = true); + static std::optional<bool> isDockerDaemonAvailable(bool async = true); private: Utils::FilePath dockerClient(); - Utils::optional<bool> m_dockerDaemonAvailable; + std::optional<bool> m_dockerDaemonAvailable; QMutex m_daemonCheckGuard; DockerSettings *m_settings; }; diff --git a/src/plugins/docker/dockerdevicewidget.cpp b/src/plugins/docker/dockerdevicewidget.cpp index 48b96cfd0a..aab25aa362 100644 --- a/src/plugins/docker/dockerdevicewidget.cpp +++ b/src/plugins/docker/dockerdevicewidget.cpp @@ -194,7 +194,7 @@ DockerDeviceWidget::DockerDeviceWidget(const IDevice::Ptr &device) void DockerDeviceWidget::updateDaemonStateTexts() { - Utils::optional<bool> daemonState = DockerApi::instance()->dockerDaemonAvailable(); + std::optional<bool> daemonState = DockerApi::instance()->dockerDaemonAvailable(); if (!daemonState.has_value()) { m_daemonReset->setIcon(Icons::INFO.icon()); m_daemonState->setText(Tr::tr("Daemon state not evaluated.")); diff --git a/src/plugins/docker/dockerplugin.h b/src/plugins/docker/dockerplugin.h index 7c3d5bd2d5..bbe8776622 100644 --- a/src/plugins/docker/dockerplugin.h +++ b/src/plugins/docker/dockerplugin.h @@ -7,7 +7,7 @@ #include <extensionsystem/iplugin.h> -#include <utils/optional.h> +#include <optional> namespace Docker::Internal { diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index 7374c7203a..fa52d2aba2 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -36,7 +36,6 @@ #include "fakevimactions.h" #include "fakevimtr.h" -#include <utils/optional.h> #include <utils/qtcprocess.h> #include <QDebug> @@ -67,6 +66,7 @@ #include <climits> #include <ctype.h> #include <functional> +#include <optional> //#define DEBUG_KEY 1 #if DEBUG_KEY @@ -2400,7 +2400,7 @@ public: // If empty, cx{motion} will store the range defined by {motion} here. // If non-empty, cx{motion} replaces the {motion} with selectText(*exchangeData) - Utils::optional<Range> exchangeRange; + std::optional<Range> exchangeRange; bool surroundUpperCaseS; // True for yS and cS, false otherwise QString surroundFunction; // Used for storing the function name provided to ys{motion}f diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index cf9ae29401..58a1be54e7 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -2080,7 +2080,7 @@ int FakeVimPluginPrivate::currentFile() const { IEditor *editor = EditorManager::currentEditor(); if (editor) { - const Utils::optional<int> index = DocumentModel::indexOfDocument(editor->document()); + const std::optional<int> index = DocumentModel::indexOfDocument(editor->document()); if (QTC_GUARD(index)) return index.value(); } diff --git a/src/plugins/git/branchmodel.cpp b/src/plugins/git/branchmodel.cpp index d81b2d2117..94983d7f87 100644 --- a/src/plugins/git/branchmodel.cpp +++ b/src/plugins/git/branchmodel.cpp @@ -726,17 +726,17 @@ void BranchModel::setOldBranchesIncluded(bool value) d->oldBranchesIncluded = value; } -Utils::optional<QString> BranchModel::remoteName(const QModelIndex &idx) const +std::optional<QString> BranchModel::remoteName(const QModelIndex &idx) const { const BranchNode *remotesNode = d->rootNode->children.at(RemoteBranches); const BranchNode *node = indexToNode(idx); if (!node) - return Utils::nullopt; + return std::nullopt; if (node == remotesNode) return QString(); if (node->parent == remotesNode) return node->name; - return Utils::nullopt; + return std::nullopt; } void BranchModel::refreshCurrentBranch() diff --git a/src/plugins/git/branchmodel.h b/src/plugins/git/branchmodel.h index 015f57b9aa..4fa8794a7b 100644 --- a/src/plugins/git/branchmodel.h +++ b/src/plugins/git/branchmodel.h @@ -4,11 +4,12 @@ #pragma once #include <utils/filepath.h> -#include <utils/optional.h> #include <QAbstractListModel> #include <QVariant> +#include <optional> + namespace VcsBase { class VcsCommand; } namespace Git { @@ -63,7 +64,7 @@ public: QModelIndex addBranch(const QString &name, bool track, const QModelIndex &trackedBranch); void setRemoteTracking(const QModelIndex &trackingIndex); void setOldBranchesIncluded(bool value); - Utils::optional<QString> remoteName(const QModelIndex &idx) const; + std::optional<QString> remoteName(const QModelIndex &idx) const; void refreshCurrentBranch(); private: diff --git a/src/plugins/git/branchview.cpp b/src/plugins/git/branchview.cpp index 200d6106ab..6c03b91d53 100644 --- a/src/plugins/git/branchview.cpp +++ b/src/plugins/git/branchview.cpp @@ -228,7 +228,7 @@ void BranchView::slotCustomContextMenu(const QPoint &point) QMenu contextMenu; contextMenu.addAction(tr("&Add..."), this, &BranchView::add); - const Utils::optional<QString> remote = m_model->remoteName(index); + const std::optional<QString> remote = m_model->remoteName(index); if (remote.has_value()) { contextMenu.addAction(tr("&Fetch"), this, [this, &remote]() { GitClient::instance()->fetch(m_repository, *remote); diff --git a/src/plugins/help/litehtmlhelpviewer.cpp b/src/plugins/help/litehtmlhelpviewer.cpp index 7e50a957a1..0e8a993901 100644 --- a/src/plugins/help/litehtmlhelpviewer.cpp +++ b/src/plugins/help/litehtmlhelpviewer.cpp @@ -244,7 +244,7 @@ bool LiteHtmlHelpViewer::eventFilter(QObject *src, QEvent *e) return HelpViewer::eventFilter(src, e); } -void LiteHtmlHelpViewer::setSourceInternal(const QUrl &url, Utils::optional<int> vscroll) +void LiteHtmlHelpViewer::setSourceInternal(const QUrl &url, std::optional<int> vscroll) { slotLoadStarted(); QUrl currentUrlWithoutFragment = m_viewer->url(); diff --git a/src/plugins/help/litehtmlhelpviewer.h b/src/plugins/help/litehtmlhelpviewer.h index 3f8b231eda..5067f0a432 100644 --- a/src/plugins/help/litehtmlhelpviewer.h +++ b/src/plugins/help/litehtmlhelpviewer.h @@ -6,12 +6,12 @@ #include "helpviewer.h" #include "openpagesmanager.h" -#include <utils/optional.h> - #include <qlitehtmlwidget.h> #include <QTextBrowser> +#include <optional> + namespace Help { namespace Internal { @@ -54,7 +54,7 @@ public: private: void goForward(int count); void goBackward(int count); - void setSourceInternal(const QUrl &url, Utils::optional<int> vscroll = Utils::nullopt); + void setSourceInternal(const QUrl &url, std::optional<int> vscroll = std::nullopt); void showContextMenu(const QPoint &pos, const QUrl &url); struct HistoryItem diff --git a/src/plugins/help/localhelpmanager.cpp b/src/plugins/help/localhelpmanager.cpp index 7c9459149c..b395ebf2f7 100644 --- a/src/plugins/help/localhelpmanager.cpp +++ b/src/plugins/help/localhelpmanager.cpp @@ -27,7 +27,6 @@ #include <utils/algorithm.h> #include <utils/environment.h> #include <utils/hostosinfo.h> -#include <utils/optional.h> #include <utils/qtcassert.h> #include <utils/stringutils.h> @@ -36,6 +35,8 @@ #include <QHelpEngine> #include <QMutexLocker> +#include <optional> + using namespace Help::Internal; static LocalHelpManager *m_instance = nullptr; @@ -279,7 +280,7 @@ void LocalHelpManager::setLastSelectedTab(int index) Core::ICore::settings()->setValueWithDefault(kLastSelectedTabKey, index, -1); } -static Utils::optional<HelpViewerFactory> backendForId(const QByteArray &id) +static std::optional<HelpViewerFactory> backendForId(const QByteArray &id) { const QVector<HelpViewerFactory> factories = LocalHelpManager::viewerBackends(); const auto backend = std::find_if(std::begin(factories), @@ -294,7 +295,7 @@ HelpViewerFactory LocalHelpManager::defaultViewerBackend() { const QString backend = Utils::qtcEnvironmentVariable("QTC_HELPVIEWER_BACKEND"); if (!backend.isEmpty()) { - const Utils::optional<HelpViewerFactory> factory = backendForId(backend.toLatin1()); + const std::optional<HelpViewerFactory> factory = backendForId(backend.toLatin1()); if (factory) return *factory; } diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index 30f2567565..c86462bee4 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -511,7 +511,7 @@ void Client::initialize() initRequest.setResponseCallback([this](const InitializeRequest::Response &initResponse){ d->initializeCallback(initResponse); }); - if (Utils::optional<ResponseHandler> responseHandler = initRequest.responseHandler()) + if (std::optional<ResponseHandler> responseHandler = initRequest.responseHandler()) d->m_responseHandlers[responseHandler->id] = responseHandler->callback; // directly send content now otherwise the state check of sendContent would fail @@ -590,7 +590,7 @@ void Client::openDocument(TextEditor::TextDocument *document) d->openRequiredShadowDocuments(document); const QString method(DidOpenTextDocumentNotification::methodName); - if (Utils::optional<bool> registered = d->m_dynamicCapabilities.isRegistered(method)) { + if (std::optional<bool> registered = d->m_dynamicCapabilities.isRegistered(method)) { if (!*registered) return; const TextDocumentRegistrationOptions option( @@ -599,7 +599,7 @@ void Client::openDocument(TextEditor::TextDocument *document) && !option.filterApplies(filePath, Utils::mimeTypeForName(document->mimeType()))) { return; } - } else if (Utils::optional<ServerCapabilities::TextDocumentSync> _sync + } else if (std::optional<ServerCapabilities::TextDocumentSync> _sync = d->m_serverCapabilities.textDocumentSync()) { if (auto options = std::get_if<TextDocumentSyncOptions>(&*_sync)) { if (!options->openClose().value_or(true)) @@ -638,7 +638,7 @@ void Client::sendMessage(const JsonRpcMessage &message, SendDocUpdates sendUpdat QTC_ASSERT(d->m_state == Initialized, return); if (sendUpdates == SendDocUpdates::Send) d->sendPostponedDocumentUpdates(semanticTokensSchedule); - if (Utils::optional<ResponseHandler> responseHandler = message.responseHandler()) + if (std::optional<ResponseHandler> responseHandler = message.responseHandler()) d->m_responseHandlers[responseHandler->id] = responseHandler->callback; QString error; if (!QTC_GUARD(message.isValid(&error))) @@ -774,7 +774,7 @@ void ClientPrivate::requestDocumentHighlightsNow(TextEditor::TextEditorWidget *w if (!option.filterApplies(widget->textDocument()->filePath())) return; } else { - Utils::optional<std::variant<bool, WorkDoneProgressOptions>> provider + std::optional<std::variant<bool, WorkDoneProgressOptions>> provider = m_serverCapabilities.documentHighlightProvider(); if (!provider.has_value()) return; @@ -801,7 +801,7 @@ void ClientPrivate::requestDocumentHighlightsNow(TextEditor::TextEditorWidget *w disconnect(connection); const Id &id = TextEditor::TextEditorWidget::CodeSemanticsSelection; QList<QTextEdit::ExtraSelection> selections; - const Utils::optional<DocumentHighlightsResult> &result = response.result(); + const std::optional<DocumentHighlightsResult> &result = response.result(); if (!result.has_value() || std::holds_alternative<std::nullptr_t>(*result)) { widget->setExtraSelections(id, selections); return; @@ -983,7 +983,7 @@ void Client::documentContentsSaved(TextEditor::TextDocument *document) bool send = true; bool includeText = false; const QString method(DidSaveTextDocumentNotification::methodName); - if (Utils::optional<bool> registered = d->m_dynamicCapabilities.isRegistered(method)) { + if (std::optional<bool> registered = d->m_dynamicCapabilities.isRegistered(method)) { send = *registered; if (send) { const TextDocumentSaveRegistrationOptions option( @@ -994,10 +994,10 @@ void Client::documentContentsSaved(TextEditor::TextDocument *document) includeText = option.includeText().value_or(includeText); } } - } else if (Utils::optional<ServerCapabilities::TextDocumentSync> _sync + } else if (std::optional<ServerCapabilities::TextDocumentSync> _sync = d->m_serverCapabilities.textDocumentSync()) { if (auto options = std::get_if<TextDocumentSyncOptions>(&*_sync)) { - if (Utils::optional<SaveOptions> saveOptions = options->save()) + if (std::optional<SaveOptions> saveOptions = options->save()) includeText = saveOptions->includeText().value_or(includeText); } } @@ -1019,7 +1019,7 @@ void Client::documentWillSave(Core::IDocument *document) return; bool send = false; const QString method(WillSaveTextDocumentNotification::methodName); - if (Utils::optional<bool> registered = d->m_dynamicCapabilities.isRegistered(method)) { + if (std::optional<bool> registered = d->m_dynamicCapabilities.isRegistered(method)) { send = *registered; if (send) { const TextDocumentRegistrationOptions option(d->m_dynamicCapabilities.option(method)); @@ -1028,7 +1028,7 @@ void Client::documentWillSave(Core::IDocument *document) Utils::mimeTypeForName(document->mimeType())); } } - } else if (Utils::optional<ServerCapabilities::TextDocumentSync> _sync + } else if (std::optional<ServerCapabilities::TextDocumentSync> _sync = d->m_serverCapabilities.textDocumentSync()) { if (auto options = std::get_if<TextDocumentSyncOptions>(&*_sync)) send = options->willSave().value_or(send); @@ -1051,7 +1051,7 @@ void Client::documentContentsChanged(TextEditor::TextDocument *document, d->m_diagnosticManager->disableDiagnostics(document); const QString method(DidChangeTextDocumentNotification::methodName); TextDocumentSyncKind syncKind = d->m_serverCapabilities.textDocumentSyncKindHelper(); - if (Utils::optional<bool> registered = d->m_dynamicCapabilities.isRegistered(method)) { + if (std::optional<bool> registered = d->m_dynamicCapabilities.isRegistered(method)) { syncKind = *registered ? TextDocumentSyncKind::Full : TextDocumentSyncKind::None; if (syncKind != TextDocumentSyncKind::None) { const TextDocumentChangeRegistrationOptions option( @@ -1260,7 +1260,7 @@ void Client::requestCodeActions(const CodeActionRequest &request) = request.params().value_or(CodeActionParams()).textDocument().uri().toFilePath(); const QString method(CodeActionRequest::methodName); - if (Utils::optional<bool> registered = d->m_dynamicCapabilities.isRegistered(method)) { + if (std::optional<bool> registered = d->m_dynamicCapabilities.isRegistered(method)) { if (!*registered) return; const TextDocumentRegistrationOptions option( @@ -1280,9 +1280,9 @@ void Client::requestCodeActions(const CodeActionRequest &request) void Client::handleCodeActionResponse(const CodeActionRequest::Response &response, const DocumentUri &uri) { - if (const Utils::optional<CodeActionRequest::Response::Error> &error = response.error()) + if (const std::optional<CodeActionRequest::Response::Error> &error = response.error()) log(*error); - if (const Utils::optional<CodeActionResult> &result = response.result()) { + if (const std::optional<CodeActionResult> &result = response.result()) { if (auto list = std::get_if<QList<std::variant<Command, CodeAction>>>(&*result)) { QList<CodeAction> codeActions; for (const std::variant<Command, CodeAction> &item : *list) { @@ -1489,7 +1489,7 @@ bool Client::supportsDocumentSymbols(const TextEditor::TextDocument *doc) const return !options.isValid() || options.filterApplies(doc->filePath(), Utils::mimeTypeForName(doc->mimeType())); } - const Utils::optional<std::variant<bool, WorkDoneProgressOptions>> &provider + const std::optional<std::variant<bool, WorkDoneProgressOptions>> &provider = capabilities().documentSymbolProvider(); if (!provider.has_value()) return false; @@ -1644,7 +1644,7 @@ LanguageClientValue<MessageActionItem> ClientPrivate::showMessageBox( case Log: box->setIcon(QMessageBox::NoIcon); break; } QHash<QAbstractButton *, MessageActionItem> itemForButton; - if (const Utils::optional<QList<MessageActionItem>> actions = message.actions()) { + if (const std::optional<QList<MessageActionItem>> actions = message.actions()) { for (const MessageActionItem &action : *actions) itemForButton.insert(box->addButton(action.title(), QMessageBox::InvalidRole), action); } @@ -1856,7 +1856,7 @@ void ClientPrivate::handleMethod(const QString &method, const MessageId &id, con m_tokenSupport.refresh(); sendResponse(createDefaultResponse()); } else if (method == ProgressNotification::methodName) { - if (Utils::optional<ProgressParams> params + if (std::optional<ProgressParams> params = ProgressNotification(message.toJsonObject()).params()) { if (!params->isValid()) q->log(invalidParamsErrorMessage(*params)); @@ -1917,8 +1917,8 @@ void Client::setDocumentChangeUpdateThreshold(int msecs) void ClientPrivate::initializeCallback(const InitializeRequest::Response &initResponse) { QTC_ASSERT(m_state == Client::InitializeRequested, return); - if (optional<ResponseError<InitializeError>> error = initResponse.error()) { - if (Utils::optional<InitializeError> data = error->data()) { + if (std::optional<ResponseError<InitializeError>> error = initResponse.error()) { + if (std::optional<InitializeError> data = error->data()) { if (data->retry()) { const QString title(tr("Language Server \"%1\" Initialize Error").arg(m_displayName)); auto result = QMessageBox::warning(Core::ICore::dialogParent(), @@ -1937,19 +1937,19 @@ void ClientPrivate::initializeCallback(const InitializeRequest::Response &initRe emit q->finished(); return; } - if (const optional<InitializeResult> &result = initResponse.result()) { + if (const std::optional<InitializeResult> &result = initResponse.result()) { if (!result->isValid()) { // continue on ill formed result q->log(QJsonDocument(*result).toJson(QJsonDocument::Indented) + '\n' + tr("Initialize result is invalid.")); } - const Utils::optional<ServerInfo> serverInfo = result->serverInfo(); + const std::optional<ServerInfo> serverInfo = result->serverInfo(); if (serverInfo) { if (!serverInfo->isValid()) { q->log(QJsonDocument(*result).toJson(QJsonDocument::Indented) + '\n' + tr("Server Info is invalid.")); } else { m_serverName = serverInfo->name(); - if (const Utils::optional<QString> version = serverInfo->version()) + if (const std::optional<QString> version = serverInfo->version()) m_serverVersion = *version; } } @@ -1981,7 +1981,7 @@ void ClientPrivate::initializeCallback(const InitializeRequest::Response &initRe qCDebug(LOGLSPCLIENT) << "language server " << m_displayName << " initialized"; m_state = Client::Initialized; q->sendMessage(InitializeNotification(InitializedParams())); - Utils::optional<std::variant<bool, WorkDoneProgressOptions>> documentSymbolProvider + std::optional<std::variant<bool, WorkDoneProgressOptions>> documentSymbolProvider = q->capabilities().documentSymbolProvider(); if (documentSymbolProvider.has_value()) { if (!std::holds_alternative<bool>(*documentSymbolProvider) @@ -2005,7 +2005,7 @@ void ClientPrivate::shutDownCallback(const ShutdownRequest::Response &shutdownRe m_shutdownTimer.stop(); QTC_ASSERT(m_state == Client::ShutdownRequested, return); QTC_ASSERT(m_clientInterface, return); - if (optional<ShutdownRequest::Response::Error> error = shutdownResponse.error()) + if (std::optional<ShutdownRequest::Response::Error> error = shutdownResponse.error()) q->log(*error); // directly send content now otherwise the state check of sendContent would fail sendMessageNow(ExitNotification()); diff --git a/src/plugins/languageclient/diagnosticmanager.cpp b/src/plugins/languageclient/diagnosticmanager.cpp index 1cfedce9e7..8ec4cd117d 100644 --- a/src/plugins/languageclient/diagnosticmanager.cpp +++ b/src/plugins/languageclient/diagnosticmanager.cpp @@ -58,7 +58,7 @@ DiagnosticManager::~DiagnosticManager() void DiagnosticManager::setDiagnostics(const DocumentUri &uri, const QList<Diagnostic> &diagnostics, - const Utils::optional<int> &version) + const std::optional<int> &version) { hideDiagnostics(uri.toFilePath()); m_diagnostics[uri] = {version, filteredDiagnostics(diagnostics)}; diff --git a/src/plugins/languageclient/diagnosticmanager.h b/src/plugins/languageclient/diagnosticmanager.h index 64d9f74c1b..3898327619 100644 --- a/src/plugins/languageclient/diagnosticmanager.h +++ b/src/plugins/languageclient/diagnosticmanager.h @@ -32,7 +32,7 @@ public: virtual void setDiagnostics(const LanguageServerProtocol::DocumentUri &uri, const QList<LanguageServerProtocol::Diagnostic> &diagnostics, - const Utils::optional<int> &version); + const std::optional<int> &version); virtual void showDiagnostics(const LanguageServerProtocol::DocumentUri &uri, int version); virtual void hideDiagnostics(const Utils::FilePath &filePath); @@ -68,7 +68,7 @@ protected: private: struct VersionedDiagnostics { - Utils::optional<int> version; + std::optional<int> version; QList<LanguageServerProtocol::Diagnostic> diagnostics; }; QMap<LanguageServerProtocol::DocumentUri, VersionedDiagnostics> m_diagnostics; diff --git a/src/plugins/languageclient/documentsymbolcache.cpp b/src/plugins/languageclient/documentsymbolcache.cpp index 3f0abda89f..66c189a4b5 100644 --- a/src/plugins/languageclient/documentsymbolcache.cpp +++ b/src/plugins/languageclient/documentsymbolcache.cpp @@ -93,7 +93,7 @@ void DocumentSymbolCache::handleResponse(const DocumentUri &uri, const DocumentSymbolsRequest::Response &response) { m_runningRequests.remove(uri); - if (Utils::optional<DocumentSymbolsRequest::Response::Error> error = response.error()) { + if (std::optional<DocumentSymbolsRequest::Response::Error> error = response.error()) { if (m_client) m_client->log(*error); } diff --git a/src/plugins/languageclient/documentsymbolcache.h b/src/plugins/languageclient/documentsymbolcache.h index ce17ccf363..3403b91e70 100644 --- a/src/plugins/languageclient/documentsymbolcache.h +++ b/src/plugins/languageclient/documentsymbolcache.h @@ -6,8 +6,6 @@ #include "languageclient_global.h" #include "languageclientutils.h" -#include "utils/optional.h" - #include <languageserverprotocol/languagefeatures.h> #include <languageserverprotocol/lsptypes.h> @@ -16,6 +14,8 @@ #include <QSet> #include <QTimer> +#include <optional> + namespace LanguageClient { class Client; diff --git a/src/plugins/languageclient/dynamiccapabilities.cpp b/src/plugins/languageclient/dynamiccapabilities.cpp index 239e4df2c1..152792bb46 100644 --- a/src/plugins/languageclient/dynamiccapabilities.cpp +++ b/src/plugins/languageclient/dynamiccapabilities.cpp @@ -27,10 +27,10 @@ void DynamicCapabilities::unregisterCapability(const QList<Unregistration> &unre } } -Utils::optional<bool> DynamicCapabilities::isRegistered(const QString &method) const +std::optional<bool> DynamicCapabilities::isRegistered(const QString &method) const { if (!m_capability.contains(method)) - return Utils::nullopt; + return std::nullopt; return m_capability[method].enabled(); } diff --git a/src/plugins/languageclient/dynamiccapabilities.h b/src/plugins/languageclient/dynamiccapabilities.h index 366df58547..47424d0edd 100644 --- a/src/plugins/languageclient/dynamiccapabilities.h +++ b/src/plugins/languageclient/dynamiccapabilities.h @@ -45,7 +45,7 @@ public: void registerCapability(const QList<LanguageServerProtocol::Registration> ®istrations); void unregisterCapability(const QList<LanguageServerProtocol::Unregistration> &unregistrations); - Utils::optional<bool> isRegistered(const QString &method) const; + std::optional<bool> isRegistered(const QString &method) const; QJsonValue option(const QString &method) const { return m_capability.value(method).options(); } QStringList registeredMethods() const; diff --git a/src/plugins/languageclient/languageclientcompletionassist.cpp b/src/plugins/languageclient/languageclientcompletionassist.cpp index 674248545f..6c10870842 100644 --- a/src/plugins/languageclient/languageclientcompletionassist.cpp +++ b/src/plugins/languageclient/languageclientcompletionassist.cpp @@ -402,7 +402,7 @@ void LanguageClientCompletionAssistProcessor::handleCompletionResponse( if (auto error = response.error()) m_client->log(*error); - const Utils::optional<CompletionResult> &result = response.result(); + const std::optional<CompletionResult> &result = response.result(); if (!result || std::holds_alternative<std::nullptr_t>(*result)) { setAsyncProposalAvailable(nullptr); m_client->removeAssistProcessor(this); @@ -464,7 +464,7 @@ bool LanguageClientCompletionAssistProvider::isActivationCharSequence(const QStr } void LanguageClientCompletionAssistProvider::setTriggerCharacters( - const Utils::optional<QList<QString>> triggerChars) + const std::optional<QList<QString>> triggerChars) { m_activationCharSequenceLength = 0; m_triggerChars = triggerChars.value_or(QList<QString>()); diff --git a/src/plugins/languageclient/languageclientcompletionassist.h b/src/plugins/languageclient/languageclientcompletionassist.h index 08634cb156..e78d1b795e 100644 --- a/src/plugins/languageclient/languageclientcompletionassist.h +++ b/src/plugins/languageclient/languageclientcompletionassist.h @@ -10,11 +10,10 @@ #include <texteditor/codeassist/completionassistprovider.h> #include <texteditor/codeassist/iassistprocessor.h> -#include <utils/optional.h> - #include <QPointer> #include <functional> +#include <optional> namespace TextEditor { class IAssistProposal; @@ -40,7 +39,7 @@ public: bool isActivationCharSequence(const QString &sequence) const override; bool isContinuationChar(const QChar &) const override { return true; } - void setTriggerCharacters(const Utils::optional<QList<QString>> triggerChars); + void setTriggerCharacters(const std::optional<QList<QString>> triggerChars); void setSnippetsGroup(const QString &group) { m_snippetsGroup = group; } @@ -78,7 +77,7 @@ private: QPointer<QTextDocument> m_document; Utils::FilePath m_filePath; QPointer<Client> m_client; - Utils::optional<LanguageServerProtocol::MessageId> m_currentRequest; + std::optional<LanguageServerProtocol::MessageId> m_currentRequest; QMetaObject::Connection m_postponedUpdateConnection; const QString m_snippetsGroup; int m_pos = -1; diff --git a/src/plugins/languageclient/languageclientformatter.cpp b/src/plugins/languageclient/languageclientformatter.cpp index f8800e72fe..774b0899de 100644 --- a/src/plugins/languageclient/languageclientformatter.cpp +++ b/src/plugins/languageclient/languageclientformatter.cpp @@ -55,7 +55,7 @@ QFutureWatcher<ChangeSet> *LanguageClientFormatter::format( const FilePath &filePath = m_document->filePath(); const DynamicCapabilities dynamicCapabilities = m_client->dynamicCapabilities(); const QString method(DocumentRangeFormattingRequest::methodName); - if (optional<bool> registered = dynamicCapabilities.isRegistered(method)) { + if (std::optional<bool> registered = dynamicCapabilities.isRegistered(method)) { if (!*registered) return nullptr; const TextDocumentRegistrationOptions option(dynamicCapabilities.option(method).toObject()); @@ -64,7 +64,7 @@ QFutureWatcher<ChangeSet> *LanguageClientFormatter::format( return nullptr; } } else { - const Utils::optional<std::variant<bool, WorkDoneProgressOptions>> &provider + const std::optional<std::variant<bool, WorkDoneProgressOptions>> &provider = m_client->capabilities().documentRangeFormattingProvider(); if (!provider.has_value()) return nullptr; @@ -106,17 +106,18 @@ void LanguageClientFormatter::cancelCurrentRequest() m_progress.reportFinished(); m_client->cancelRequest(*m_currentRequest); m_ignoreCancel = false; - m_currentRequest = nullopt; + m_currentRequest = std::nullopt; } } void LanguageClientFormatter::handleResponse(const DocumentRangeFormattingRequest::Response &response) { - m_currentRequest = nullopt; - if (const optional<DocumentRangeFormattingRequest::Response::Error> &error = response.error()) + m_currentRequest = std::nullopt; + if (const std::optional<DocumentRangeFormattingRequest::Response::Error> &error = response + .error()) m_client->log(*error); ChangeSet changeSet; - if (optional<LanguageClientArray<TextEdit>> result = response.result()) { + if (std::optional<LanguageClientArray<TextEdit>> result = response.result()) { if (!result->isNull()) changeSet = editsToChangeSet(result->toList(), m_document->document()); } diff --git a/src/plugins/languageclient/languageclientformatter.h b/src/plugins/languageclient/languageclientformatter.h index f02d8efe18..e61e749d27 100644 --- a/src/plugins/languageclient/languageclientformatter.h +++ b/src/plugins/languageclient/languageclientformatter.h @@ -31,7 +31,7 @@ private: TextEditor::TextDocument *m_document; // not owned bool m_ignoreCancel = false; QFutureInterface<Utils::ChangeSet> m_progress; - Utils::optional<LanguageServerProtocol::MessageId> m_currentRequest; + std::optional<LanguageServerProtocol::MessageId> m_currentRequest; }; } // namespace LanguageClient diff --git a/src/plugins/languageclient/languageclientfunctionhint.cpp b/src/plugins/languageclient/languageclientfunctionhint.cpp index 895c26e2e2..ec180f4f05 100644 --- a/src/plugins/languageclient/languageclientfunctionhint.cpp +++ b/src/plugins/languageclient/languageclientfunctionhint.cpp @@ -144,7 +144,7 @@ bool FunctionHintAssistProvider::isContinuationChar(const QChar &/*c*/) const } void FunctionHintAssistProvider::setTriggerCharacters( - const Utils::optional<QList<QString>> &triggerChars) + const std::optional<QList<QString>> &triggerChars) { m_triggerChars = triggerChars.value_or(QList<QString>()); for (const QString &trigger : qAsConst(m_triggerChars)) { diff --git a/src/plugins/languageclient/languageclientfunctionhint.h b/src/plugins/languageclient/languageclientfunctionhint.h index 0103760646..d5f11409e9 100644 --- a/src/plugins/languageclient/languageclientfunctionhint.h +++ b/src/plugins/languageclient/languageclientfunctionhint.h @@ -8,10 +8,11 @@ #include <languageserverprotocol/languagefeatures.h> #include <texteditor/codeassist/completionassistprovider.h> #include <texteditor/codeassist/iassistprocessor.h> -#include <utils/optional.h> #include <QPointer> +#include <optional> + namespace TextEditor { class IAssistProposal; } namespace LanguageClient { @@ -32,7 +33,7 @@ public: bool isActivationCharSequence(const QString &sequence) const override; bool isContinuationChar(const QChar &c) const override; - void setTriggerCharacters(const Utils::optional<QList<QString>> &triggerChars); + void setTriggerCharacters(const std::optional<QList<QString>> &triggerChars); private: QList<QString> m_triggerChars; @@ -54,7 +55,7 @@ private: const LanguageServerProtocol::SignatureHelpRequest::Response &response); QPointer<Client> m_client; - Utils::optional<LanguageServerProtocol::MessageId> m_currentRequest; + std::optional<LanguageServerProtocol::MessageId> m_currentRequest; int m_pos = -1; }; diff --git a/src/plugins/languageclient/languageclienthoverhandler.cpp b/src/plugins/languageclient/languageclienthoverhandler.cpp index dc0fbeb2c6..9204a1ec04 100644 --- a/src/plugins/languageclient/languageclienthoverhandler.cpp +++ b/src/plugins/languageclient/languageclienthoverhandler.cpp @@ -43,7 +43,7 @@ void HoverHandler::setHelpItem(const LanguageServerProtocol::MessageId &msgId, const Core::HelpItem &help) { if (msgId == m_response.id()) { - if (Utils::optional<HoverResult> result = m_response.result()) { + if (std::optional<HoverResult> result = m_response.result()) { if (auto hover = std::get_if<Hover>(&(*result))) setContent(hover->content()); } @@ -85,12 +85,12 @@ void HoverHandler::identifyMatch(TextEditor::TextEditorWidget *editorWidget, if (m_preferDiagnostics && reportDiagnostics(cursor)) return; - const Utils::optional<std::variant<bool, WorkDoneProgressOptions>> &provider + const std::optional<std::variant<bool, WorkDoneProgressOptions>> &provider = m_client->capabilities().hoverProvider(); bool sendMessage = provider.has_value(); if (sendMessage && std::holds_alternative<bool>(*provider)) sendMessage = std::get<bool>(*provider); - if (Utils::optional<bool> registered = m_client->dynamicCapabilities().isRegistered( + if (std::optional<bool> registered = m_client->dynamicCapabilities().isRegistered( HoverRequest::methodName)) { sendMessage = *registered; if (sendMessage) { @@ -119,11 +119,11 @@ void HoverHandler::identifyMatch(TextEditor::TextEditorWidget *editorWidget, void HoverHandler::handleResponse(const HoverRequest::Response &response, const QTextCursor &cursor) { m_currentRequest.reset(); - if (Utils::optional<HoverRequest::Response::Error> error = response.error()) { + if (std::optional<HoverRequest::Response::Error> error = response.error()) { if (m_client) m_client->log(*error); } - if (Utils::optional<HoverResult> result = response.result()) { + if (std::optional<HoverResult> result = response.result()) { if (auto hover = std::get_if<Hover>(&(*result))) { if (m_helpItemProvider) { m_response = response; diff --git a/src/plugins/languageclient/languageclienthoverhandler.h b/src/plugins/languageclient/languageclienthoverhandler.h index 6bf0eba015..08840d406f 100644 --- a/src/plugins/languageclient/languageclienthoverhandler.h +++ b/src/plugins/languageclient/languageclienthoverhandler.h @@ -48,7 +48,7 @@ private: bool reportDiagnostics(const QTextCursor &cursor); QPointer<Client> m_client; - Utils::optional<LanguageServerProtocol::MessageId> m_currentRequest; + std::optional<LanguageServerProtocol::MessageId> m_currentRequest; LanguageServerProtocol::DocumentUri m_uri; LanguageServerProtocol::HoverRequest::Response m_response; TextEditor::BaseHoverHandler::ReportPriority m_report; diff --git a/src/plugins/languageclient/languageclientquickfix.cpp b/src/plugins/languageclient/languageclientquickfix.cpp index a675b1dc77..62c32ad94b 100644 --- a/src/plugins/languageclient/languageclientquickfix.cpp +++ b/src/plugins/languageclient/languageclientquickfix.cpp @@ -27,9 +27,9 @@ void CodeActionQuickFixOperation::perform() { if (!m_client) return; - if (Utils::optional<WorkspaceEdit> edit = m_action.edit()) + if (std::optional<WorkspaceEdit> edit = m_action.edit()) applyWorkspaceEdit(m_client, *edit); - else if (Utils::optional<Command> command = m_action.command()) + else if (std::optional<Command> command = m_action.command()) m_client->executeCommand(*command); } @@ -91,11 +91,11 @@ void LanguageClientQuickFixAssistProcessor::cancel() void LanguageClientQuickFixAssistProcessor::handleCodeActionResponse(const CodeActionRequest::Response &response) { m_currentRequest.reset(); - if (const Utils::optional<CodeActionRequest::Response::Error> &error = response.error()) + if (const std::optional<CodeActionRequest::Response::Error> &error = response.error()) m_client->log(*error); m_client->removeAssistProcessor(this); GenericProposal *proposal = nullptr; - if (const Utils::optional<CodeActionResult> &result = response.result()) + if (const std::optional<CodeActionResult> &result = response.result()) proposal = handleCodeActionResult(*result); setAsyncProposalAvailable(proposal); } diff --git a/src/plugins/languageclient/languageclientquickfix.h b/src/plugins/languageclient/languageclientquickfix.h index 7758472c58..6d2d9e5e26 100644 --- a/src/plugins/languageclient/languageclientquickfix.h +++ b/src/plugins/languageclient/languageclientquickfix.h @@ -79,7 +79,7 @@ private: QSharedPointer<const TextEditor::AssistInterface> m_assistInterface; Client *m_client = nullptr; // not owned - Utils::optional<LanguageServerProtocol::MessageId> m_currentRequest; + std::optional<LanguageServerProtocol::MessageId> m_currentRequest; }; } // namespace LanguageClient diff --git a/src/plugins/languageclient/languageclientsymbolsupport.cpp b/src/plugins/languageclient/languageclientsymbolsupport.cpp index ede1dad1cf..a813e3c895 100644 --- a/src/plugins/languageclient/languageclientsymbolsupport.cpp +++ b/src/plugins/languageclient/languageclientsymbolsupport.cpp @@ -42,7 +42,7 @@ static void sendTextDocumentPositionParamsRequest(Client *client, else sendMessage = supportedFile; } else { - const Utils::optional<std::variant<bool, WorkDoneProgressOptions>> &provider + const std::optional<std::variant<bool, WorkDoneProgressOptions>> &provider = serverCapability.referencesProvider(); sendMessage = provider.has_value(); if (sendMessage && std::holds_alternative<bool>(*provider)) @@ -54,9 +54,9 @@ static void sendTextDocumentPositionParamsRequest(Client *client, static void handleGotoDefinitionResponse(const GotoDefinitionRequest::Response &response, Utils::LinkHandler callback, - Utils::optional<Utils::Link> linkUnderCursor) + std::optional<Utils::Link> linkUnderCursor) { - if (Utils::optional<GotoResult> result = response.result()) { + if (std::optional<GotoResult> result = response.result()) { if (std::holds_alternative<std::nullptr_t>(*result)) { callback({}); } else if (auto ploc = std::get_if<Location>(&*result)) { @@ -89,7 +89,7 @@ void SymbolSupport::findLinkAt(TextEditor::TextDocument *document, if (!m_client->reachable()) return; GotoDefinitionRequest request(generateDocPosParams(document, cursor)); - Utils::optional<Utils::Link> linkUnderCursor; + std::optional<Utils::Link> linkUnderCursor; if (!resolveTarget) { QTextCursor linkCursor = cursor; linkCursor.select(QTextCursor::WordUnderCursor); @@ -196,7 +196,7 @@ void SymbolSupport::handleFindReferencesResponse(const FindReferencesRequest::Re } } -Utils::optional<MessageId> SymbolSupport::findUsages( +std::optional<MessageId> SymbolSupport::findUsages( TextEditor::TextDocument *document, const QTextCursor &cursor, const ResultHandler &handler) { if (!m_client->reachable()) @@ -278,11 +278,11 @@ void SymbolSupport::requestPrepareRename(const TextDocumentPositionParams ¶m PrepareRenameRequest request(params); request.setResponseCallback([this, params, placeholder]( const PrepareRenameRequest::Response &response) { - const Utils::optional<PrepareRenameRequest::Response::Error> &error = response.error(); + const std::optional<PrepareRenameRequest::Response::Error> &error = response.error(); if (error.has_value()) m_client->log(*error); - const Utils::optional<PrepareRenameResult> &result = response.result(); + const std::optional<PrepareRenameResult> &result = response.result(); if (result.has_value()) { if (std::holds_alternative<PlaceHolderResult>(*result)) { auto placeHolderResult = std::get<PlaceHolderResult>(*result); @@ -372,11 +372,11 @@ void SymbolSupport::startRenameSymbol(const TextDocumentPositionParams &position void SymbolSupport::handleRenameResponse(Core::SearchResult *search, const RenameRequest::Response &response) { - const Utils::optional<PrepareRenameRequest::Response::Error> &error = response.error(); + const std::optional<PrepareRenameRequest::Response::Error> &error = response.error(); if (error.has_value()) m_client->log(*error); - const Utils::optional<WorkspaceEdit> &edits = response.result(); + const std::optional<WorkspaceEdit> &edits = response.result(); if (edits.has_value()) { search->addResults(generateReplaceItems(*edits), Core::SearchResult::AddOrdered); search->additionalReplaceWidget()->setVisible(false); diff --git a/src/plugins/languageclient/languageclientsymbolsupport.h b/src/plugins/languageclient/languageclientsymbolsupport.h index 2494871ca4..33b99fa32a 100644 --- a/src/plugins/languageclient/languageclientsymbolsupport.h +++ b/src/plugins/languageclient/languageclientsymbolsupport.h @@ -33,7 +33,7 @@ public: const bool resolveTarget); using ResultHandler = std::function<void(const QList<LanguageServerProtocol::Location> &)>; - Utils::optional<LanguageServerProtocol::MessageId> findUsages( + std::optional<LanguageServerProtocol::MessageId> findUsages( TextEditor::TextDocument *document, const QTextCursor &cursor, const ResultHandler &handler = {}); diff --git a/src/plugins/languageclient/languageclientutils.cpp b/src/plugins/languageclient/languageclientutils.cpp index 86d89e1fda..dbea480a70 100644 --- a/src/plugins/languageclient/languageclientutils.cpp +++ b/src/plugins/languageclient/languageclientutils.cpp @@ -170,17 +170,17 @@ void updateCodeActionRefactoringMarker(Client *client, for (const CodeAction &action : actions) { const QList<Diagnostic> &diagnostics = action.diagnostics().value_or(QList<Diagnostic>()); - if (Utils::optional<WorkspaceEdit> edit = action.edit()) { + if (std::optional<WorkspaceEdit> edit = action.edit()) { if (diagnostics.isEmpty()) { QList<TextEdit> edits; - if (optional<QList<TextDocumentEdit>> documentChanges = edit->documentChanges()) { + if (std::optional<QList<TextDocumentEdit>> documentChanges = edit->documentChanges()) { QList<TextDocumentEdit> changesForUri = Utils::filtered( *documentChanges, [uri](const TextDocumentEdit &edit) { return edit.textDocument().uri() == uri; }); for (const TextDocumentEdit &edit : changesForUri) edits << edit.edits(); - } else if (optional<WorkspaceEdit::Changes> localChanges = edit->changes()) { + } else if (std::optional<WorkspaceEdit::Changes> localChanges = edit->changes()) { edits = (*localChanges)[uri]; } for (const TextEdit &edit : qAsConst(edits)) diff --git a/src/plugins/languageclient/locatorfilter.cpp b/src/plugins/languageclient/locatorfilter.cpp index 43c22d695e..6df5170a42 100644 --- a/src/plugins/languageclient/locatorfilter.cpp +++ b/src/plugins/languageclient/locatorfilter.cpp @@ -83,7 +83,7 @@ static Core::LocatorFilterEntry generateLocatorEntry(const SymbolInformation &in Core::LocatorFilterEntry entry; entry.filter = filter; entry.displayName = info.name(); - if (Utils::optional<QString> container = info.containerName()) + if (std::optional<QString> container = info.containerName()) entry.extraInfo = container.value_or(QString()); entry.displayIcon = symbolIcon(info.kind()); entry.internalData = QVariant::fromValue(info.location().toLink()); @@ -114,7 +114,7 @@ Core::LocatorFilterEntry DocumentLocatorFilter::generateLocatorEntry( Core::LocatorFilterEntry entry; entry.filter = this; entry.displayName = info.name(); - if (Utils::optional<QString> detail = info.detail()) + if (std::optional<QString> detail = info.detail()) entry.extraInfo = detail.value_or(QString()); entry.displayIcon = symbolIcon(info.kind()); const Position &pos = info.range().start(); @@ -255,7 +255,7 @@ void WorkspaceLocatorFilter::prepareSearch(const QString &entry, continue; if (!(force || client->locatorsEnabled())) continue; - Utils::optional<std::variant<bool, WorkDoneProgressOptions>> capability + std::optional<std::variant<bool, WorkDoneProgressOptions>> capability = client->capabilities().workspaceSymbolProvider(); if (!capability.has_value()) continue; diff --git a/src/plugins/languageclient/locatorfilter.h b/src/plugins/languageclient/locatorfilter.h index 30381b39d4..afb8630795 100644 --- a/src/plugins/languageclient/locatorfilter.h +++ b/src/plugins/languageclient/locatorfilter.h @@ -66,7 +66,7 @@ private: QMutex m_mutex; QMetaObject::Connection m_updateSymbolsConnection; QMetaObject::Connection m_resetSymbolsConnection; - Utils::optional<LanguageServerProtocol::DocumentSymbolsResult> m_currentSymbols; + std::optional<LanguageServerProtocol::DocumentSymbolsResult> m_currentSymbols; bool m_forced = false; }; diff --git a/src/plugins/languageclient/lspinspector.h b/src/plugins/languageclient/lspinspector.h index 4116764e4d..f515ef298c 100644 --- a/src/plugins/languageclient/lspinspector.h +++ b/src/plugins/languageclient/lspinspector.h @@ -31,8 +31,8 @@ public: QString displayText() const; private: - mutable Utils::optional<LanguageServerProtocol::MessageId> m_id; - mutable Utils::optional<QString> m_displayText; + mutable std::optional<LanguageServerProtocol::MessageId> m_id; + mutable std::optional<QString> m_displayText; }; struct Capabilities diff --git a/src/plugins/languageclient/progressmanager.cpp b/src/plugins/languageclient/progressmanager.cpp index 8bb97afe7e..0f3580dcfb 100644 --- a/src/plugins/languageclient/progressmanager.cpp +++ b/src/plugins/languageclient/progressmanager.cpp @@ -77,7 +77,7 @@ void ProgressManager::reportProgress(const ProgressToken &token, { const LanguageClientProgress &progress = m_progress.value(token); if (progress.progressInterface) { - const Utils::optional<QString> &message = report.message(); + const std::optional<QString> &message = report.message(); if (message.has_value()) { progress.progressInterface->setSubtitle(*message); const bool showSubtitle = !message->isEmpty(); @@ -85,7 +85,7 @@ void ProgressManager::reportProgress(const ProgressToken &token, } } if (progress.futureInterface) { - if (const Utils::optional<double> &percentage = report.percentage(); percentage.has_value()) + if (const std::optional<double> &percentage = report.percentage(); percentage.has_value()) progress.futureInterface->setProgressValue(*percentage); } } diff --git a/src/plugins/languageclient/semantichighlightsupport.cpp b/src/plugins/languageclient/semantichighlightsupport.cpp index f700257477..e9f6429aca 100644 --- a/src/plugins/languageclient/semantichighlightsupport.cpp +++ b/src/plugins/languageclient/semantichighlightsupport.cpp @@ -323,7 +323,7 @@ SemanticRequestTypes SemanticTokenSupport::supportedSemanticRequests(TextDocumen return SemanticRequestType::None; return supportedRequests(dynamicCapabilities.option(dynamicMethod).toObject()); } - if (Utils::optional<SemanticTokensOptions> provider = m_client->capabilities() + if (std::optional<SemanticTokensOptions> provider = m_client->capabilities() .semanticTokensProvider()) { return supportedRequests(*provider); } @@ -378,7 +378,7 @@ void SemanticTokenSupport::handleSemanticTokensDelta( return; for (const auto start = data.begin() + edit.start(); it < start; ++it) newData.append(*it); - if (const Utils::optional<QList<int>> editData = edit.data()) { + if (const std::optional<QList<int>> editData = edit.data()) { newData.append(*editData); qCDebug(LOGLSPHIGHLIGHT) << edit.start() << edit.deleteCount() << *editData; } else { diff --git a/src/plugins/languageclient/snippet.cpp b/src/plugins/languageclient/snippet.cpp index 37d5cb9ff8..6cda93d2f6 100644 --- a/src/plugins/languageclient/snippet.cpp +++ b/src/plugins/languageclient/snippet.cpp @@ -141,7 +141,7 @@ SnippetParseResult parseSnippet(const QString &snippet) ParsedSnippet result; ParsedSnippet::Part currentPart; - Utils::optional<QString> error; + std::optional<QString> error; auto it = snippet.begin(); const auto end = snippet.end(); diff --git a/src/plugins/mesonprojectmanager/exewrappers/mesonwrapper.h b/src/plugins/mesonprojectmanager/exewrappers/mesonwrapper.h index 023b118d86..72a7f13588 100644 --- a/src/plugins/mesonprojectmanager/exewrappers/mesonwrapper.h +++ b/src/plugins/mesonprojectmanager/exewrappers/mesonwrapper.h @@ -9,13 +9,13 @@ #include <utils/environment.h> #include <utils/fileutils.h> #include <utils/id.h> -#include <utils/optional.h> #include <utils/qtcprocess.h> #include <QFile> #include <QFileInfo> #include <QTemporaryFile> +#include <optional> #include <tuple> namespace MesonProjectManager { @@ -78,7 +78,7 @@ public: Command introspect(const Utils::FilePath &sourceDirectory) const; - static inline Utils::optional<Utils::FilePath> find() + static inline std::optional<Utils::FilePath> find() { return ToolWrapper::findTool({"meson.py", "meson"}); } diff --git a/src/plugins/mesonprojectmanager/exewrappers/ninjawrapper.h b/src/plugins/mesonprojectmanager/exewrappers/ninjawrapper.h index 486068b29e..a67a436bf1 100644 --- a/src/plugins/mesonprojectmanager/exewrappers/ninjawrapper.h +++ b/src/plugins/mesonprojectmanager/exewrappers/ninjawrapper.h @@ -14,7 +14,7 @@ class NinjaWrapper final : public ToolWrapper public: using ToolWrapper::ToolWrapper; - static inline Utils::optional<Utils::FilePath> find() + static inline std::optional<Utils::FilePath> find() { return ToolWrapper::findTool({"ninja", "ninja-build"}); } diff --git a/src/plugins/mesonprojectmanager/exewrappers/toolwrapper.cpp b/src/plugins/mesonprojectmanager/exewrappers/toolwrapper.cpp index 87102d28da..8e59b7d780 100644 --- a/src/plugins/mesonprojectmanager/exewrappers/toolwrapper.cpp +++ b/src/plugins/mesonprojectmanager/exewrappers/toolwrapper.cpp @@ -49,7 +49,7 @@ Version ToolWrapper::read_version(const Utils::FilePath &toolPath) return {}; } -Utils::optional<Utils::FilePath> ToolWrapper::findTool(const QStringList &exeNames) +std::optional<Utils::FilePath> ToolWrapper::findTool(const QStringList &exeNames) { using namespace Utils; Environment systemEnvironment = Environment::systemEnvironment(); @@ -58,7 +58,7 @@ Utils::optional<Utils::FilePath> ToolWrapper::findTool(const QStringList &exeNam if (exe_path.exists()) return exe_path; } - return Utils::nullopt; + return std::nullopt; } } // namespace Internal diff --git a/src/plugins/mesonprojectmanager/exewrappers/toolwrapper.h b/src/plugins/mesonprojectmanager/exewrappers/toolwrapper.h index 3f3e59c82a..2700b1fa81 100644 --- a/src/plugins/mesonprojectmanager/exewrappers/toolwrapper.h +++ b/src/plugins/mesonprojectmanager/exewrappers/toolwrapper.h @@ -16,6 +16,8 @@ #include <QVariant> #include <QVariantMap> +#include <optional> + namespace MesonProjectManager { namespace Internal { @@ -64,7 +66,7 @@ public: static Version read_version(const Utils::FilePath &toolPath); - static Utils::optional<Utils::FilePath> findTool(const QStringList &exeNames); + static std::optional<Utils::FilePath> findTool(const QStringList &exeNames); template<typename T> friend QVariantMap toVariantMap(const T &); diff --git a/src/plugins/mesonprojectmanager/machinefiles/machinefilemanager.cpp b/src/plugins/mesonprojectmanager/machinefiles/machinefilemanager.cpp index 67169f0812..0bfb482049 100644 --- a/src/plugins/mesonprojectmanager/machinefiles/machinefilemanager.cpp +++ b/src/plugins/mesonprojectmanager/machinefiles/machinefilemanager.cpp @@ -9,13 +9,14 @@ #include <coreplugin/icore.h> -#include <utils/optional.h> #include <utils/qtcassert.h> #include <QDir> #include <QFile> #include <QRegularExpression> +#include <optional> + namespace MesonProjectManager { namespace Internal { diff --git a/src/plugins/mesonprojectmanager/mesoninfoparser/buildoptions.h b/src/plugins/mesonprojectmanager/mesoninfoparser/buildoptions.h index bcc5cc220b..bde77dd723 100644 --- a/src/plugins/mesonprojectmanager/mesoninfoparser/buildoptions.h +++ b/src/plugins/mesonprojectmanager/mesoninfoparser/buildoptions.h @@ -4,7 +4,6 @@ #pragma once #include <utils/fileutils.h> -#include <utils/optional.h> #include <QCheckBox> #include <QComboBox> @@ -13,6 +12,8 @@ #include <QSpinBox> #include <QVariant> +#include <optional> + namespace MesonProjectManager { namespace Internal { @@ -58,7 +59,7 @@ struct BuildOption const QString name; const QString section; const QString description; - const Utils::optional<QString> subproject; + const std::optional<QString> subproject; virtual ~BuildOption() {} virtual QVariant value() const = 0; virtual QString valueStr() const = 0; @@ -79,8 +80,8 @@ struct BuildOption : name{name.contains(":") ? name.split(":").last() : name} , section{section} , description{description} - , subproject{name.contains(":") ? Utils::optional<QString>(name.split(":").first()) - : Utils::nullopt} + , subproject{name.contains(":") ? std::optional<QString>(name.split(":").first()) + : std::nullopt} {} }; // namespace Internal diff --git a/src/plugins/mesonprojectmanager/mesoninfoparser/mesoninfoparser.h b/src/plugins/mesonprojectmanager/mesoninfoparser/mesoninfoparser.h index 494a8acf2b..6833ea253e 100644 --- a/src/plugins/mesonprojectmanager/mesoninfoparser/mesoninfoparser.h +++ b/src/plugins/mesonprojectmanager/mesoninfoparser/mesoninfoparser.h @@ -12,7 +12,8 @@ #include "target.h" #include <utils/fileutils.h> -#include <utils/optional.h> + +#include <optional> namespace MesonProjectManager { namespace Internal { @@ -26,7 +27,7 @@ struct Result TargetsList targets; BuildOptionsList buildOptions; std::vector<Utils::FilePath> buildSystemFiles; - Utils::optional<MesonInfo> mesonInfo; + std::optional<MesonInfo> mesonInfo; }; inline Result parse(const QString &buildDir) @@ -43,7 +44,7 @@ inline Result parse(const QByteArray &data) return {TargetParser{json}.targetList(), BuildOptionsParser{json}.takeBuildOptions(), BuildSystemFilesParser{json}.files(), - Utils::nullopt}; + std::nullopt}; } inline Result parse(QIODevice *introFile) @@ -57,7 +58,7 @@ inline Result parse(QIODevice *introFile) } return {}; } -inline Utils::optional<MesonInfo> mesonInfo(const QString &buildDir) +inline std::optional<MesonInfo> mesonInfo(const QString &buildDir) { return InfoParser{buildDir}.info(); } diff --git a/src/plugins/mesonprojectmanager/mesoninfoparser/parsers/buildsystemfilesparser.h b/src/plugins/mesonprojectmanager/mesoninfoparser/parsers/buildsystemfilesparser.h index 0130906697..0856dac4ee 100644 --- a/src/plugins/mesonprojectmanager/mesoninfoparser/parsers/buildsystemfilesparser.h +++ b/src/plugins/mesonprojectmanager/mesoninfoparser/parsers/buildsystemfilesparser.h @@ -20,7 +20,7 @@ namespace Internal { class BuildSystemFilesParser { std::vector<Utils::FilePath> m_files; - static void appendFiles(const Utils::optional<QJsonArray> &arr, std::vector<Utils::FilePath> &dest) + static void appendFiles(const std::optional<QJsonArray> &arr, std::vector<Utils::FilePath> &dest) { if (arr) std::transform(std::cbegin(*arr), diff --git a/src/plugins/mesonprojectmanager/mesoninfoparser/parsers/common.h b/src/plugins/mesonprojectmanager/mesoninfoparser/parsers/common.h index 67d79e0c85..7537acaa60 100644 --- a/src/plugins/mesonprojectmanager/mesoninfoparser/parsers/common.h +++ b/src/plugins/mesonprojectmanager/mesoninfoparser/parsers/common.h @@ -3,14 +3,14 @@ #pragma once -#include <utils/optional.h> - #include <QFile> #include <QJsonArray> #include <QJsonDocument> #include <QJsonObject> #include <QJsonValue> +#include <optional> + namespace MesonProjectManager { namespace Internal { @@ -45,7 +45,7 @@ inline QJsonObject load<QJsonObject>(const QJsonValueRef &ref) } template<typename T> -inline Utils::optional<T> load(const QString &jsonFile) +inline std::optional<T> load(const QString &jsonFile) { QFile js(jsonFile); js.open(QIODevice::ReadOnly | QIODevice::Text); @@ -53,40 +53,40 @@ inline Utils::optional<T> load(const QString &jsonFile) auto data = js.readAll(); return load<T>(QJsonDocument::fromJson(data)); } - return Utils::nullopt; + return std::nullopt; } template<typename T> -inline Utils::optional<T> get(const QJsonObject &obj, const QString &name); +inline std::optional<T> get(const QJsonObject &obj, const QString &name); template<> -inline Utils::optional<QJsonArray> get<QJsonArray>(const QJsonObject &obj, const QString &name) +inline std::optional<QJsonArray> get<QJsonArray>(const QJsonObject &obj, const QString &name) { if (obj.contains(name)) { auto child = obj[name]; if (child.isArray()) return child.toArray(); } - return Utils::nullopt; + return std::nullopt; } template<> -inline Utils::optional<QJsonObject> get<QJsonObject>(const QJsonObject &obj, const QString &name) +inline std::optional<QJsonObject> get<QJsonObject>(const QJsonObject &obj, const QString &name) { if (obj.contains(name)) { auto child = obj[name]; if (child.isObject()) return child.toObject(); } - return Utils::nullopt; + return std::nullopt; } template<typename T, typename... Strings> -inline Utils::optional<T> get(const QJsonObject &obj, const QString &firstPath, const Strings &...path) +inline std::optional<T> get(const QJsonObject &obj, const QString &firstPath, const Strings &...path) { if (obj.contains(firstPath)) return get<T>(obj[firstPath].toObject(), path...); - return Utils::nullopt; + return std::nullopt; } } // namespace Internal diff --git a/src/plugins/mesonprojectmanager/mesoninfoparser/target.h b/src/plugins/mesonprojectmanager/mesoninfoparser/target.h index e55d7b5d35..8b5b5a4b8c 100644 --- a/src/plugins/mesonprojectmanager/mesoninfoparser/target.h +++ b/src/plugins/mesonprojectmanager/mesoninfoparser/target.h @@ -5,11 +5,12 @@ #include <utils/algorithm.h> #include <utils/fileutils.h> -#include <utils/optional.h> #include <QDir> #include <QVariant> +#include <optional> + namespace MesonProjectManager { namespace Internal { @@ -56,7 +57,7 @@ struct Target const QString definedIn; const QStringList fileName; const QStringList extraFiles; - const Utils::optional<QString> subproject; + const std::optional<QString> subproject; const SourceGroupList sources; static inline QString fullName(const Utils::FilePath &srcDir, const Target &target) @@ -104,8 +105,8 @@ struct Target , definedIn{QDir::cleanPath(definedIn)} , fileName{cleanPath(std::move(fileName))} , extraFiles{cleanPath(std::move(extraFiles))} - , subproject{subproject.isNull() ? Utils::nullopt - : Utils::optional<QString>{std::move(subproject)}} + , subproject{subproject.isNull() ? std::nullopt + : std::optional<QString>{std::move(subproject)}} , sources{std::move(sources)} {} }; diff --git a/src/plugins/mesonprojectmanager/project/buildoptions/optionsmodel/buildoptionsmodel.h b/src/plugins/mesonprojectmanager/project/buildoptions/optionsmodel/buildoptionsmodel.h index 8ee9fe1fef..895a346ff4 100644 --- a/src/plugins/mesonprojectmanager/project/buildoptions/optionsmodel/buildoptionsmodel.h +++ b/src/plugins/mesonprojectmanager/project/buildoptions/optionsmodel/buildoptionsmodel.h @@ -49,7 +49,7 @@ public: inline const QString &name() const { return m_currentValue->name; } inline const QString §ion() const { return m_currentValue->section; } inline const QString &description() const { return m_currentValue->description; } - inline const Utils::optional<QString> &subproject() const + inline const std::optional<QString> &subproject() const { return m_currentValue->subproject; }; diff --git a/src/plugins/mesonprojectmanager/project/mesonprojectparser.cpp b/src/plugins/mesonprojectmanager/project/mesonprojectparser.cpp index dae9b03355..28073d3478 100644 --- a/src/plugins/mesonprojectmanager/project/mesonprojectparser.cpp +++ b/src/plugins/mesonprojectmanager/project/mesonprojectparser.cpp @@ -13,12 +13,13 @@ #include <projectexplorer/projectexplorer.h> #include <utils/fileinprojectfinder.h> -#include <utils/optional.h> #include <utils/runextensions.h> #include <QStringList> #include <QTextStream> +#include <optional> + namespace MesonProjectManager { namespace Internal { @@ -29,21 +30,21 @@ struct CompilerArgs ProjectExplorer::Macros macros; }; -inline Utils::optional<QString> extractValueIfMatches(const QString &arg, +inline std::optional<QString> extractValueIfMatches(const QString &arg, const QStringList &candidates) { for (const auto &flag : candidates) { if (arg.startsWith(flag)) return arg.mid(flag.length()); } - return Utils::nullopt; + return std::nullopt; } -inline Utils::optional<QString> extractInclude(const QString &arg) +inline std::optional<QString> extractInclude(const QString &arg) { return extractValueIfMatches(arg, {"-I", "/I", "-isystem", "-imsvc", "/imsvc"}); } -inline Utils::optional<ProjectExplorer::Macro> extractMacro(const QString &arg) +inline std::optional<ProjectExplorer::Macro> extractMacro(const QString &arg) { auto define = extractValueIfMatches(arg, {"-D", "/D"}); if (define) @@ -51,7 +52,7 @@ inline Utils::optional<ProjectExplorer::Macro> extractMacro(const QString &arg) auto undef = extractValueIfMatches(arg, {"-U", "/U"}); if (undef) return ProjectExplorer::Macro(undef->toLatin1(), ProjectExplorer::MacroType::Undefine); - return Utils::nullopt; + return std::nullopt; } CompilerArgs splitArgs(const QStringList &args) diff --git a/src/plugins/mesonprojectmanager/project/outputparsers/ninjaparser.cpp b/src/plugins/mesonprojectmanager/project/outputparsers/ninjaparser.cpp index 61ebb101d4..763459f538 100644 --- a/src/plugins/mesonprojectmanager/project/outputparsers/ninjaparser.cpp +++ b/src/plugins/mesonprojectmanager/project/outputparsers/ninjaparser.cpp @@ -10,7 +10,7 @@ namespace Internal { NinjaParser::NinjaParser() {} -Utils::optional<int> NinjaParser::extractProgress(const QString &line) +std::optional<int> NinjaParser::extractProgress(const QString &line) { auto progress = m_progressRegex.match(line); if (progress.hasMatch()) { @@ -18,7 +18,7 @@ Utils::optional<int> NinjaParser::extractProgress(const QString &line) auto pos = progress.captured(1).toInt(); return pos * 100 / total; } - return Utils::nullopt; + return std::nullopt; } void NinjaParser::setSourceDirectory(const Utils::FilePath &sourceDir) diff --git a/src/plugins/mesonprojectmanager/project/outputparsers/ninjaparser.h b/src/plugins/mesonprojectmanager/project/outputparsers/ninjaparser.h index 6acd265ba6..b77e130526 100644 --- a/src/plugins/mesonprojectmanager/project/outputparsers/ninjaparser.h +++ b/src/plugins/mesonprojectmanager/project/outputparsers/ninjaparser.h @@ -6,10 +6,10 @@ #include <projectexplorer/ioutputparser.h> #include <projectexplorer/task.h> -#include <utils/optional.h> - #include <QRegularExpression> +#include <optional> + namespace MesonProjectManager { namespace Internal { @@ -17,7 +17,7 @@ class NinjaParser final : public ProjectExplorer::OutputTaskParser { Q_OBJECT QRegularExpression m_progressRegex{R"(^\[(\d+)/(\d+)\])"}; - Utils::optional<int> extractProgress(const QString &line); + std::optional<int> extractProgress(const QString &line); public: NinjaParser(); diff --git a/src/plugins/mesonprojectmanager/project/projecttree/mesonprojectnodes.h b/src/plugins/mesonprojectmanager/project/projecttree/mesonprojectnodes.h index 80e4064f8f..d248807a80 100644 --- a/src/plugins/mesonprojectmanager/project/projecttree/mesonprojectnodes.h +++ b/src/plugins/mesonprojectmanager/project/projecttree/mesonprojectnodes.h @@ -34,7 +34,7 @@ class MesonFileNode : public ProjectExplorer::ProjectNode public: MesonFileNode(const Utils::FilePath &file); bool showInSimpleTree() const final { return false; } - Utils::optional<Utils::FilePath> visibleAfterAddFileAction() const override + std::optional<Utils::FilePath> visibleAfterAddFileAction() const override { return filePath().pathAppended("meson.build"); } diff --git a/src/plugins/mesonprojectmanager/settings/tools/toolitemsettings.cpp b/src/plugins/mesonprojectmanager/settings/tools/toolitemsettings.cpp index cac4180a3c..5492183a07 100644 --- a/src/plugins/mesonprojectmanager/settings/tools/toolitemsettings.cpp +++ b/src/plugins/mesonprojectmanager/settings/tools/toolitemsettings.cpp @@ -31,14 +31,14 @@ ToolItemSettings::~ToolItemSettings() void ToolItemSettings::load(ToolTreeItem *item) { if (item) { - m_currentId = Utils::nullopt; + m_currentId = std::nullopt; ui->mesonNameLineEdit->setDisabled(item->isAutoDetected()); ui->mesonNameLineEdit->setText(item->name()); ui->mesonPathChooser->setDisabled(item->isAutoDetected()); ui->mesonPathChooser->setFilePath(item->executable()); m_currentId = item->id(); } else { - m_currentId = Utils::nullopt; + m_currentId = std::nullopt; } } diff --git a/src/plugins/mesonprojectmanager/settings/tools/toolitemsettings.h b/src/plugins/mesonprojectmanager/settings/tools/toolitemsettings.h index faae7c1185..3d1407622f 100644 --- a/src/plugins/mesonprojectmanager/settings/tools/toolitemsettings.h +++ b/src/plugins/mesonprojectmanager/settings/tools/toolitemsettings.h @@ -5,10 +5,11 @@ #include <utils/id.h> #include <utils/fileutils.h> -#include <utils/optional.h> #include <QWidget> +#include <optional> + namespace MesonProjectManager { namespace Internal { @@ -29,7 +30,7 @@ public: private: Ui::ToolItemSettings *ui; - Utils::optional<Utils::Id> m_currentId{Utils::nullopt}; + std::optional<Utils::Id> m_currentId{std::nullopt}; }; } // namespace Internal diff --git a/src/plugins/mesonprojectmanager/settings/tools/tooltreeitem.h b/src/plugins/mesonprojectmanager/settings/tools/tooltreeitem.h index 4420f57571..8c02132510 100644 --- a/src/plugins/mesonprojectmanager/settings/tools/tooltreeitem.h +++ b/src/plugins/mesonprojectmanager/settings/tools/tooltreeitem.h @@ -8,12 +8,13 @@ #include <utils/fileutils.h> #include <utils/id.h> -#include <utils/optional.h> #include <utils/treemodel.h> #include <QCoreApplication> #include <QString> +#include <optional> + namespace MesonProjectManager { namespace Internal { diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h index 2aa7c4d336..79ae4a60bc 100644 --- a/src/plugins/projectexplorer/buildstep.h +++ b/src/plugins/projectexplorer/buildstep.h @@ -8,7 +8,6 @@ #include "buildconfiguration.h" #include "projectexplorer_export.h" -#include <utils/optional.h> #include <utils/qtcassert.h> #include <QWidget> @@ -16,6 +15,7 @@ #include <atomic> #include <functional> #include <memory> +#include <optional> namespace Utils { class Environment; @@ -134,7 +134,7 @@ private: bool m_widgetExpandedByDefault = true; bool m_runInGuiThread = true; bool m_addMacroExpander = false; - Utils::optional<bool> m_wasExpanded; + std::optional<bool> m_wasExpanded; std::function<QString()> m_summaryUpdater; QString m_summaryText; diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp index 9275072256..3461b7e7c4 100644 --- a/src/plugins/projectexplorer/gcctoolchain.cpp +++ b/src/plugins/projectexplorer/gcctoolchain.cpp @@ -469,7 +469,7 @@ ToolChain::MacroInspectionRunner GccToolChain::createMacroInspectionRunner() con QStringList allFlags = platformCodeGenFlags + flags; // add only cxxflags is empty? QStringList arguments = gccPredefinedMacrosOptions(lang) + filteredFlags(allFlags, true); arguments = reinterpretOptions(arguments); - const Utils::optional<MacroInspectionReport> cachedMacros = macroCache->check(arguments); + const std::optional<MacroInspectionReport> cachedMacros = macroCache->check(arguments); if (cachedMacros) return cachedMacros.value(); @@ -616,7 +616,7 @@ HeaderPaths GccToolChain::builtInHeaderPaths(const Utils::Environment &env, if (!originalTargetTriple.isEmpty()) arguments << "-target" << originalTargetTriple; - const Utils::optional<HeaderPaths> cachedPaths = headerCache->check(qMakePair(env, arguments)); + const std::optional<HeaderPaths> cachedPaths = headerCache->check(qMakePair(env, arguments)); if (cachedPaths) return cachedPaths.value(); diff --git a/src/plugins/projectexplorer/gcctoolchain.h b/src/plugins/projectexplorer/gcctoolchain.h index 71df6ac75d..e17c79d3ec 100644 --- a/src/plugins/projectexplorer/gcctoolchain.h +++ b/src/plugins/projectexplorer/gcctoolchain.h @@ -11,10 +11,10 @@ #include "headerpath.h" #include <utils/fileutils.h> -#include <utils/optional.h> #include <functional> #include <memory> +#include <optional> namespace ProjectExplorer { @@ -222,7 +222,7 @@ protected: private: // "resolved" on macOS from /usr/bin/clang(++) etc to <DeveloperDir>/usr/bin/clang(++) // which is used for comparison with matchesCompileCommand - mutable Utils::optional<Utils::FilePath> m_resolvedCompilerCommand; + mutable std::optional<Utils::FilePath> m_resolvedCompilerCommand; QByteArray m_parentToolChainId; QMetaObject::Connection m_mingwToolchainAddedConnection; QMetaObject::Connection m_thisToolchainRemovedConnection; diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizard.cpp b/src/plugins/projectexplorer/jsonwizard/jsonwizard.cpp index 6dbfb6a78c..89fa5aed0c 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonwizard.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonwizard.cpp @@ -493,7 +493,7 @@ void JsonWizard::openProjectForNode(Node *node) } QTC_ASSERT(projNode, return); - Utils::optional<FilePath> projFilePath = projNode->visibleAfterAddFileAction(); + std::optional<FilePath> projFilePath = projNode->visibleAfterAddFileAction(); if (projFilePath && !Core::EditorManager::openEditor(projFilePath.value())) { auto errorMessage = QCoreApplication::translate("ProjectExplorer::JsonWizard", diff --git a/src/plugins/projectexplorer/kit.cpp b/src/plugins/projectexplorer/kit.cpp index e1ccfe35d1..9ea9c6606c 100644 --- a/src/plugins/projectexplorer/kit.cpp +++ b/src/plugins/projectexplorer/kit.cpp @@ -16,7 +16,6 @@ #include <utils/filepath.h> #include <utils/icon.h> #include <utils/macroexpander.h> -#include <utils/optional.h> #include <utils/qtcassert.h> #include <utils/stringutils.h> #include <utils/utilsicons.h> @@ -26,6 +25,7 @@ #include <QUuid> #include <numeric> +#include <optional> using namespace Core; using namespace Utils; @@ -118,7 +118,7 @@ public: QHash<Id, QVariant> m_data; QSet<Id> m_sticky; QSet<Id> m_mutable; - optional<QSet<Id>> m_irrelevantAspects; + std::optional<QSet<Id>> m_irrelevantAspects; MacroExpander m_macroExpander; }; diff --git a/src/plugins/projectexplorer/makestep.cpp b/src/plugins/projectexplorer/makestep.cpp index b29c964206..0d918967a4 100644 --- a/src/plugins/projectexplorer/makestep.cpp +++ b/src/plugins/projectexplorer/makestep.cpp @@ -17,7 +17,6 @@ #include <utils/environment.h> #include <utils/hostosinfo.h> #include <utils/layoutbuilder.h> -#include <utils/optional.h> #include <utils/pathchooser.h> #include <utils/qtcprocess.h> #include <utils/utilsicons.h> @@ -29,6 +28,8 @@ #include <QLineEdit> #include <QThread> +#include <optional> + using namespace Core; using namespace Utils; @@ -197,12 +198,12 @@ bool MakeStep::jobCountOverridesMakeflags() const return m_overrideMakeflagsAspect->value(); } -static Utils::optional<int> argsJobCount(const QString &str) +static std::optional<int> argsJobCount(const QString &str) { const QStringList args = ProcessArgs::splitArgs(str, HostOsInfo::hostOs()); const int argIndex = Utils::indexOf(args, [](const QString &arg) { return arg.startsWith("-j"); }); if (argIndex == -1) - return Utils::nullopt; + return std::nullopt; QString arg = args.at(argIndex); bool requireNumber = false; // -j [4] as separate arguments (or no value) @@ -217,8 +218,8 @@ static Utils::optional<int> argsJobCount(const QString &str) bool ok = false; const int res = arg.toInt(&ok); if (!ok && requireNumber) - return Utils::nullopt; - return Utils::make_optional(ok && res > 0 ? res : 1000); + return std::nullopt; + return std::make_optional(ok && res > 0 ? res : 1000); } bool MakeStep::makeflagsJobCountMismatch() const @@ -226,7 +227,7 @@ bool MakeStep::makeflagsJobCountMismatch() const const Environment env = makeEnvironment(); if (!env.hasKey(MAKEFLAGS)) return false; - Utils::optional<int> makeFlagsJobCount = argsJobCount(env.expandedValueForKey(MAKEFLAGS)); + std::optional<int> makeFlagsJobCount = argsJobCount(env.expandedValueForKey(MAKEFLAGS)); return makeFlagsJobCount.has_value() && *makeFlagsJobCount != m_userJobCountAspect->value(); } diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index cbf4596599..e33c264ab4 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -15,7 +15,6 @@ #include <utils/algorithm.h> #include <utils/environment.h> #include <utils/hostosinfo.h> -#include <utils/optional.h> #include <utils/pathchooser.h> #include <utils/qtcassert.h> #include <utils/qtcprocess.h> @@ -39,6 +38,8 @@ #include <QComboBox> #include <QFormLayout> +#include <optional> + using namespace Utils; #define KEY_ROOT "ProjectExplorer.MsvcToolChain." @@ -200,7 +201,7 @@ static QString windowsProgramFilesDir() return QDir::fromNativeSeparators(qtcEnvironmentVariable(programFilesC)); } -static Utils::optional<VisualStudioInstallation> installationFromPathAndVersion( +static std::optional<VisualStudioInstallation> installationFromPathAndVersion( const QString &installationPath, const QVersionNumber &version) { QString vcVarsPath = QDir::fromNativeSeparators(installationPath); @@ -215,7 +216,7 @@ static Utils::optional<VisualStudioInstallation> installationFromPathAndVersion( if (!QFileInfo(vcVarsAllPath).isFile()) { qWarning().noquote() << "Unable to find MSVC setup script " << QDir::toNativeSeparators(vcVarsPath) << " in version " << version; - return Utils::nullopt; + return std::nullopt; } const QString versionString = version.toString(); @@ -229,7 +230,7 @@ static Utils::optional<VisualStudioInstallation> installationFromPathAndVersion( } // Detect build tools introduced with MSVC2017 -static Utils::optional<VisualStudioInstallation> detectCppBuildTools2017() +static std::optional<VisualStudioInstallation> detectCppBuildTools2017() { const QString installPath = windowsProgramFilesDir() + "/Microsoft Visual Studio/2017/BuildTools"; @@ -237,7 +238,7 @@ static Utils::optional<VisualStudioInstallation> detectCppBuildTools2017() const QString vcVarsAllPath = vcVarsPath + "/vcvarsall.bat"; if (!QFileInfo::exists(vcVarsAllPath)) - return Utils::nullopt; + return std::nullopt; VisualStudioInstallation installation; installation.path = installPath; @@ -314,7 +315,7 @@ static QVector<VisualStudioInstallation> detectVisualStudioFromVsWhere(const QSt continue; } const QString installationPath = value.toString(); - Utils::optional<VisualStudioInstallation> installation + std::optional<VisualStudioInstallation> installation = installationFromPathAndVersion(installationPath, version); if (installation) @@ -341,7 +342,7 @@ static QVector<VisualStudioInstallation> detectVisualStudioFromRegistry() if (!version.isNull()) { const QString installationPath = fixRegistryPath(vsRegistry.value(vsName).toString()); - Utils::optional<VisualStudioInstallation> installation + std::optional<VisualStudioInstallation> installation = installationFromPathAndVersion(installationPath, version); if (installation) result.append(*installation); @@ -747,7 +748,7 @@ void MsvcToolChain::environmentModifications( Utils::Environment outEnv; QMap<QString, QString> envPairs; Utils::EnvironmentItems diff; - Utils::optional<QString> error = generateEnvironmentSettings(inEnv, + std::optional<QString> error = generateEnvironmentSettings(inEnv, vcvarsBat, varsBatArg, envPairs); @@ -1034,7 +1035,7 @@ ToolChain::MacroInspectionRunner MsvcToolChain::createMacroInspectionRunner() co return hasFlagEffectOnMacros(arg); }); - const Utils::optional<MacroInspectionReport> cachedMacros = macroCache->check(filteredFlags); + const std::optional<MacroInspectionReport> cachedMacros = macroCache->check(filteredFlags); if (cachedMacros) return cachedMacros.value(); @@ -2072,7 +2073,7 @@ void MsvcToolChain::cancelMsvcToolChainDetection() envModThreadPool()->clear(); } -Utils::optional<QString> MsvcToolChain::generateEnvironmentSettings(const Utils::Environment &env, +std::optional<QString> MsvcToolChain::generateEnvironmentSettings(const Utils::Environment &env, const QString &batchFile, const QString &batchArgs, QMap<QString, QString> &envPairs) @@ -2163,7 +2164,7 @@ Utils::optional<QString> MsvcToolChain::generateEnvironmentSettings(const Utils: } } - return Utils::nullopt; + return std::nullopt; } bool MsvcToolChainFactory::canCreate() const diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h index febc281d0f..cfbacad57b 100644 --- a/src/plugins/projectexplorer/msvctoolchain.h +++ b/src/plugins/projectexplorer/msvctoolchain.h @@ -11,7 +11,8 @@ #include <QFutureWatcher> #include <utils/environment.h> -#include <utils/optional.h> + +#include <optional> QT_FORWARD_DECLARE_CLASS(QLabel) QT_FORWARD_DECLARE_CLASS(QComboBox) @@ -78,7 +79,7 @@ public: int priority() const override; static void cancelMsvcToolChainDetection(); - static Utils::optional<QString> generateEnvironmentSettings(const Utils::Environment &env, + static std::optional<QString> generateEnvironmentSettings(const Utils::Environment &env, const QString &batchFile, const QString &batchArgs, QMap<QString, QString> &envPairs); @@ -109,7 +110,7 @@ protected: struct GenerateEnvResult { - Utils::optional<QString> error; + std::optional<QString> error; Utils::EnvironmentItems environmentItems; }; static void environmentModifications(QFutureInterface<GenerateEnvResult> &future, diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index cbcbf06e74..e81ad228c3 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -272,12 +272,12 @@ const char CUSTOM_PARSER_PREFIX_KEY[] = "ProjectExplorer/Settings/CustomParser"; } // namespace Constants -static Utils::optional<Environment> sysEnv(const Project *) +static std::optional<Environment> sysEnv(const Project *) { return Environment::systemEnvironment(); } -static Utils::optional<Environment> buildEnv(const Project *project) +static std::optional<Environment> buildEnv(const Project *project) { if (!project || !project->activeTarget() || !project->activeTarget()->activeBuildConfiguration()) return {}; @@ -500,7 +500,7 @@ public: void openRecentProject(const FilePath &filePath); void removeFromRecentProjects(const FilePath &filePath); void updateUnloadProjectMenu(); - using EnvironmentGetter = std::function<Utils::optional<Environment>(const Project *project)>; + using EnvironmentGetter = std::function<std::optional<Environment>(const Project *project)>; void openTerminalHere(const EnvironmentGetter &env); void openTerminalHereWithRunEnv(); diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index 4f159b60ac..98dc5850e4 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -11,9 +11,9 @@ #include <utils/fileutils.h> #include <utils/id.h> -#include <utils/optional.h> #include <functional> +#include <optional> #include <variant> namespace Utils { class MimeType; } @@ -361,8 +361,8 @@ public: virtual bool addSubProject(const Utils::FilePath &proFile); virtual QStringList subProjectFileNamePatterns() const; virtual bool removeSubProject(const Utils::FilePath &proFilePath); - virtual Utils::optional<Utils::FilePath> visibleAfterAddFileAction() const { - return Utils::nullopt; + virtual std::optional<Utils::FilePath> visibleAfterAddFileAction() const { + return std::nullopt; } bool isFolderNodeType() const override { return false; } diff --git a/src/plugins/projectexplorer/toolchaincache.h b/src/plugins/projectexplorer/toolchaincache.h index 3c35d00914..22e1e690cc 100644 --- a/src/plugins/projectexplorer/toolchaincache.h +++ b/src/plugins/projectexplorer/toolchaincache.h @@ -8,7 +8,7 @@ #include <QPair> #include <QVector> -#include <utils/optional.h> +#include <optional> namespace ProjectExplorer { @@ -56,7 +56,7 @@ public: } } - Utils::optional<T> check(const K &key) + std::optional<T> check(const K &key) { QMutexLocker locker(&m_mutex); return checkImpl(key); @@ -69,7 +69,7 @@ public: } private: - Utils::optional<T> checkImpl(const K &key) + std::optional<T> checkImpl(const K &key) { auto it = std::stable_partition(m_cache.begin(), m_cache.end(), [&](const CacheItem &ci) { return ci.first != key; diff --git a/src/plugins/projectexplorer/userfileaccessor.cpp b/src/plugins/projectexplorer/userfileaccessor.cpp index f6d91b935b..f1057fe962 100644 --- a/src/plugins/projectexplorer/userfileaccessor.cpp +++ b/src/plugins/projectexplorer/userfileaccessor.cpp @@ -183,11 +183,11 @@ static QString generateSuffix(const QString &suffix) } // Return path to shared directory for .user files, create if necessary. -static inline Utils::optional<QString> defineExternalUserFileDir() +static inline std::optional<QString> defineExternalUserFileDir() { const char userFilePathVariable[] = "QTC_USER_FILE_PATH"; if (Q_LIKELY(!qtcEnvironmentVariableIsSet(userFilePathVariable))) - return nullopt; + return std::nullopt; const QFileInfo fi(qtcEnvironmentVariable(userFilePathVariable)); const QString path = fi.absoluteFilePath(); if (fi.isDir() || fi.isSymLink()) @@ -195,12 +195,12 @@ static inline Utils::optional<QString> defineExternalUserFileDir() if (fi.exists()) { qWarning() << userFilePathVariable << '=' << QDir::toNativeSeparators(path) << " points to an existing file"; - return nullopt; + return std::nullopt; } QDir dir; if (!dir.mkpath(path)) { qWarning() << "Cannot create: " << QDir::toNativeSeparators(path); - return nullopt; + return std::nullopt; } return path; } @@ -235,7 +235,7 @@ static QString makeRelative(QString path) // Return complete file path of the .user file. static FilePath externalUserFilePath(const Utils::FilePath &projectFilePath, const QString &suffix) { - static const optional<QString> externalUserFileDir = defineExternalUserFileDir(); + static const std::optional<QString> externalUserFileDir = defineExternalUserFileDir(); if (externalUserFileDir) { // Recreate the relative project file hierarchy under the shared directory. @@ -328,7 +328,7 @@ UserFileAccessor::merge(const MergingSettingsAccessor::SettingsMergeData &global const QVariant secondaryValue = local.secondary.value(key); if (mainValue.isNull() && secondaryValue.isNull()) - return nullopt; + return std::nullopt; if (isHouseKeepingKey(key) || global.key == USER_STICKY_KEYS_KEY) return qMakePair(key, mainValue); @@ -357,14 +357,14 @@ SettingsMergeFunction UserFileAccessor::userStickyTrackerFunction(QStringList &s const QVariant secondary = local.secondary.value(key); if (main.isNull()) // skip stuff not in main! - return nullopt; + return std::nullopt; if (isHouseKeepingKey(key)) return qMakePair(key, main); // Ignore house keeping keys: if (key == USER_STICKY_KEYS_KEY) - return nullopt; + return std::nullopt; // Track keys that changed in main from the value in secondary: if (main != secondary && !secondary.isNull() && !stickyKeys.contains(global.key)) diff --git a/src/plugins/qbsprojectmanager/qbssession.cpp b/src/plugins/qbsprojectmanager/qbssession.cpp index 050a5cf1be..9259f59a82 100644 --- a/src/plugins/qbsprojectmanager/qbssession.cpp +++ b/src/plugins/qbsprojectmanager/qbssession.cpp @@ -135,7 +135,7 @@ public: QEventLoop eventLoop; QJsonObject reply; QHash<QString, QStringList> generatedFilesForSources; - optional<Error> lastError; + std::optional<Error> lastError; State state = State::Inactive; }; @@ -215,7 +215,7 @@ QbsSession::~QbsSession() delete d; } -optional<QbsSession::Error> QbsSession::lastError() const +std::optional<QbsSession::Error> QbsSession::lastError() const { return d->lastError; } diff --git a/src/plugins/qbsprojectmanager/qbssession.h b/src/plugins/qbsprojectmanager/qbssession.h index ad49d86aca..8ad9972d6d 100644 --- a/src/plugins/qbsprojectmanager/qbssession.h +++ b/src/plugins/qbsprojectmanager/qbssession.h @@ -4,7 +4,6 @@ #pragma once #include <utils/fileutils.h> -#include <utils/optional.h> #include <QHash> #include <QJsonObject> @@ -14,6 +13,7 @@ #include <QVariant> #include <functional> +#include <optional> namespace ProjectExplorer { class Target; } @@ -102,7 +102,7 @@ public: enum class State { Initializing, Active, Inactive }; enum class Error { QbsFailedToStart, QbsQuit, ProtocolError, VersionMismatch }; - Utils::optional<Error> lastError() const; + std::optional<Error> lastError() const; static QString errorString(Error error); QJsonObject projectData() const; diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.cpp index f09b211c0e..02bacc2041 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.cpp @@ -449,7 +449,7 @@ void KeyframeItem::mousePressEvent(QGraphicsSceneMouseEvent *event) bool ok; m_firstPos = m_transform.inverted(&ok).map(event->scenePos()); if (!ok) - m_firstPos = Utils::nullopt; + m_firstPos = std::nullopt; SelectableItem::mousePressEvent(event); if (auto *curveItem = qgraphicsitem_cast<CurveItem *>(parentItem())) @@ -458,7 +458,7 @@ void KeyframeItem::mousePressEvent(QGraphicsSceneMouseEvent *event) void KeyframeItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { - m_firstPos = Utils::nullopt; + m_firstPos = std::nullopt; SelectableItem::mouseReleaseEvent(event); if (auto *curveItem = qgraphicsitem_cast<CurveItem *>(parentItem())) curveItem->setHandleVisibility(true); diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.h b/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.h index 2a8251d962..d02c1a9b23 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.h +++ b/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.h @@ -8,10 +8,10 @@ #include "keyframe.h" #include "selectableitem.h" -#include <utils/optional.h> - #include <QGraphicsObject> +#include <optional> + namespace QmlDesigner { class HandleItem; @@ -111,8 +111,8 @@ private: HandleItem *m_right; - Utils::optional< QPointF > m_firstPos; - Utils::optional< QPointF > m_validPos; + std::optional< QPointF > m_firstPos; + std::optional< QPointF > m_validPos; bool m_visibleOverride = true; diff --git a/src/plugins/qmldesigner/components/timelineeditor/timelinesettingsmodel.cpp b/src/plugins/qmldesigner/components/timelineeditor/timelinesettingsmodel.cpp index 7ad9d264cb..9aaa1a38cd 100644 --- a/src/plugins/qmldesigner/components/timelineeditor/timelinesettingsmodel.cpp +++ b/src/plugins/qmldesigner/components/timelineeditor/timelinesettingsmodel.cpp @@ -9,7 +9,6 @@ #include <variantproperty.h> #include <qmlvisualnode.h> -#include <utils/optional.h> #include <utils/qtcassert.h> #include <QComboBox> @@ -19,9 +18,11 @@ #include <QStyledItemDelegate> #include <QTimer> +#include <optional> + namespace QmlDesigner { -static void setDataForFixedFrame(QStandardItem *item, Utils::optional<int> fixedValue) +static void setDataForFixedFrame(QStandardItem *item, std::optional<int> fixedValue) { if (fixedValue) item->setData(fixedValue.value(), Qt::EditRole); @@ -172,7 +173,7 @@ void TimelineSettingsModel::setupDelegates(QAbstractItemView *view) view->setItemDelegate(new TimelineEditorDelegate); } -static Utils::optional<int> propertyValueForState(const ModelNode &modelNode, +static std::optional<int> propertyValueForState(const ModelNode &modelNode, QmlModelState state, const PropertyName &propertyName) { diff --git a/src/plugins/qmldesigner/designercore/imagecache/asynchronousexplicitimagecache.cpp b/src/plugins/qmldesigner/designercore/imagecache/asynchronousexplicitimagecache.cpp index f0aef75895..2c3446bbe3 100644 --- a/src/plugins/qmldesigner/designercore/imagecache/asynchronousexplicitimagecache.cpp +++ b/src/plugins/qmldesigner/designercore/imagecache/asynchronousexplicitimagecache.cpp @@ -93,7 +93,7 @@ void AsynchronousExplicitImageCache::clean() clearEntries(); } -Utils::optional<AsynchronousExplicitImageCache::RequestEntry> AsynchronousExplicitImageCache::getEntry() +std::optional<AsynchronousExplicitImageCache::RequestEntry> AsynchronousExplicitImageCache::getEntry() { std::unique_lock lock{m_mutex}; diff --git a/src/plugins/qmldesigner/designercore/imagecache/asynchronousimagecache.cpp b/src/plugins/qmldesigner/designercore/imagecache/asynchronousimagecache.cpp index 4cf140634c..6d08443e9e 100644 --- a/src/plugins/qmldesigner/designercore/imagecache/asynchronousimagecache.cpp +++ b/src/plugins/qmldesigner/designercore/imagecache/asynchronousimagecache.cpp @@ -123,7 +123,7 @@ void AsynchronousImageCache::clean() m_generator.clean(); } -Utils::optional<AsynchronousImageCache::Entry> AsynchronousImageCache::getEntry() +std::optional<AsynchronousImageCache::Entry> AsynchronousImageCache::getEntry() { std::unique_lock lock{m_mutex}; diff --git a/src/plugins/qmldesigner/designercore/imagecache/asynchronousimagefactory.cpp b/src/plugins/qmldesigner/designercore/imagecache/asynchronousimagefactory.cpp index d8c93fb98b..de738862a3 100644 --- a/src/plugins/qmldesigner/designercore/imagecache/asynchronousimagefactory.cpp +++ b/src/plugins/qmldesigner/designercore/imagecache/asynchronousimagefactory.cpp @@ -69,7 +69,7 @@ void AsynchronousImageFactory::waitForEntries() m_condition.wait(lock, [&] { return m_entries.size() || m_finishing; }); } -Utils::optional<AsynchronousImageFactory::Entry> AsynchronousImageFactory::getEntry() +std::optional<AsynchronousImageFactory::Entry> AsynchronousImageFactory::getEntry() { std::unique_lock lock{m_mutex}; diff --git a/src/plugins/qmldesigner/designercore/imagecache/asynchronousimagefactory.h b/src/plugins/qmldesigner/designercore/imagecache/asynchronousimagefactory.h index fe10d947bc..c7a25d1d47 100644 --- a/src/plugins/qmldesigner/designercore/imagecache/asynchronousimagefactory.h +++ b/src/plugins/qmldesigner/designercore/imagecache/asynchronousimagefactory.h @@ -5,12 +5,12 @@ #include "imagecacheauxiliarydata.h" -#include <utils/optional.h> #include <utils/smallstring.h> #include <condition_variable> #include <deque> #include <mutex> +#include <optional> #include <thread> namespace QmlDesigner { @@ -55,7 +55,7 @@ private: ImageCache::AuxiliaryData &&auxiliaryData); bool isRunning(); void waitForEntries(); - Utils::optional<Entry> getEntry(); + std::optional<Entry> getEntry(); void request(Utils::SmallStringView name, Utils::SmallStringView extraId, ImageCache::AuxiliaryData auxiliaryData, diff --git a/src/plugins/qmldesigner/designercore/imagecache/imagecachestorageinterface.h b/src/plugins/qmldesigner/designercore/imagecache/imagecachestorageinterface.h index 538261b0d1..00f4ce4ecb 100644 --- a/src/plugins/qmldesigner/designercore/imagecache/imagecachestorageinterface.h +++ b/src/plugins/qmldesigner/designercore/imagecache/imagecachestorageinterface.h @@ -7,16 +7,17 @@ #include <QImage> #include <sqlitetimestamp.h> -#include <utils/optional.h> #include <utils/smallstringview.h> +#include <optional> + namespace QmlDesigner { class ImageCacheStorageInterface { public: - using ImageEntry = Utils::optional<QImage>; - using IconEntry = Utils::optional<QIcon>; + using ImageEntry = std::optional<QImage>; + using IconEntry = std::optional<QIcon>; virtual ImageEntry fetchImage(Utils::SmallStringView name, Sqlite::TimeStamp minimumTimeStamp) const = 0; diff --git a/src/plugins/qmldesigner/designercore/include/asynchronousexplicitimagecache.h b/src/plugins/qmldesigner/designercore/include/asynchronousexplicitimagecache.h index 5b4e7bc787..9ac6d7a933 100644 --- a/src/plugins/qmldesigner/designercore/include/asynchronousexplicitimagecache.h +++ b/src/plugins/qmldesigner/designercore/include/asynchronousexplicitimagecache.h @@ -5,12 +5,11 @@ #include "asynchronousimagecacheinterface.h" -#include <utils/optional.h> - #include <condition_variable> #include <deque> #include <functional> #include <mutex> +#include <optional> #include <thread> namespace QmlDesigner { @@ -59,7 +58,7 @@ private: RequestType requestType = RequestType::Image; }; - Utils::optional<RequestEntry> getEntry(); + std::optional<RequestEntry> getEntry(); void addEntry(Utils::PathString &&name, Utils::SmallString &&extraId, ImageCache::CaptureImageCallback &&captureCallback, diff --git a/src/plugins/qmldesigner/designercore/include/asynchronousimagecache.h b/src/plugins/qmldesigner/designercore/include/asynchronousimagecache.h index 9eac8575cb..d547a0979e 100644 --- a/src/plugins/qmldesigner/designercore/include/asynchronousimagecache.h +++ b/src/plugins/qmldesigner/designercore/include/asynchronousimagecache.h @@ -5,12 +5,11 @@ #include "asynchronousimagecacheinterface.h" -#include <utils/optional.h> - #include <condition_variable> #include <deque> #include <functional> #include <mutex> +#include <optional> #include <thread> namespace QmlDesigner { @@ -69,7 +68,7 @@ private: RequestType requestType = RequestType::Image; }; - Utils::optional<Entry> getEntry(); + std::optional<Entry> getEntry(); void addEntry(Utils::PathString &&name, Utils::SmallString &&extraId, ImageCache::CaptureImageCallback &&captureCallback, diff --git a/src/plugins/qmldesigner/designercore/include/modelcache.h b/src/plugins/qmldesigner/designercore/include/modelcache.h index 39eae38890..63eef0d451 100644 --- a/src/plugins/qmldesigner/designercore/include/modelcache.h +++ b/src/plugins/qmldesigner/designercore/include/modelcache.h @@ -7,11 +7,11 @@ #include <model.h> -#include <utils/optional.h> - #include <QHash> #include <QQueue> +#include <optional> + namespace QmlDesigner { template<class DataType> @@ -42,7 +42,7 @@ public: } } - Utils::optional<DataType> take(Model *model) + std::optional<DataType> take(Model *model) { if (!m_content.contains(model)) return {}; diff --git a/src/plugins/qmldesigner/designercore/include/modelnode.h b/src/plugins/qmldesigner/designercore/include/modelnode.h index 448f49ebe6..319d692803 100644 --- a/src/plugins/qmldesigner/designercore/include/modelnode.h +++ b/src/plugins/qmldesigner/designercore/include/modelnode.h @@ -7,14 +7,13 @@ #include "abstractproperty.h" #include "qmldesignercorelib_global.h" -#include <utils/optional.h> - #include <QPointer> #include <QList> #include <QVector> #include <QVariant> #include <memory> +#include <optional> QT_BEGIN_NAMESPACE class QTextStream; @@ -178,8 +177,8 @@ public: static int variantUserType(); QVariant toVariant() const; - Utils::optional<QVariant> auxiliaryData(AuxiliaryDataKeyView key) const; - Utils::optional<QVariant> auxiliaryData(AuxiliaryDataType type, Utils::SmallStringView name) const; + std::optional<QVariant> auxiliaryData(AuxiliaryDataKeyView key) const; + std::optional<QVariant> auxiliaryData(AuxiliaryDataType type, Utils::SmallStringView name) const; QVariant auxiliaryDataWithDefault(AuxiliaryDataType type, Utils::SmallStringView name) const; QVariant auxiliaryDataWithDefault(AuxiliaryDataKeyView key) const; void setAuxiliaryData(AuxiliaryDataKeyView key, const QVariant &data) const; diff --git a/src/plugins/qmldesigner/designercore/include/nodemetainfo.h b/src/plugins/qmldesigner/designercore/include/nodemetainfo.h index f654f6f941..f379b3e206 100644 --- a/src/plugins/qmldesigner/designercore/include/nodemetainfo.h +++ b/src/plugins/qmldesigner/designercore/include/nodemetainfo.h @@ -11,12 +11,11 @@ #include <projectstorage/projectstoragetypes.h> #include <projectstorageids.h> -#include <utils/optional.h> - #include <QList> #include <QString> #include <QIcon> +#include <optional> #include <vector> QT_BEGIN_NAMESPACE @@ -170,7 +169,7 @@ private: private: TypeId m_typeId; NotNullPointer<const ProjectStorage<Sqlite::Database>> m_projectStorage = {}; - mutable Utils::optional<Storage::Info::Type> m_typeData; + mutable std::optional<Storage::Info::Type> m_typeData; QSharedPointer<class NodeMetaInfoPrivate> m_privateData; }; diff --git a/src/plugins/qmldesigner/designercore/include/propertymetainfo.h b/src/plugins/qmldesigner/designercore/include/propertymetainfo.h index a3fc6943b4..c216e5a6fe 100644 --- a/src/plugins/qmldesigner/designercore/include/propertymetainfo.h +++ b/src/plugins/qmldesigner/designercore/include/propertymetainfo.h @@ -9,11 +9,10 @@ #include <projectstorage/projectstoragetypes.h> #include <projectstorageids.h> -#include <utils/optional.h> - #include <QSharedPointer> #include <QString> +#include <optional> #include <vector> namespace QmlDesigner { @@ -50,7 +49,7 @@ private: PropertyName m_propertyName; PropertyDeclarationId m_id; NotNullPointer<const ProjectStorage<Sqlite::Database>> m_projectStorage; - mutable Utils::optional<Storage::Info::PropertyDeclaration> m_propertyData; + mutable std::optional<Storage::Info::PropertyDeclaration> m_propertyData; }; using PropertyMetaInfos = std::vector<PropertyMetaInfo>; diff --git a/src/plugins/qmldesigner/designercore/include/textmodifier.h b/src/plugins/qmldesigner/designercore/include/textmodifier.h index a9aa51133a..2e8bbd0ba1 100644 --- a/src/plugins/qmldesigner/designercore/include/textmodifier.h +++ b/src/plugins/qmldesigner/designercore/include/textmodifier.h @@ -7,12 +7,13 @@ #include <qmljs/qmljsdocument.h> #include <texteditor/tabsettings.h> -#include <utils/optional.h> #include <QObject> #include <QTextCursor> #include <QTextDocument> +#include <optional> + namespace TextEditor { class TabSettings; } namespace QmlDesigner { diff --git a/src/plugins/qmldesigner/designercore/model/internalnode.cpp b/src/plugins/qmldesigner/designercore/model/internalnode.cpp index 60b9b95473..87199c0c87 100644 --- a/src/plugins/qmldesigner/designercore/model/internalnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/internalnode.cpp @@ -52,7 +52,7 @@ auto find(Type &&auxiliaryDatas, AuxiliaryDataKeyView key) } // namespace -Utils::optional<QVariant> InternalNode::auxiliaryData(AuxiliaryDataKeyView key) const +std::optional<QVariant> InternalNode::auxiliaryData(AuxiliaryDataKeyView key) const { auto found = find(m_auxiliaryDatas, key); diff --git a/src/plugins/qmldesigner/designercore/model/internalnode_p.h b/src/plugins/qmldesigner/designercore/model/internalnode_p.h index 0600cee32c..7b0daa1d2e 100644 --- a/src/plugins/qmldesigner/designercore/model/internalnode_p.h +++ b/src/plugins/qmldesigner/designercore/model/internalnode_p.h @@ -12,7 +12,6 @@ #include "internalvariantproperty.h" #include <auxiliarydata.h> -#include <utils/optional.h> #include <projectstorageids.h> #include <utils/smallstring.h> @@ -22,11 +21,11 @@ #include <QStringList> #include <QWeakPointer> +#include <memory> +#include <optional> #include <type_traits> #include <vector> -#include <memory> - namespace QmlDesigner { namespace Internal { @@ -61,7 +60,7 @@ public: void setParentProperty(const InternalNodeAbstractProperty::Pointer &parent); void resetParentProperty(); - Utils::optional<QVariant> auxiliaryData(AuxiliaryDataKeyView key) const; + std::optional<QVariant> auxiliaryData(AuxiliaryDataKeyView key) const; bool setAuxiliaryData(AuxiliaryDataKeyView key, const QVariant &data); bool removeAuxiliaryData(AuxiliaryDataKeyView key); bool hasAuxiliaryData(AuxiliaryDataKeyView key) const; diff --git a/src/plugins/qmldesigner/designercore/model/modelnode.cpp b/src/plugins/qmldesigner/designercore/model/modelnode.cpp index 04f5276f84..c8306f53f3 100644 --- a/src/plugins/qmldesigner/designercore/model/modelnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/modelnode.cpp @@ -1038,7 +1038,7 @@ QVariant ModelNode::toVariant() const return QVariant::fromValue(*this); } -Utils::optional<QVariant> ModelNode::auxiliaryData(AuxiliaryDataKeyView key) const +std::optional<QVariant> ModelNode::auxiliaryData(AuxiliaryDataKeyView key) const { if (!isValid()) throw InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__); @@ -1046,7 +1046,7 @@ Utils::optional<QVariant> ModelNode::auxiliaryData(AuxiliaryDataKeyView key) con return m_internalNode->auxiliaryData(key); } -Utils::optional<QVariant> ModelNode::auxiliaryData(AuxiliaryDataType type, +std::optional<QVariant> ModelNode::auxiliaryData(AuxiliaryDataType type, Utils::SmallStringView name) const { return auxiliaryData({type, name}); diff --git a/src/plugins/qmldesigner/designercore/projectstorage/projectstorage.h b/src/plugins/qmldesigner/designercore/projectstorage/projectstorage.h index 13db42de19..1be507f76a 100644 --- a/src/plugins/qmldesigner/designercore/projectstorage/projectstorage.h +++ b/src/plugins/qmldesigner/designercore/projectstorage/projectstorage.h @@ -15,10 +15,10 @@ #include <sqlitetransaction.h> #include <utils/algorithm.h> -#include <utils/optional.h> #include <utils/set_algorithm.h> #include <algorithm> +#include <optional> #include <tuple> #include <type_traits> #include <utility> @@ -161,7 +161,7 @@ public: .template valueWithTransaction<PropertyDeclarationId>(typeId, propertyName); } - Utils::optional<Storage::Info::PropertyDeclaration> propertyDeclaration( + std::optional<Storage::Info::PropertyDeclaration> propertyDeclaration( PropertyDeclarationId propertyDeclarationId) const { return selectPropertyDeclarationForPropertyDeclarationIdStatement @@ -169,7 +169,7 @@ public: propertyDeclarationId); } - Utils::optional<Storage::Info::Type> type(TypeId typeId) const + std::optional<Storage::Info::Type> type(TypeId typeId) const { return selectInfoTypeByTypeIdStatement.template optionalValueWithTransaction<Storage::Info::Type>( typeId); @@ -187,7 +187,7 @@ public: .template valuesWithTransaction<Utils::SmallString>(32, typeId); } - Utils::optional<Utils::SmallString> propertyName(PropertyDeclarationId propertyDeclarationId) const + std::optional<Utils::SmallString> propertyName(PropertyDeclarationId propertyDeclarationId) const { return selectPropertyNameStatement.template optionalValueWithTransaction<Utils::SmallString>( propertyDeclarationId); diff --git a/src/plugins/qmldesigner/designercore/projectstorage/storagecache.h b/src/plugins/qmldesigner/designercore/projectstorage/storagecache.h index d9210b9776..ded352c831 100644 --- a/src/plugins/qmldesigner/designercore/projectstorage/storagecache.h +++ b/src/plugins/qmldesigner/designercore/projectstorage/storagecache.h @@ -9,11 +9,11 @@ #include "storagecachefwd.h" #include <utils/algorithm.h> -#include <utils/optional.h> #include <utils/set_algorithm.h> #include <utils/smallstringfwd.h> #include <algorithm> +#include <optional> #include <shared_mutex> #include <vector> diff --git a/src/plugins/qmljstools/qmljscodestylesettings.h b/src/plugins/qmljstools/qmljscodestylesettings.h index 36b97f39c4..c10155873d 100644 --- a/src/plugins/qmljstools/qmljscodestylesettings.h +++ b/src/plugins/qmljstools/qmljscodestylesettings.h @@ -5,10 +5,10 @@ #include "qmljstools_global.h" -#include <utils/optional.h> - #include <QVariantMap> +#include <optional> + namespace TextEditor { class TabSettings; } namespace QmlJSTools { diff --git a/src/plugins/qtsupport/qtoptionspage.cpp b/src/plugins/qtsupport/qtoptionspage.cpp index ffa9b4c3ed..8b2115f7c1 100644 --- a/src/plugins/qtsupport/qtoptionspage.cpp +++ b/src/plugins/qtsupport/qtoptionspage.cpp @@ -814,7 +814,7 @@ static QString qtVersionsFile(const QString &baseDir) + Core::Constants::IDE_ID + '/' + "qtversion.xml"; } -static Utils::optional<FilePath> currentlyLinkedQtDir(bool *hasInstallSettings) +static std::optional<FilePath> currentlyLinkedQtDir(bool *hasInstallSettings) { const QString installSettingsFilePath = settingsFile(Core::ICore::resourcePath().toString()); const bool installSettingsExist = QFile::exists(installSettingsFilePath); @@ -841,7 +841,7 @@ static bool canLinkWithQt(QString *toolTip) { bool canLink = true; bool installSettingsExist; - const Utils::optional<FilePath> installSettingsValue = currentlyLinkedQtDir( + const std::optional<FilePath> installSettingsValue = currentlyLinkedQtDir( &installSettingsExist); QStringList tip; tip << linkingPurposeText(); @@ -929,7 +929,7 @@ static QStringList qtversionFilesToCheck() return Utils::transform(kSubdirsToCheck, [](const QString &dir) { return qtVersionsFile(dir); }); } -static Utils::optional<QString> settingsDirForQtDir(const QString &qtDir) +static std::optional<QString> settingsDirForQtDir(const QString &qtDir) { const QStringList dirsToCheck = Utils::transform(kSubdirsToCheck, [qtDir](const QString &dir) { return QString(qtDir + '/' + dir); @@ -995,7 +995,7 @@ void QtOptionsPageWidget::linkWithQt() return false; return validateQtInstallDir(input, errorString); }); - const Utils::optional<FilePath> currentLink = currentlyLinkedQtDir(nullptr); + const std::optional<FilePath> currentLink = currentlyLinkedQtDir(nullptr); pathInput->setFilePath(currentLink ? *currentLink : defaultQtInstallationPath()); pathInput->setAllowPathFromDevice(true); auto buttons = new QDialogButtonBox; @@ -1026,7 +1026,7 @@ void QtOptionsPageWidget::linkWithQt() dialog.exec(); if (dialog.result() == QDialog::Accepted) { - const Utils::optional<QString> settingsDir = settingsDirForQtDir(pathInput->rawFilePath().toString()); + const std::optional<QString> settingsDir = settingsDirForQtDir(pathInput->rawFilePath().toString()); if (QTC_GUARD(settingsDir)) { QSettings(settingsFile(Core::ICore::resourcePath().toString()), QSettings::IniFormat) .setValue(kInstallSettingsKey, *settingsDir); diff --git a/src/plugins/studiowelcome/algorithm.h b/src/plugins/studiowelcome/algorithm.h index 4956b2d335..fa05869002 100644 --- a/src/plugins/studiowelcome/algorithm.h +++ b/src/plugins/studiowelcome/algorithm.h @@ -10,14 +10,14 @@ namespace Utils { //////// FIND template<typename C, typename F> -[[nodiscard]] typename Utils::optional<typename C::value_type> findOptional(const C &container, +[[nodiscard]] typename std::optional<typename C::value_type> findOptional(const C &container, F function) { auto begin = std::cbegin(container); auto end = std::cend(container); auto it = std::find_if(begin, end, function); - return it == end ? nullopt : make_optional(*it); + return it == end ? std::nullopt : std::make_optional(*it); } template<typename C> diff --git a/src/plugins/studiowelcome/presetmodel.cpp b/src/plugins/studiowelcome/presetmodel.cpp index e14659c6a8..bf2b880521 100644 --- a/src/plugins/studiowelcome/presetmodel.cpp +++ b/src/plugins/studiowelcome/presetmodel.cpp @@ -2,10 +2,11 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 #include "presetmodel.h" -#include <utils/optional.h> #include "algorithm.h" +#include <optional> + using namespace StudioWelcome; constexpr int NameRole = Qt::UserRole; diff --git a/src/plugins/studiowelcome/presetmodel.h b/src/plugins/studiowelcome/presetmodel.h index 43588ccfc0..b192a11c57 100644 --- a/src/plugins/studiowelcome/presetmodel.h +++ b/src/plugins/studiowelcome/presetmodel.h @@ -8,11 +8,12 @@ #include <QUrl> #include <utils/filepath.h> -#include <utils/optional.h> #include <utils/qtcassert.h> #include "userpresets.h" +#include <optional> + namespace Utils { class Wizard; } diff --git a/src/plugins/texteditor/indenter.h b/src/plugins/texteditor/indenter.h index 73ef022051..ccaae3e2e8 100644 --- a/src/plugins/texteditor/indenter.h +++ b/src/plugins/texteditor/indenter.h @@ -4,11 +4,12 @@ #pragma once #include <utils/fileutils.h> -#include <utils/optional.h> #include <utils/textutils.h> #include <QMap> #include <QTextBlock> + +#include <optional> #include <vector> namespace Utils { @@ -75,7 +76,7 @@ public: const TabSettings &tabSettings, int cursorPositionInEditor = -1) = 0; - virtual Utils::optional<TabSettings> tabSettings() const = 0; + virtual std::optional<TabSettings> tabSettings() const = 0; // Indent a text block based on previous line. Default does nothing virtual void indentBlock(const QTextBlock &block, @@ -98,7 +99,7 @@ public: int cursorPositionInEditor = -1) = 0; - virtual Utils::optional<int> margin() const { return Utils::nullopt; } + virtual std::optional<int> margin() const { return std::nullopt; } protected: QTextDocument *m_doc; diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index def49c05ed..064ea1ceea 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -583,7 +583,7 @@ public: void transformSelectedLines(ListTransformationMethod method); - void slotUpdateExtraAreaWidth(Utils::optional<int> width = {}); + void slotUpdateExtraAreaWidth(std::optional<int> width = {}); void slotUpdateRequest(const QRect &r, int dy); void slotUpdateBlockNotify(const QTextBlock &); void updateTabStops(); @@ -4840,7 +4840,7 @@ int TextEditorWidget::extraAreaWidth(int *markWidthPtr) const return space; } -void TextEditorWidgetPrivate::slotUpdateExtraAreaWidth(optional<int> width) +void TextEditorWidgetPrivate::slotUpdateExtraAreaWidth(std::optional<int> width) { if (!width.has_value()) width = q->extraAreaWidth(); @@ -5389,7 +5389,7 @@ void TextEditorWidget::mouseMoveEvent(QMouseEvent *e) } } - static Utils::optional<MultiTextCursor> startMouseMoveCursor; + static std::optional<MultiTextCursor> startMouseMoveCursor; if (e->buttons() == Qt::LeftButton && e->modifiers() & Qt::AltModifier) { if (!startMouseMoveCursor.has_value()) { startMouseMoveCursor = multiTextCursor(); diff --git a/src/plugins/texteditor/textindenter.cpp b/src/plugins/texteditor/textindenter.cpp index fbe08bdde9..0927bec357 100644 --- a/src/plugins/texteditor/textindenter.cpp +++ b/src/plugins/texteditor/textindenter.cpp @@ -122,7 +122,7 @@ void TextIndenter::reindent(const QTextCursor &cursor, } } -Utils::optional<TabSettings> TextIndenter::tabSettings() const +std::optional<TabSettings> TextIndenter::tabSettings() const { - return Utils::optional<TabSettings>(); + return std::optional<TabSettings>(); } diff --git a/src/plugins/texteditor/textindenter.h b/src/plugins/texteditor/textindenter.h index b929794bf0..66c8eff7b5 100644 --- a/src/plugins/texteditor/textindenter.h +++ b/src/plugins/texteditor/textindenter.h @@ -42,7 +42,7 @@ public: void reindent(const QTextCursor &cursor, const TabSettings &tabSettings, int cursorPositionInEditor = -1) override; - Utils::optional<TabSettings> tabSettings() const override; + std::optional<TabSettings> tabSettings() const override; }; } // namespace TextEditor diff --git a/src/plugins/texteditor/textmark.cpp b/src/plugins/texteditor/textmark.cpp index 495c44463d..1ca67b597b 100644 --- a/src/plugins/texteditor/textmark.cpp +++ b/src/plugins/texteditor/textmark.cpp @@ -354,7 +354,7 @@ const QIcon TextMark::icon() const return m_iconProvider ? m_iconProvider() : m_icon; } -Utils::optional<Theme::Color> TextMark::color() const +std::optional<Theme::Color> TextMark::color() const { return m_color; } diff --git a/src/plugins/texteditor/textmark.h b/src/plugins/texteditor/textmark.h index c6bfbc45a8..ed0816224b 100644 --- a/src/plugins/texteditor/textmark.h +++ b/src/plugins/texteditor/textmark.h @@ -7,13 +7,14 @@ #include <utils/fileutils.h> #include <utils/id.h> -#include <utils/optional.h> #include <utils/theme/theme.h> #include <QCoreApplication> #include <QIcon> #include <QVector> +#include <optional> + QT_BEGIN_NAMESPACE class QAction; class QGridLayout; @@ -90,7 +91,7 @@ public: void setVisible(bool isVisible); Utils::Id category() const { return m_category; } - Utils::optional<Utils::Theme::Color> color() const; + std::optional<Utils::Theme::Color> color() const; void setColor(const Utils::Theme::Color &color); QString defaultToolTip() const { return m_defaultToolTip; } @@ -122,7 +123,7 @@ private: Priority m_priority = LowPriority; QIcon m_icon; std::function<QIcon()> m_iconProvider; - Utils::optional<Utils::Theme::Color> m_color; + std::optional<Utils::Theme::Color> m_color; bool m_visible = false; Utils::Id m_category; QString m_lineAnnotation; diff --git a/src/plugins/updateinfo/updateinfoplugin.cpp b/src/plugins/updateinfo/updateinfoplugin.cpp index d2047ba07a..f6e80f5799 100644 --- a/src/plugins/updateinfo/updateinfoplugin.cpp +++ b/src/plugins/updateinfo/updateinfoplugin.cpp @@ -271,7 +271,7 @@ void UpdateInfoPlugin::checkForUpdatesFinished() << "prerelease:" << p.isPrerelease; } } - Utils::optional<QtPackage> qtToNag = qtToNagAbout(qtPackages, &d->m_lastMaxQtVersion); + std::optional<QtPackage> qtToNag = qtToNagAbout(qtPackages, &d->m_lastMaxQtVersion); if (!updates.isEmpty() || qtToNag) { // progress details are shown until user interaction for the "no updates" case, diff --git a/src/plugins/updateinfo/updateinfotools.h b/src/plugins/updateinfo/updateinfotools.h index a5c3a816ee..1f79e366b6 100644 --- a/src/plugins/updateinfo/updateinfotools.h +++ b/src/plugins/updateinfo/updateinfotools.h @@ -4,7 +4,6 @@ #pragma once #include <utils/algorithm.h> -#include <utils/optional.h> #include <QDomDocument> #include <QList> @@ -12,6 +11,8 @@ #include <QRegularExpression> #include <QVersionNumber> +#include <optional> + Q_DECLARE_LOGGING_CATEGORY(updateLog) struct Update @@ -90,7 +91,7 @@ QList<QtPackage> availableQtPackages(const QString &packageXml) } // Expects packages to be sorted, high version first. -Utils::optional<QtPackage> highestInstalledQt(const QList<QtPackage> &packages) +std::optional<QtPackage> highestInstalledQt(const QList<QtPackage> &packages) { const auto highestInstalledIt = std::find_if(packages.cbegin(), packages.cend(), @@ -101,7 +102,7 @@ Utils::optional<QtPackage> highestInstalledQt(const QList<QtPackage> &packages) } // Expects packages to be sorted, high version first. -Utils::optional<QtPackage> qtToNagAbout(const QList<QtPackage> &allPackages, +std::optional<QtPackage> qtToNagAbout(const QList<QtPackage> &allPackages, QVersionNumber *highestSeen) { // Filter out any Qt prereleases @@ -119,7 +120,7 @@ Utils::optional<QtPackage> qtToNagAbout(const QList<QtPackage> &allPackages, *highestSeen = highest.version; if (!isNew) return {}; - const Utils::optional<QtPackage> highestInstalled = highestInstalledQt(packages); + const std::optional<QtPackage> highestInstalled = highestInstalledQt(packages); qCDebug(updateLog) << "Highest installed Qt:" << qPrintable(highestInstalled ? highestInstalled->version.toString() : QString("none")); |