diff --git a/src/libs/utils/filepath.h b/src/libs/utils/filepath.h index dd0e4c9f4c3..982ec3ea94f 100644 --- a/src/libs/utils/filepath.h +++ b/src/libs/utils/filepath.h @@ -5,9 +5,9 @@ #include "utils_global.h" -#include "expected.h" #include "filepathinfo.h" #include "osspecificaspects.h" +#include "result.h" #include "utiltypes.h" #include diff --git a/src/plugins/android/androidmanifesteditor.cpp b/src/plugins/android/androidmanifesteditor.cpp index 7517ea18d51..7f5568d9d03 100644 --- a/src/plugins/android/androidmanifesteditor.cpp +++ b/src/plugins/android/androidmanifesteditor.cpp @@ -1517,10 +1517,10 @@ private: bool isSaveAsAllowed() const override { return false; } - expected_str saveImpl(const FilePath &filePath, bool autoSave) override + Result saveImpl(const FilePath &filePath, bool autoSave) override { m_editorWidget->preSave(); - expected_str result = TextDocument::saveImpl(filePath, autoSave); + Result result = TextDocument::saveImpl(filePath, autoSave); m_editorWidget->postSave(); return result; } diff --git a/src/plugins/bineditor/bineditorplugin.cpp b/src/plugins/bineditor/bineditorplugin.cpp index 0b836cfdb9c..3f8a23ec94f 100644 --- a/src/plugins/bineditor/bineditorplugin.cpp +++ b/src/plugins/bineditor/bineditorplugin.cpp @@ -119,8 +119,8 @@ public: bool isSaveAsAllowed() const final { return true; } - Utils::expected_str reload(ReloadFlag flag, ChangeType type) final; - Utils::expected_str saveImpl(const Utils::FilePath &filePath, bool autoSave) final; + Utils::Result reload(ReloadFlag flag, ChangeType type) final; + Utils::Result saveImpl(const Utils::FilePath &filePath, bool autoSave) final; void fetchData(quint64 address) const { if (m_fetchDataHandler) m_fetchDataHandler(address); } void requestNewWindow(quint64 address) { if (m_newWindowRequestHandler) m_newWindowRequestHandler(address); } @@ -156,7 +156,7 @@ public: void addData(quint64 addr, const QByteArray &data); void updateContents(); - expected_str save(const FilePath &oldFilePath, const FilePath &newFilePath); + Result save(const FilePath &oldFilePath, const FilePath &newFilePath); void clear(); void undo(); @@ -614,7 +614,7 @@ void BinEditorDocument::setModified(bool modified) emit changed(); } -expected_str BinEditorDocument::save(const FilePath &oldFilePath, const FilePath &newFilePath) +Result BinEditorDocument::save(const FilePath &oldFilePath, const FilePath &newFilePath) { if (oldFilePath != newFilePath) { // Get a unique temporary file name @@ -623,19 +623,19 @@ expected_str BinEditorDocument::save(const FilePath &oldFilePath, const Fi const auto result = TemporaryFilePath::create( newFilePath.stringAppended("_XXXXXX.new")); if (!result) - return make_unexpected(result.error()); + return Result::Error(result.error()); tmpName = (*result)->filePath(); } - if (expected_str res = oldFilePath.copyFile(tmpName); !res) + if (Result res = oldFilePath.copyFile(tmpName); !res) return res; if (newFilePath.exists()) { - if (expected_str res = newFilePath.removeFile(); !res) + if (Result res = newFilePath.removeFile(); !res) return res; } - if (expected_str res = tmpName.renameFile(newFilePath); !res) + if (Result res = tmpName.renameFile(newFilePath); !res) return res; } @@ -661,10 +661,10 @@ expected_str BinEditorDocument::save(const FilePath &oldFilePath, const Fi QString errorString; if (!saver.finalize(&errorString)) - return make_unexpected(errorString); + return Result::Error(errorString); setModified(false); - return {}; + return Result::Ok; } void BinEditorDocument::setSizes(quint64 startAddr, qint64 range, int blockSize) @@ -2181,28 +2181,26 @@ bool BinEditorDocument::isModified() const return m_undoStack.size() != m_unmodifiedState; } -expected_str BinEditorDocument::reload(ReloadFlag flag, ChangeType type) +Result BinEditorDocument::reload(ReloadFlag flag, ChangeType type) { Q_UNUSED(type) if (flag == FlagIgnore) - return {}; + return Result::Ok; emit aboutToReload(); clear(); QString errorString; const bool success = (openImpl(&errorString, filePath()) == OpenResult::Success); emit reloadFinished(success); - if (!success) - return make_unexpected(errorString); - return {}; + return Result(success, errorString); } -expected_str BinEditorDocument::saveImpl(const FilePath &filePath, bool autoSave) +Result BinEditorDocument::saveImpl(const FilePath &filePath, bool autoSave) { - QTC_ASSERT(!autoSave, return {}); // bineditor does not support autosave - it would be a bit expensive - if (expected_str res = save(this->filePath(), filePath); !res) + QTC_ASSERT(!autoSave, return Result::Ok); // bineditor does not support autosave - it would be a bit expensive + if (Result res = save(this->filePath(), filePath); !res) return res; setFilePath(filePath); - return {}; + return Result::Ok; } class BinEditorImpl final : public IEditor, public EditorService diff --git a/src/plugins/clangcodemodel/test/clangdtests.cpp b/src/plugins/clangcodemodel/test/clangdtests.cpp index 3aa20b06670..4bbcce1fed8 100644 --- a/src/plugins/clangcodemodel/test/clangdtests.cpp +++ b/src/plugins/clangcodemodel/test/clangdtests.cpp @@ -1994,7 +1994,7 @@ void ClangdTestCompletion::testCompleteAfterProjectChange() EditorManager::openEditor(project()->projectFilePath())); QVERIFY(proFileEditor); proFileEditor->insert("DEFINES += PROJECT_CONFIGURATION_1\n"); - const expected_str res = proFileEditor->document()->save(); + const Result res = proFileEditor->document()->save(); QVERIFY2(res, qPrintable(res.error())); QVERIFY(waitForSignalOrTimeout(project(), &Project::anyParsingFinished, timeOutInMs())); QVERIFY(waitForSignalOrTimeout(LanguageClientManager::instance(), diff --git a/src/plugins/clangtools/virtualfilesystemoverlay.cpp b/src/plugins/clangtools/virtualfilesystemoverlay.cpp index 037059d9b4b..08bbc5241cf 100644 --- a/src/plugins/clangtools/virtualfilesystemoverlay.cpp +++ b/src/plugins/clangtools/virtualfilesystemoverlay.cpp @@ -41,7 +41,7 @@ void VirtualFileSystemOverlay::update() saved.path = m_root.filePath(doc->filePath().fileName() + ".auto"); while (saved.path.exists()) saved.path = saved.path.stringAppended(".1"); - if (Utils::expected_str res = doc->save(saved.path, true); !res) { + if (Utils::Result res = doc->save(saved.path, true); !res) { qCDebug(LOG) << res.error(); continue; } diff --git a/src/plugins/compilerexplorer/compilerexplorereditor.cpp b/src/plugins/compilerexplorer/compilerexplorereditor.cpp index ce6969ddbbb..c27db8307bf 100644 --- a/src/plugins/compilerexplorer/compilerexplorereditor.cpp +++ b/src/plugins/compilerexplorer/compilerexplorereditor.cpp @@ -154,7 +154,7 @@ public: const Utils::FilePath &filePath, const Utils::FilePath &realFilePath) override; - Utils::expected_str saveImpl(const Utils::FilePath &filePath, bool autoSave) override; + Result saveImpl(const Utils::FilePath &filePath, bool autoSave) override; bool setContents(const QByteArray &contents) override; @@ -409,7 +409,7 @@ Core::IDocument::OpenResult JsonSettingsDocument::open(QString *errorString, return OpenResult::Success; } -expected_str JsonSettingsDocument::saveImpl(const FilePath &newFilePath, bool autoSave) +Result JsonSettingsDocument::saveImpl(const FilePath &newFilePath, bool autoSave) { Store store; @@ -435,10 +435,10 @@ expected_str JsonSettingsDocument::saveImpl(const FilePath &newFilePath, b expected_str result = path.writeFileContents(jsonFromStore(store)); if (!result) - return make_unexpected(result.error()); + return Result::Error(result.error()); emit changed(); - return {}; + return Result::Ok; } bool JsonSettingsDocument::isModified() const diff --git a/src/plugins/coreplugin/documentmanager.cpp b/src/plugins/coreplugin/documentmanager.cpp index b0489b3e757..0ebffb50b20 100644 --- a/src/plugins/coreplugin/documentmanager.cpp +++ b/src/plugins/coreplugin/documentmanager.cpp @@ -715,7 +715,7 @@ bool DocumentManager::saveDocument(IDocument *document, expectFileChange(savePath); // This only matters to other IDocuments which refer to this file bool addWatcher = removeDocument(document); // So that our own IDocument gets no notification at all - if (const expected_str res = document->save(savePath, false); !res) { + if (const Result res = document->save(savePath, false); !res) { if (isReadOnly) { QFile ofi(savePath.toString()); // Check whether the existing file is writable @@ -1188,13 +1188,12 @@ void DocumentManager::checkForReload() removeFileInfo(document); addFileInfos({document}); - expected_str success; + Result success = Result::Ok; // we've got some modification document->checkPermissions(); // check if it's contents or permissions: if (!type) { // Only permission change - success = {}; // now we know it's a content change or file was removed } else if (defaultBehavior == IDocument::ReloadUnmodified && type == IDocument::TypeContents && !document->isModified()) { diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 5718b6d1a35..946836f740c 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -2382,7 +2382,7 @@ void EditorManagerPrivate::autoSave() if (document->filePath().isEmpty() || !savePath.isWritableDir()) // FIXME: save them to a dedicated directory continue; - if (expected_str res = document->autoSave(saveName); !res) + if (Result res = document->autoSave(saveName); !res) errors << res.error(); } if (!errors.isEmpty()) @@ -2610,8 +2610,7 @@ void EditorManagerPrivate::revertToSaved(IDocument *document) } } - const expected_str res = document->reload(IDocument::FlagReload, IDocument::TypeContents); - if (!res) + if (Result res = document->reload(IDocument::FlagReload, IDocument::TypeContents); !res) QMessageBox::critical(ICore::dialogParent(), ::Core::Tr::tr("File Error"), res.error()); } diff --git a/src/plugins/coreplugin/idocument.cpp b/src/plugins/coreplugin/idocument.cpp index d2373a54210..32c0465a30d 100644 --- a/src/plugins/coreplugin/idocument.cpp +++ b/src/plugins/coreplugin/idocument.cpp @@ -343,11 +343,11 @@ IDocument::OpenResult IDocument::open(QString *errorString, const Utils::FilePat \sa saved() \sa filePath() */ -expected_str IDocument::save(const FilePath &filePath, bool autoSave) +Result IDocument::save(const FilePath &filePath, bool autoSave) { const FilePath savePath = filePath.isEmpty() ? this->filePath() : filePath; emit aboutToSave(savePath, autoSave); - const expected_str res = saveImpl(savePath, autoSave); + const Result res = saveImpl(savePath, autoSave); if (res) emit saved(savePath, autoSave); return res; @@ -364,11 +364,11 @@ expected_str IDocument::save(const FilePath &filePath, bool autoSave) The default implementation does nothing and returns \c false. */ -expected_str IDocument::saveImpl(const FilePath &filePath, bool autoSave) +Result IDocument::saveImpl(const FilePath &filePath, bool autoSave) { Q_UNUSED(filePath) Q_UNUSED(autoSave) - return make_unexpected(Tr::tr("Not implemented")); + return Result::Error(Tr::tr("Not implemented")); } /*! @@ -467,11 +467,11 @@ IDocument::ReloadBehavior IDocument::reloadBehavior(ChangeTrigger trigger, Chang \sa reloadFinished() \sa changed() */ -Utils::expected_str IDocument::reload(ReloadFlag flag, ChangeType type) +Result IDocument::reload(ReloadFlag flag, ChangeType type) { Q_UNUSED(flag) Q_UNUSED(type) - return {}; + return Result::Ok; } /*! @@ -647,13 +647,13 @@ void IDocument::setMimeType(const QString &mimeType) /*! \internal */ -expected_str IDocument::autoSave(const FilePath &filePath) +Result IDocument::autoSave(const FilePath &filePath) { - if (const expected_str res = save(filePath, true); !res) + if (const Result res = save(filePath, true); !res) return res; d->autoSavePath = filePath; - return {}; + return Result::Ok; } static const char kRestoredAutoSave[] = "RestoredAutoSave"; diff --git a/src/plugins/coreplugin/idocument.h b/src/plugins/coreplugin/idocument.h index c695d394f76..cb8a095dd78 100644 --- a/src/plugins/coreplugin/idocument.h +++ b/src/plugins/coreplugin/idocument.h @@ -68,7 +68,7 @@ public: virtual OpenResult open(QString *errorString, const Utils::FilePath &filePath, const Utils::FilePath &realFilePath); - Utils::expected_str save(const Utils::FilePath &filePath = {}, bool autoSave = false); + Utils::Result save(const Utils::FilePath &filePath = {}, bool autoSave = false); virtual QByteArray contents() const; virtual bool setContents(const QByteArray &contents); @@ -100,11 +100,11 @@ public: void setSuspendAllowed(bool value); virtual ReloadBehavior reloadBehavior(ChangeTrigger state, ChangeType type) const; - virtual Utils::expected_str reload(ReloadFlag flag, ChangeType type); + virtual Utils::Result reload(ReloadFlag flag, ChangeType type); void checkPermissions(); - Utils::expected_str autoSave(const Utils::FilePath &filePath); + Utils::Result autoSave(const Utils::FilePath &filePath); void setRestoredFrom(const Utils::FilePath &path); void removeAutoSaveFile(); @@ -131,8 +131,7 @@ signals: void filePathChanged(const Utils::FilePath &oldName, const Utils::FilePath &newName); protected: - virtual Utils::expected_str - saveImpl(const Utils::FilePath &filePath = {}, bool autoSave = false); + virtual Utils::Result saveImpl(const Utils::FilePath &filePath = {}, bool autoSave = false); private: Internal::IDocumentPrivate *d; diff --git a/src/plugins/cppeditor/cppeditordocument.cpp b/src/plugins/cppeditor/cppeditordocument.cpp index dc94c8fe64b..297e1d81462 100644 --- a/src/plugins/cppeditor/cppeditordocument.cpp +++ b/src/plugins/cppeditor/cppeditordocument.cpp @@ -489,7 +489,7 @@ TextEditor::TabSettings CppEditorDocument::tabSettings() const return indenter()->tabSettings().value_or(TextEditor::TextDocument::tabSettings()); } -expected_str CppEditorDocument::saveImpl(const FilePath &filePath, bool autoSave) +Result CppEditorDocument::saveImpl(const FilePath &filePath, bool autoSave) { if (!indenter()->formatOnSave() || autoSave) return TextEditor::TextDocument::saveImpl(filePath, autoSave); diff --git a/src/plugins/cppeditor/cppeditordocument.h b/src/plugins/cppeditor/cppeditordocument.h index fc379fb1ae6..02946c60278 100644 --- a/src/plugins/cppeditor/cppeditordocument.h +++ b/src/plugins/cppeditor/cppeditordocument.h @@ -67,7 +67,7 @@ signals: protected: void applyFontSettings() override; - Utils::expected_str saveImpl(const Utils::FilePath &filePath, bool autoSave) override; + Utils::Result saveImpl(const Utils::FilePath &filePath, bool autoSave) override; private: void invalidateFormatterCache(); diff --git a/src/plugins/cppeditor/cpplocalsymbols_test.cpp b/src/plugins/cppeditor/cpplocalsymbols_test.cpp index 740fd8233c9..fc01f3b0360 100644 --- a/src/plugins/cppeditor/cpplocalsymbols_test.cpp +++ b/src/plugins/cppeditor/cpplocalsymbols_test.cpp @@ -11,8 +11,6 @@ #include -using namespace Utils; - namespace { class FindFirstFunctionDefinition: protected CPlusPlus::ASTVisitor @@ -150,7 +148,7 @@ void LocalSymbolsTest::test() QFETCH(QList, expectedUses); CPlusPlus::Document::Ptr document = - CPlusPlus::Document::create(FilePath::fromPathPart(u"test.cpp")); + CPlusPlus::Document::create(Utils::FilePath::fromPathPart(u"test.cpp")); document->setUtf8Source(source); document->check(); QVERIFY(document->diagnosticMessages().isEmpty()); diff --git a/src/plugins/designer/formwindowfile.cpp b/src/plugins/designer/formwindowfile.cpp index 43f9aef84ea..9672488db15 100644 --- a/src/plugins/designer/formwindowfile.cpp +++ b/src/plugins/designer/formwindowfile.cpp @@ -84,12 +84,12 @@ Core::IDocument::OpenResult FormWindowFile::open(QString *errorString, return OpenResult::Success; } -expected_str FormWindowFile::saveImpl(const FilePath &filePath, bool autoSave) +Result FormWindowFile::saveImpl(const FilePath &filePath, bool autoSave) { - QTC_ASSERT(m_formWindow, return make_unexpected(QString())); - + if (!m_formWindow) + return Result::Error("ASSERT: FormWindoFile: !m_formWindow"); if (filePath.isEmpty()) - return make_unexpected(QString()); + return Result::Error("ASSERT: FormWindowFile: filePath.isEmpty()"); const QString oldFormName = m_formWindow->fileName(); if (!autoSave) @@ -97,22 +97,19 @@ expected_str FormWindowFile::saveImpl(const FilePath &filePath, bool autoS QString errorString; const bool writeOK = writeFile(filePath, &errorString); m_shouldAutoSave = false; - if (autoSave) { - if (writeOK) - return {}; - return make_unexpected(errorString); - } + if (autoSave) + return Result(writeOK, errorString); if (!writeOK) { m_formWindow->setFileName(oldFormName); - return make_unexpected(errorString); + return Result::Error(errorString); } m_formWindow->setDirty(false); setFilePath(filePath); updateIsModified(); - return {}; + return Result::Ok; } QByteArray FormWindowFile::contents() const @@ -189,11 +186,11 @@ bool FormWindowFile::isSaveAsAllowed() const return true; } -expected_str FormWindowFile::reload(ReloadFlag flag, ChangeType type) +Result FormWindowFile::reload(ReloadFlag flag, ChangeType type) { if (flag == FlagIgnore) { if (!m_formWindow || type != TypeContents) - return {}; + return Result::Ok; const bool wasModified = m_formWindow->isDirty(); { Utils::GuardLocker locker(m_modificationChangedGuard); @@ -203,16 +200,14 @@ expected_str FormWindowFile::reload(ReloadFlag flag, ChangeType type) } if (!wasModified) updateIsModified(); - return {}; + return Result::Ok; } else { emit aboutToReload(); QString errorString; const bool success = (open(&errorString, filePath(), filePath()) == OpenResult::Success); emit reloadFinished(success); - if (!success) - return make_unexpected(errorString); - return {}; + return Result(success, errorString); } } diff --git a/src/plugins/designer/formwindowfile.h b/src/plugins/designer/formwindowfile.h index 25736034d0a..4c86ad5fde4 100644 --- a/src/plugins/designer/formwindowfile.h +++ b/src/plugins/designer/formwindowfile.h @@ -33,7 +33,7 @@ public: bool shouldAutoSave() const override; bool isModified() const override; bool isSaveAsAllowed() const override; - Utils::expected_str reload(ReloadFlag flag, ChangeType type) override; + Utils::Result reload(ReloadFlag flag, ChangeType type) override; QString fallbackSaveAsFileName() const override; bool supportsCodec(const QTextCodec *codec) const override; @@ -52,7 +52,7 @@ public: void updateIsModified(); protected: - Utils::expected_str saveImpl(const Utils::FilePath &filePath, bool autoSave) override; + Utils::Result saveImpl(const Utils::FilePath &filePath, bool autoSave) override; private: void slotFormWindowRemoved(QDesignerFormWindowInterface *w); diff --git a/src/plugins/diffeditor/diffeditordocument.cpp b/src/plugins/diffeditor/diffeditordocument.cpp index 7140ed52114..5068da1f0f1 100644 --- a/src/plugins/diffeditor/diffeditordocument.cpp +++ b/src/plugins/diffeditor/diffeditordocument.cpp @@ -234,18 +234,18 @@ bool DiffEditorDocument::isSaveAsAllowed() const return state() == LoadOK; } -expected_str DiffEditorDocument::saveImpl(const FilePath &filePath, bool autoSave) +Result DiffEditorDocument::saveImpl(const FilePath &filePath, bool autoSave) { Q_UNUSED(autoSave) QString errorString; if (state() != LoadOK) - return make_unexpected(errorString); + return Result::Error(errorString); const bool ok = write(filePath, format(), plainText(), &errorString); if (!ok) - return make_unexpected(errorString); + return Result::Error(errorString); setController(nullptr); setDescription({}); @@ -256,7 +256,7 @@ expected_str DiffEditorDocument::saveImpl(const FilePath &filePath, bool a setPreferredDisplayName({}); emit temporaryStateChanged(); - return {}; + return Result::Ok; } void DiffEditorDocument::reload() @@ -267,16 +267,14 @@ void DiffEditorDocument::reload() reload(Core::IDocument::FlagReload, Core::IDocument::TypeContents); } -expected_str DiffEditorDocument::reload(ReloadFlag flag, ChangeType type) +Result DiffEditorDocument::reload(ReloadFlag flag, ChangeType type) { Q_UNUSED(type) if (flag == FlagIgnore) - return {}; + return Result::Ok; QString errorString; bool success = open(&errorString, filePath(), filePath()) == OpenResult::Success; - if (!success) - return make_unexpected(errorString); - return {}; + return Result(success, errorString); } Core::IDocument::OpenResult DiffEditorDocument::open(QString *errorString, const FilePath &filePath, diff --git a/src/plugins/diffeditor/diffeditordocument.h b/src/plugins/diffeditor/diffeditordocument.h index 3d175ac85c6..295286cfc87 100644 --- a/src/plugins/diffeditor/diffeditordocument.h +++ b/src/plugins/diffeditor/diffeditordocument.h @@ -61,7 +61,7 @@ public: bool isSaveAsAllowed() const override; void reload(); - Utils::expected_str reload(ReloadFlag flag, ChangeType type) override; + Utils::Result reload(ReloadFlag flag, ChangeType type) override; OpenResult open(QString *errorString, const Utils::FilePath &filePath, const Utils::FilePath &realFilePath) override; bool selectEncoding(); @@ -75,7 +75,7 @@ signals: void descriptionChanged(); protected: - Utils::expected_str saveImpl(const Utils::FilePath &filePath, bool autoSave) override; + Utils::Result saveImpl(const Utils::FilePath &filePath, bool autoSave) override; private: void beginReload(); diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 4a7242aa00d..2cd9c03a74d 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -84,7 +84,7 @@ public: return BehaviorSilent; } - expected_str reload(ReloadFlag flag, ChangeType type) final; + Result reload(ReloadFlag flag, ChangeType type) final; private: GenericProject *m_project = nullptr; @@ -695,14 +695,14 @@ void GenericProject::configureAsExampleProject(Kit *kit) setup(infoList); } -expected_str GenericProjectFile::reload(IDocument::ReloadFlag flag, IDocument::ChangeType type) +Result GenericProjectFile::reload(IDocument::ReloadFlag flag, IDocument::ChangeType type) { Q_UNUSED(flag) Q_UNUSED(type) if (Target *t = m_project->activeTarget()) static_cast(t->buildSystem())->refresh(m_options); - return {}; + return Result::Ok; } void GenericProject::editFilesTriggered() diff --git a/src/plugins/imageviewer/imageviewerfile.cpp b/src/plugins/imageviewer/imageviewerfile.cpp index 006595d2a4e..7758754562d 100644 --- a/src/plugins/imageviewer/imageviewerfile.cpp +++ b/src/plugins/imageviewer/imageviewerfile.cpp @@ -146,19 +146,17 @@ Core::IDocument::ReloadBehavior ImageViewerFile::reloadBehavior(ChangeTrigger st return BehaviorAsk; } -expected_str ImageViewerFile::reload(Core::IDocument::ReloadFlag flag, - Core::IDocument::ChangeType type) +Result ImageViewerFile::reload(Core::IDocument::ReloadFlag flag, + Core::IDocument::ChangeType type) { Q_UNUSED(type) if (flag == FlagIgnore) - return {}; + return Result::Ok; emit aboutToReload(); QString errorString; bool success = (openImpl(&errorString, filePath()) == OpenResult::Success); emit reloadFinished(success); - if (!success) - return make_unexpected(errorString); - return {}; + return Result(success, errorString); } QMovie *ImageViewerFile::movie() const diff --git a/src/plugins/imageviewer/imageviewerfile.h b/src/plugins/imageviewer/imageviewerfile.h index 37b5fe9da85..0936302060b 100644 --- a/src/plugins/imageviewer/imageviewerfile.h +++ b/src/plugins/imageviewer/imageviewerfile.h @@ -39,7 +39,7 @@ public: const Utils::FilePath &realFilePath) override; ReloadBehavior reloadBehavior(ChangeTrigger state, ChangeType type) const override; - Utils::expected_str reload(ReloadFlag flag, ChangeType type) override; + Utils::Result reload(ReloadFlag flag, ChangeType type) override; QMovie *movie() const; diff --git a/src/plugins/modeleditor/modeldocument.cpp b/src/plugins/modeleditor/modeldocument.cpp index 0b3d80cda02..b6ffd0d7d5b 100644 --- a/src/plugins/modeleditor/modeldocument.cpp +++ b/src/plugins/modeleditor/modeldocument.cpp @@ -52,16 +52,16 @@ Core::IDocument::OpenResult ModelDocument::open(QString *errorString, return result; } -expected_str ModelDocument::saveImpl(const FilePath &filePath, bool autoSave) +Result ModelDocument::saveImpl(const FilePath &filePath, bool autoSave) { if (!d->documentController) - return make_unexpected(Tr::tr("No model loaded. Cannot save.")); + return Result::Error(Tr::tr("No model loaded. Cannot save.")); d->documentController->projectController()->setFileName(filePath); try { d->documentController->projectController()->save(); } catch (const qmt::Exception &ex) { - return make_unexpected(ex.errorMessage()); + return Result::Error(ex.errorMessage()); } if (autoSave) { @@ -71,7 +71,7 @@ expected_str ModelDocument::saveImpl(const FilePath &filePath, bool autoSa emit changed(); } - return {}; + return Result::Ok; } bool ModelDocument::shouldAutoSave() const @@ -89,22 +89,22 @@ bool ModelDocument::isSaveAsAllowed() const return true; } -Utils::expected_str ModelDocument::reload(Core::IDocument::ReloadFlag flag, - Core::IDocument::ChangeType type) +Result ModelDocument::reload(Core::IDocument::ReloadFlag flag, + Core::IDocument::ChangeType type) { Q_UNUSED(type) if (flag == FlagIgnore) - return {}; + return Result::Ok; try { d->documentController->loadProject(filePath()); } catch (const qmt::FileNotFoundException &ex) { - return make_unexpected(ex.errorMessage()); + return Result::Error(ex.errorMessage()); } catch (const qmt::Exception &ex) { - return make_unexpected(Tr::tr("Could not open \"%1\" for reading: %2.") + return Result::Error(Tr::tr("Could not open \"%1\" for reading: %2.") .arg(filePath().toUserOutput(), ex.errorMessage())); } emit contentSet(); - return {}; + return Result::Ok; } ExtDocumentController *ModelDocument::documentController() const diff --git a/src/plugins/modeleditor/modeldocument.h b/src/plugins/modeleditor/modeldocument.h index 6e672c4d3d8..bf70cb74f7e 100644 --- a/src/plugins/modeleditor/modeldocument.h +++ b/src/plugins/modeleditor/modeldocument.h @@ -33,14 +33,14 @@ public: bool shouldAutoSave() const override; bool isModified() const override; bool isSaveAsAllowed() const override; - Utils::expected_str reload(ReloadFlag flag, ChangeType type) override; + Utils::Result reload(ReloadFlag flag, ChangeType type) override; ExtDocumentController *documentController() const; OpenResult load(QString *errorString, const Utils::FilePath &fileName); protected: - Utils::expected_str saveImpl(const Utils::FilePath &filePath, bool autoSave) override; + Utils::Result saveImpl(const Utils::FilePath &filePath, bool autoSave) override; private: ModelDocumentPrivate *d; diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index 274c35ae1d1..874c5b0848e 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -145,13 +145,13 @@ public: return BehaviorSilent; } - expected_str reload(ReloadFlag flag, ChangeType type) final + Result reload(ReloadFlag flag, ChangeType type) final { Q_UNUSED(flag) Q_UNUSED(type) emit m_project->projectFileIsDirty(filePath()); - return {}; + return Result::Ok; } private: diff --git a/src/plugins/projectexplorer/taskfile.cpp b/src/plugins/projectexplorer/taskfile.cpp index c85a8def83a..cd25fefde87 100644 --- a/src/plugins/projectexplorer/taskfile.cpp +++ b/src/plugins/projectexplorer/taskfile.cpp @@ -45,19 +45,17 @@ Core::IDocument::ReloadBehavior TaskFile::reloadBehavior(ChangeTrigger state, Ch return BehaviorSilent; } -expected_str TaskFile::reload(ReloadFlag flag, ChangeType type) +Result TaskFile::reload(ReloadFlag flag, ChangeType type) { Q_UNUSED(flag) if (type == TypeRemoved) { deleteLater(); - return {}; + return Result::Ok; } QString errorString; bool success = load(&errorString, filePath()); - if (!success) - return make_unexpected(errorString); - return {}; + return Result(success, errorString); } static Task::TaskType typeFrom(const QString &typeName) diff --git a/src/plugins/projectexplorer/taskfile.h b/src/plugins/projectexplorer/taskfile.h index 1d5772cf811..abccdd29c5a 100644 --- a/src/plugins/projectexplorer/taskfile.h +++ b/src/plugins/projectexplorer/taskfile.h @@ -24,7 +24,7 @@ public: TaskFile(QObject *parent); ReloadBehavior reloadBehavior(ChangeTrigger state, ChangeType type) const override; - Utils::expected_str reload(ReloadFlag flag, ChangeType type) override; + Utils::Result reload(ReloadFlag flag, ChangeType type) override; bool load(QString *errorString, const Utils::FilePath &fileName); diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp index 9474c8ce159..5204334ecd7 100644 --- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp @@ -929,8 +929,7 @@ void QmakePriFile::save(const QStringList &lines) QStringList errorStrings; Core::IDocument *document = Core::DocumentModel::documentForFilePath(filePath()); if (document) { - expected_str res = - document->reload(Core::IDocument::FlagReload, Core::IDocument::TypeContents); + Result res = document->reload(Core::IDocument::FlagReload, Core::IDocument::TypeContents); if (!res) errorStrings << res.error(); } diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index 5e25a908829..c8ae2c884e7 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -101,13 +101,13 @@ public: Q_UNUSED(type) return BehaviorSilent; } - expected_str reload(ReloadFlag flag, ChangeType type) override + Result reload(ReloadFlag flag, ChangeType type) override { Q_UNUSED(flag) Q_UNUSED(type) if (m_priFile) m_priFile->scheduleUpdate(); - return {}; + return Result::Ok; } void setPriFile(QmakePriFile *priFile) { m_priFile = priFile; } diff --git a/src/plugins/qmldesigner/assetexporterplugin/assetexporter.cpp b/src/plugins/qmldesigner/assetexporterplugin/assetexporter.cpp index 096002131bf..5fd0c5e0fa7 100644 --- a/src/plugins/qmldesigner/assetexporterplugin/assetexporter.cpp +++ b/src/plugins/qmldesigner/assetexporterplugin/assetexporter.cpp @@ -242,7 +242,7 @@ void AssetExporter::onQmlFileLoaded() .arg(designDocument->displayName())); } else { exportComponent(m_view->rootModelNode()); - if (Utils::expected_str res = m_view->saveQmlFile(); !res) { + if (Utils::Result res = m_view->saveQmlFile(); !res) { ExportNotification::addError(tr("Error saving component file. %1") .arg(res.error().isEmpty()? tr("Unknown") : res.error())); } diff --git a/src/plugins/qmldesigner/assetexporterplugin/assetexporterview.cpp b/src/plugins/qmldesigner/assetexporterplugin/assetexporterview.cpp index 70de208da33..36ff912323a 100644 --- a/src/plugins/qmldesigner/assetexporterplugin/assetexporterview.cpp +++ b/src/plugins/qmldesigner/assetexporterplugin/assetexporterview.cpp @@ -49,11 +49,11 @@ bool AssetExporterView::loadQmlFile(const Utils::FilePath &path, uint timeoutSec return true; } -Utils::expected_str AssetExporterView::saveQmlFile() const +Utils::Result AssetExporterView::saveQmlFile() const { if (!m_currentEditor) { qCDebug(loggerWarn) << "Saving QML file failed. No editor."; - return Utils::make_unexpected(QString("Saving QML file failed. No editor.")); + return Utils::Result::Error("Saving QML file failed. No editor."); } return m_currentEditor->document()->save(); diff --git a/src/plugins/qmldesigner/assetexporterplugin/assetexporterview.h b/src/plugins/qmldesigner/assetexporterplugin/assetexporterview.h index c61649875db..7ed01126e21 100644 --- a/src/plugins/qmldesigner/assetexporterplugin/assetexporterview.h +++ b/src/plugins/qmldesigner/assetexporterplugin/assetexporterview.h @@ -28,7 +28,7 @@ public: AssetExporterView(ExternalDependenciesInterface &externalDependencies); bool loadQmlFile(const Utils::FilePath &path, uint timeoutSecs = 10); - Utils::expected_str saveQmlFile() const; + Utils::Result saveQmlFile() const; void modelAttached(Model *model) override; void instanceInformationsChanged(const QMultiHash &informationChangeHash) override; diff --git a/src/plugins/resourceeditor/resourceeditor.cpp b/src/plugins/resourceeditor/resourceeditor.cpp index 08fcef967fe..5b95da532db 100644 --- a/src/plugins/resourceeditor/resourceeditor.cpp +++ b/src/plugins/resourceeditor/resourceeditor.cpp @@ -56,7 +56,7 @@ public: bool shouldAutoSave() const final { return m_shouldAutoSave; } bool isModified() const final { return m_model.dirty(); } bool isSaveAsAllowed() const final { return true; } - expected_str reload(ReloadFlag flag, ChangeType type) final; + Result reload(ReloadFlag flag, ChangeType type) final; void setFilePath(const FilePath &newName) final; void setBlockDirtyChanged(bool value) { m_blockDirtyChanged = value; } @@ -67,7 +67,7 @@ signals: void loaded(bool success); private: - Utils::expected_str saveImpl(const FilePath &filePath, bool autoSave) final; + Result saveImpl(const FilePath &filePath, bool autoSave) final; void dirtyChanged(bool); RelativeResourceModel m_model; @@ -209,20 +209,20 @@ IDocument::OpenResult ResourceEditorDocument::open(QString *errorString, return OpenResult::Success; } -expected_str ResourceEditorDocument::saveImpl(const FilePath &filePath, bool autoSave) +Result ResourceEditorDocument::saveImpl(const FilePath &filePath, bool autoSave) { if (debugResourceEditorW) qDebug() << ">ResourceEditorW::saveImpl: " << filePath; if (filePath.isEmpty()) - return make_unexpected(QString()); // FIXME: better message + return Result::Error("ASSERT: ResourceEditorDocument: filePath.isEmpty()"); m_blockDirtyChanged = true; m_model.setFilePath(filePath); if (!m_model.save()) { m_model.setFilePath(this->filePath()); m_blockDirtyChanged = false; - return make_unexpected(m_model.errorMessage()); + return Result::Error(m_model.errorMessage()); } m_shouldAutoSave = false; @@ -230,14 +230,14 @@ expected_str ResourceEditorDocument::saveImpl(const FilePath &filePath, bo m_model.setFilePath(this->filePath()); m_model.setDirty(true); m_blockDirtyChanged = false; - return {}; + return Result::Ok; } setFilePath(filePath); m_blockDirtyChanged = false; emit changed(); - return {}; + return Result::Ok; } bool ResourceEditorDocument::setContents(const QByteArray &contents) @@ -280,18 +280,16 @@ void ResourceEditorImpl::restoreState(const QByteArray &state) m_resourceEditor->restoreState(splitterState); } -expected_str ResourceEditorDocument::reload(ReloadFlag flag, ChangeType type) +Result ResourceEditorDocument::reload(ReloadFlag flag, ChangeType type) { Q_UNUSED(type) if (flag == FlagIgnore) - return {}; + return Result::Ok; emit aboutToReload(); QString errorString; const bool success = (open(&errorString, filePath(), filePath()) == OpenResult::Success); emit reloadFinished(success); - if (!success) - return make_unexpected(errorString); - return {}; + return Result(success, errorString); } void ResourceEditorDocument::dirtyChanged(bool dirty) diff --git a/src/plugins/resourceeditor/resourcenode.cpp b/src/plugins/resourceeditor/resourcenode.cpp index f593faecc15..587b5d07f0f 100644 --- a/src/plugins/resourceeditor/resourcenode.cpp +++ b/src/plugins/resourceeditor/resourcenode.cpp @@ -47,13 +47,14 @@ public: return BehaviorSilent; } - expected_str reload(ReloadFlag, ChangeType) final + Result reload(ReloadFlag, ChangeType) final { FolderNode *parent = m_node->parentFolderNode(); - QTC_ASSERT(parent, return make_unexpected(QString())); + if (!parent) + return Result::Error("ASSERT: !parent"); parent->replaceSubtree(m_node, std::make_unique( m_node->filePath(), parent->filePath(), m_node->contents())); - return {}; + return Result::Ok; } private: diff --git a/src/plugins/scxmleditor/scxmleditordocument.cpp b/src/plugins/scxmleditor/scxmleditordocument.cpp index 3e71cf2b3d0..9c4e5c83b6d 100644 --- a/src/plugins/scxmleditor/scxmleditordocument.cpp +++ b/src/plugins/scxmleditor/scxmleditordocument.cpp @@ -58,22 +58,23 @@ Core::IDocument::OpenResult ScxmlEditorDocument::open(QString *errorString, return OpenResult::Success; } -Utils::expected_str ScxmlEditorDocument::saveImpl(const FilePath &filePath, bool autoSave) +Result ScxmlEditorDocument::saveImpl(const FilePath &filePath, bool autoSave) { if (filePath.isEmpty()) - return make_unexpected(QString()); + return Result::Error("ASSERT: ScxmlEditorDocument: filePath.isEmpty()"); + bool dirty = m_designWidget->isDirty(); m_designWidget->setFileName(filePath.toString()); if (!m_designWidget->save()) { m_designWidget->setFileName(this->filePath().toString()); - return make_unexpected(m_designWidget->errorMessage()); + return Result::Error(m_designWidget->errorMessage()); } if (autoSave) { m_designWidget->setFileName(this->filePath().toString()); m_designWidget->save(); - return {}; + return Result::Ok; } setFilePath(filePath); @@ -81,7 +82,7 @@ Utils::expected_str ScxmlEditorDocument::saveImpl(const FilePath &filePath if (dirty != m_designWidget->isDirty()) emit changed(); - return {}; + return Result::Ok; } void ScxmlEditorDocument::setFilePath(const FilePath &newName) @@ -110,19 +111,17 @@ bool ScxmlEditorDocument::isModified() const return m_designWidget && m_designWidget->isDirty(); } -Utils::expected_str ScxmlEditorDocument::reload(ReloadFlag flag, ChangeType type) +Result ScxmlEditorDocument::reload(ReloadFlag flag, ChangeType type) { Q_UNUSED(type) if (flag == FlagIgnore) - return {}; + return Result::Ok; emit aboutToReload(); QString errorString; emit reloadRequested(&errorString, filePath().toString()); const bool success = errorString.isEmpty(); emit reloadFinished(success); - if (!success) - return make_unexpected(errorString); - return {}; + return Result(success, errorString); } bool ScxmlEditorDocument::supportsCodec(const QTextCodec *codec) const diff --git a/src/plugins/scxmleditor/scxmleditordocument.h b/src/plugins/scxmleditor/scxmleditordocument.h index d45c80ccd15..9121313647d 100644 --- a/src/plugins/scxmleditor/scxmleditordocument.h +++ b/src/plugins/scxmleditor/scxmleditordocument.h @@ -33,7 +33,7 @@ public: bool shouldAutoSave() const override; bool isSaveAsAllowed() const override; bool isModified() const override; - Utils::expected_str reload(ReloadFlag flag, ChangeType type) override; + Utils::Result reload(ReloadFlag flag, ChangeType type) override; bool supportsCodec(const QTextCodec *codec) const override; // Internal @@ -46,7 +46,7 @@ signals: void reloadRequested(QString *errorString, const QString &); protected: - Utils::expected_str saveImpl(const Utils::FilePath &filePath, bool autoSave) override; + Utils::Result saveImpl(const Utils::FilePath &filePath, bool autoSave) override; private: QPointer m_designWidget; diff --git a/src/plugins/squish/objectsmapdocument.cpp b/src/plugins/squish/objectsmapdocument.cpp index a1e0df8033b..4e373eead2a 100644 --- a/src/plugins/squish/objectsmapdocument.cpp +++ b/src/plugins/squish/objectsmapdocument.cpp @@ -42,20 +42,20 @@ Core::IDocument::OpenResult ObjectsMapDocument::open(QString *errorString, return result; } -expected_str ObjectsMapDocument::saveImpl(const FilePath &filePath, bool autoSave) +Result ObjectsMapDocument::saveImpl(const FilePath &filePath, bool autoSave) { if (filePath.isEmpty()) - return make_unexpected(QString()); + return Result::Error("ASSERT: ObjectsMapDocument: filePath.isEmpty()"); const bool writeOk = writeFile(filePath); if (!writeOk) - return make_unexpected(Tr::tr("Failed to write \"%1\"").arg(filePath.toUserOutput())); + return Result::Error(Tr::tr("Failed to write \"%1\"").arg(filePath.toUserOutput())); if (!autoSave) { setModified(false); setFilePath(filePath); } - return {}; + return Result::Ok; } Utils::FilePath ObjectsMapDocument::fallbackSaveAsPath() const @@ -74,21 +74,19 @@ void ObjectsMapDocument::setModified(bool modified) emit changed(); } -expected_str ObjectsMapDocument::reload(Core::IDocument::ReloadFlag flag, - Core::IDocument::ChangeType type) +Result ObjectsMapDocument::reload(Core::IDocument::ReloadFlag flag, + Core::IDocument::ChangeType type) { Q_UNUSED(type); if (flag == FlagIgnore) - return {}; + return Result::Ok; emit aboutToReload(); QString errorString; const bool success = (openImpl(&errorString, filePath(), filePath()) == OpenResult::Success); if (success) setModified(false); emit reloadFinished(success); - if (!success) - return make_unexpected(errorString); - return {}; + return Result(success, errorString); } bool ObjectsMapDocument::buildObjectsMapTree(const QByteArray &contents) diff --git a/src/plugins/squish/objectsmapdocument.h b/src/plugins/squish/objectsmapdocument.h index a9a74ece6c2..52ea97d499d 100644 --- a/src/plugins/squish/objectsmapdocument.h +++ b/src/plugins/squish/objectsmapdocument.h @@ -26,7 +26,7 @@ public: bool isModified() const override { return m_isModified; } void setModified(bool modified); bool isSaveAsAllowed() const override { return true; } - Utils::expected_str reload(ReloadFlag flag, ChangeType type) override; + Utils::Result reload(ReloadFlag flag, ChangeType type) override; bool shouldAutoSave() const override { return true; } bool setContents(const QByteArray &contents) override; @@ -34,7 +34,7 @@ public: ObjectsMapModel *model() const { return m_contentModel; } protected: - Utils::expected_str saveImpl(const Utils::FilePath &fileName, bool autoSave) override; + Utils::Result saveImpl(const Utils::FilePath &fileName, bool autoSave) override; private: OpenResult openImpl(QString *error, diff --git a/src/plugins/texteditor/textdocument.cpp b/src/plugins/texteditor/textdocument.cpp index 198438012c0..bf43ebc36e8 100644 --- a/src/plugins/texteditor/textdocument.cpp +++ b/src/plugins/texteditor/textdocument.cpp @@ -589,7 +589,7 @@ QTextDocument *TextDocument::document() const * If \a autoSave is true, the cursor will be restored and some signals suppressed * and we do not clean up the text file (cleanWhitespace(), ensureFinalNewLine()). */ -Utils::expected_str TextDocument::saveImpl(const FilePath &filePath, bool autoSave) +Result TextDocument::saveImpl(const FilePath &filePath, bool autoSave) { QTextCursor cursor(&d->m_document); @@ -661,16 +661,16 @@ Utils::expected_str TextDocument::saveImpl(const FilePath &filePath, bool } if (!ok) - return make_unexpected(errorString); + return Result::Error(errorString); d->m_autoSaveRevision = d->m_document.revision(); if (autoSave) - return {}; + return Result::Ok; // inform about the new filename d->m_document.setModified(false); // also triggers update of the block revisions setFilePath(filePath.absoluteFilePath()); emit changed(); - return {}; + return Result::Ok; } QByteArray TextDocument::contents() const @@ -791,19 +791,19 @@ Core::IDocument::OpenResult TextDocument::openImpl(QString *errorString, return OpenResult::Success; } -expected_str TextDocument::reload(QTextCodec *codec) +Result TextDocument::reload(QTextCodec *codec) { - QTC_ASSERT(codec, return make_unexpected(QString("No codec given"))); + QTC_ASSERT(codec, return Result::Error("No codec given")); setCodec(codec); return reload(); } -expected_str TextDocument::reload() +Result TextDocument::reload() { return reload(filePath()); } -expected_str TextDocument::reload(const FilePath &realFilePath) +Result TextDocument::reload(const FilePath &realFilePath) { emit aboutToReload(); auto documentLayout = @@ -818,9 +818,8 @@ expected_str TextDocument::reload(const FilePath &realFilePath) if (documentLayout) documentLayout->documentReloaded(this); // re-adds text marks emit reloadFinished(success); - if (!success) - return make_unexpected(errorString); - return {}; + + return Result(success, errorString); } bool TextDocument::setPlainText(const QString &text) @@ -837,11 +836,11 @@ bool TextDocument::setPlainText(const QString &text) return true; } -expected_str TextDocument::reload(ReloadFlag flag, ChangeType type) +Result TextDocument::reload(ReloadFlag flag, ChangeType type) { if (flag == FlagIgnore) { if (type != TypeContents) - return {}; + return Result::Ok; const bool wasModified = document()->isModified(); { @@ -852,7 +851,7 @@ expected_str TextDocument::reload(ReloadFlag flag, ChangeType type) } if (!wasModified) modificationChanged(true); - return {}; + return Result::Ok; } return reload(); } diff --git a/src/plugins/texteditor/textdocument.h b/src/plugins/texteditor/textdocument.h index 67a0fc8b772..72ee5a8b6cc 100644 --- a/src/plugins/texteditor/textdocument.h +++ b/src/plugins/texteditor/textdocument.h @@ -105,7 +105,7 @@ public: bool shouldAutoSave() const override; bool isModified() const override; bool isSaveAsAllowed() const override; - Utils::expected_str reload(ReloadFlag flag, ChangeType type) override; + Utils::Result reload(ReloadFlag flag, ChangeType type) override; void setFilePath(const Utils::FilePath &newName) override; ReloadBehavior reloadBehavior(ChangeTrigger state, ChangeType type) const override; @@ -117,8 +117,8 @@ public: OpenResult open(QString *errorString, const Utils::FilePath &filePath, const Utils::FilePath &realFilePath) override; - virtual Utils::expected_str reload(); - Utils::expected_str reload(const Utils::FilePath &realFilePath); + virtual Utils::Result reload(); + Utils::Result reload(const Utils::FilePath &realFilePath); bool setPlainText(const QString &text); QTextDocument *document() const; @@ -127,7 +127,7 @@ public: void resetSyntaxHighlighter(const SyntaxHighLighterCreator &creator); SyntaxHighlighter *syntaxHighlighter() const; - Utils::expected_str reload(QTextCodec *codec); + Utils::Result reload(QTextCodec *codec); void cleanWhitespace(const QTextCursor &cursor); virtual void triggerPendingUpdates(); @@ -162,7 +162,7 @@ signals: protected: virtual void applyFontSettings(); - Utils::expected_str saveImpl(const Utils::FilePath &filePath, bool autoSave) override; + Utils::Result saveImpl(const Utils::FilePath &filePath, bool autoSave) override; private: OpenResult openImpl(QString *errorString, diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index bedc8179a6a..3e1329096b7 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -1862,7 +1862,7 @@ void TextEditorWidget::selectEncoding() const CodecSelectorResult result = Core::askForCodec(Core::ICore::dialogParent(), doc); switch (result.action) { case Core::CodecSelectorResult::Reload: { - if (expected_str res = doc->reload(result.codec); !res) { + if (Result res = doc->reload(result.codec); !res) { QMessageBox::critical(this, Tr::tr("File Error"), res.error()); break; } diff --git a/src/plugins/vcsbase/submiteditorfile.cpp b/src/plugins/vcsbase/submiteditorfile.cpp index 229f82a748f..ebdd14bf0f9 100644 --- a/src/plugins/vcsbase/submiteditorfile.cpp +++ b/src/plugins/vcsbase/submiteditorfile.cpp @@ -67,21 +67,21 @@ void SubmitEditorFile::setModified(bool modified) emit changed(); } -expected_str SubmitEditorFile::saveImpl(const FilePath &filePath, bool autoSave) +Result SubmitEditorFile::saveImpl(const FilePath &filePath, bool autoSave) { FileSaver saver(filePath, QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text); saver.write(m_editor->fileContents()); QString errorString; if (!saver.finalize(&errorString)) - return make_unexpected(errorString); + return Result::Error(errorString); if (autoSave) - return {}; + return Result::Ok; setFilePath(filePath.absoluteFilePath()); setModified(false); if (!errorString.isEmpty()) - return make_unexpected(errorString); + return Result::Error(errorString); emit changed(); - return {}; + return Result::Ok; } IDocument::ReloadBehavior SubmitEditorFile::reloadBehavior(ChangeTrigger state, ChangeType type) const diff --git a/src/plugins/vcsbase/submiteditorfile.h b/src/plugins/vcsbase/submiteditorfile.h index e2771cdc229..e71516ab699 100644 --- a/src/plugins/vcsbase/submiteditorfile.h +++ b/src/plugins/vcsbase/submiteditorfile.h @@ -28,7 +28,7 @@ public: void setModified(bool modified = true); protected: - Utils::expected_str saveImpl(const Utils::FilePath &filePath, bool autoSave) override; + Utils::Result saveImpl(const Utils::FilePath &filePath, bool autoSave) override; private: bool m_modified;