diff options
| author | Eike Ziller <eike.ziller@qt.io> | 2023-05-05 10:39:47 +0200 |
|---|---|---|
| committer | Eike Ziller <eike.ziller@qt.io> | 2023-05-05 10:39:47 +0200 |
| commit | 7724f8653f9c0e5625179ecda8a545cb30f4e1b4 (patch) | |
| tree | cbe5b15de32a6df7012bafb6f4e853ab9c21c676 /src | |
| parent | 15193d3250834f85d90b790c0c40632e6de65033 (diff) | |
| parent | b083a4d55efbf9f6558034c0ce4efe31062e0e5b (diff) | |
| download | qt-creator-7724f8653f9c0e5625179ecda8a545cb30f4e1b4.tar.gz | |
Merge remote-tracking branch 'origin/10.0'
Change-Id: I7a3925ad8e4f97461b64a70217102ed900430253
Diffstat (limited to 'src')
| -rw-r--r-- | src/libs/utils/fileinprojectfinder.cpp | 5 | ||||
| -rw-r--r-- | src/plugins/clangformat/clangformatutils.cpp | 43 | ||||
| -rw-r--r-- | src/plugins/clangformat/tests/clangformat-test.cpp | 10 | ||||
| -rw-r--r-- | src/plugins/cmakeprojectmanager/cmakeproject.cpp | 4 | ||||
| -rw-r--r-- | src/plugins/cmakeprojectmanager/presetsparser.cpp | 2 | ||||
| -rw-r--r-- | src/plugins/coreplugin/locator/locatorsettingspage.cpp | 4 | ||||
| -rw-r--r-- | src/plugins/cppeditor/cppeditorwidget.cpp | 20 | ||||
| -rw-r--r-- | src/plugins/cppeditor/cppquickfixassistant.cpp | 3 | ||||
| -rw-r--r-- | src/plugins/genericprojectmanager/genericproject.cpp | 5 | ||||
| -rw-r--r-- | src/plugins/genericprojectmanager/genericprojectwizard.cpp | 2 | ||||
| -rw-r--r-- | src/plugins/mcusupport/mcukitmanager.cpp | 24 | ||||
| -rw-r--r-- | src/plugins/qmljseditor/qmljseditor.cpp | 2 | ||||
| -rw-r--r-- | src/plugins/texteditor/codeassist/codeassistant.cpp | 9 | ||||
| m--------- | src/shared/qbs | 0 |
14 files changed, 90 insertions, 43 deletions
diff --git a/src/libs/utils/fileinprojectfinder.cpp b/src/libs/utils/fileinprojectfinder.cpp index f92cb70fa7..6ee3c34bec 100644 --- a/src/libs/utils/fileinprojectfinder.cpp +++ b/src/libs/utils/fileinprojectfinder.cpp @@ -248,7 +248,10 @@ bool FileInProjectFinder::findFileOrDirectory(const FilePath &originalPath, File } } while (prefixToIgnore != -1) { - FilePath candidate = originalPath.resolvePath(m_projectDir); + QString candidateString = originalPath.toFSPathString(); + candidateString.remove(0, prefixToIgnore); + candidateString.prepend(m_projectDir.toString()); + const FilePath candidate = FilePath::fromString(candidateString); const int matchLength = origLength - prefixToIgnore; // FIXME: This might be a worse match than what we find later. if (checkPath(candidate, matchLength, fileHandler, directoryHandler)) { diff --git a/src/plugins/clangformat/clangformatutils.cpp b/src/plugins/clangformat/clangformatutils.cpp index 1b09a9d3a1..3ae9301433 100644 --- a/src/plugins/clangformat/clangformatutils.cpp +++ b/src/plugins/clangformat/clangformatutils.cpp @@ -171,9 +171,7 @@ clang::format::FormatStyle qtcStyle() style.SpacesInCStyleCastParentheses = false; style.SpacesInParentheses = false; style.SpacesInSquareBrackets = false; - style.StatementMacros.emplace_back("Q_OBJECT"); - style.StatementMacros.emplace_back("QT_BEGIN_NAMESPACE"); - style.StatementMacros.emplace_back("QT_END_NAMESPACE"); + addQtcStatementMacros(style); style.Standard = FormatStyle::LS_Cpp11; style.TabWidth = 4; style.UseTab = FormatStyle::UT_Never; @@ -278,9 +276,44 @@ Utils::FilePath configForFile(const Utils::FilePath &fileName) void addQtcStatementMacros(clang::format::FormatStyle &style) { - static const std::vector<std::string> macros = {"Q_OBJECT", + static const std::vector<std::string> macros = {"Q_CLASSINFO", + "Q_ENUM", + "Q_ENUM_NS", + "Q_FLAG", + "Q_FLAG_NS", + "Q_GADGET", + "Q_GADGET_EXPORT", + "Q_INTERFACES", + "Q_MOC_INCLUDE", + "Q_NAMESPACE", + "Q_NAMESPACE_EXPORT", + "Q_OBJECT", + "Q_PROPERTY", + "Q_REVISION", + "Q_DISABLE_COPY", + "Q_SET_OBJECT_NAME", "QT_BEGIN_NAMESPACE", - "QT_END_NAMESPACE"}; + "QT_END_NAMESPACE", + + "QML_ADDED_IN_MINOR_VERSION", + "QML_ANONYMOUS", + "QML_ATTACHED", + "QML_DECLARE_TYPE", + "QML_DECLARE_TYPEINFO", + "QML_ELEMENT", + "QML_EXTENDED", + "QML_EXTENDED_NAMESPACE", + "QML_EXTRA_VERSION", + "QML_FOREIGN", + "QML_FOREIGN_NAMESPACE", + "QML_IMPLEMENTS_INTERFACES", + "QML_INTERFACE", + "QML_NAMED_ELEMENT", + "QML_REMOVED_IN_MINOR_VERSION", + "QML_SINGLETON", + "QML_UNAVAILABLE", + "QML_UNCREATABLE", + "QML_VALUE_TYPE"}; for (const std::string ¯o : macros) { if (std::find(style.StatementMacros.begin(), style.StatementMacros.end(), macro) == style.StatementMacros.end()) diff --git a/src/plugins/clangformat/tests/clangformat-test.cpp b/src/plugins/clangformat/tests/clangformat-test.cpp index c5f77072e4..80d2cc4da9 100644 --- a/src/plugins/clangformat/tests/clangformat-test.cpp +++ b/src/plugins/clangformat/tests/clangformat-test.cpp @@ -628,10 +628,16 @@ void ClangFormatTest::testCommentBlock() void ClangFormatTest::testClassIndentStructure() { - insertLines({"class test {", " Q_OBJECT", " public:", "};"}); + insertLines( + {"class test {", " Q_OBJECT", " QML_ELEMENT", " QML_SINGLETON", " public:", "};"}); m_indenter->indent(*m_cursor, QChar::Null, TextEditor::TabSettings()); QCOMPARE(documentLines(), - (std::vector<QString>{"class test {", " Q_OBJECT", "public:", "};"})); + (std::vector<QString>{"class test {", + " Q_OBJECT", + " QML_ELEMENT", + " QML_SINGLETON", + "public:", + "};"})); } void ClangFormatTest::testIndentInitializeVector() diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 21ee60f365..71b96610db 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -105,7 +105,9 @@ Internal::PresetsData CMakeProject::combinePresets(Internal::PresetsData &cmakeP Utils::sort(presetsList, [](const auto &left, const auto &right) { const bool sameInheritance = left.inherits && right.inherits && left.inherits.value() == right.inherits.value(); - if (!left.inherits || left.inherits.value().contains(right.name) || sameInheritance) + const bool leftInheritsRight = left.inherits + && left.inherits.value().contains(right.name); + if ((left.inherits && !right.inherits) || leftInheritsRight || sameInheritance) return false; return true; }); diff --git a/src/plugins/cmakeprojectmanager/presetsparser.cpp b/src/plugins/cmakeprojectmanager/presetsparser.cpp index 0f9b0c8c8e..f3be87f7ea 100644 --- a/src/plugins/cmakeprojectmanager/presetsparser.cpp +++ b/src/plugins/cmakeprojectmanager/presetsparser.cpp @@ -82,7 +82,7 @@ std::optional<PresetsDetails::Condition> parseCondition(const QJsonValue &jsonVa if (type == "const") { condition->type = type; - condition->constValue = object.value("const").toBool(); + condition->constValue = object.value("value").toBool(); return condition; } diff --git a/src/plugins/coreplugin/locator/locatorsettingspage.cpp b/src/plugins/coreplugin/locator/locatorsettingspage.cpp index bd5a9f63aa..2ecc451a9a 100644 --- a/src/plugins/coreplugin/locator/locatorsettingspage.cpp +++ b/src/plugins/coreplugin/locator/locatorsettingspage.cpp @@ -94,7 +94,7 @@ QVariant FilterItem::data(int column, int role) const return m_filter->shortcutString(); break; case FilterIncludedByDefault: - if (role == Qt::CheckStateRole || role == SortRole || role == Qt::EditRole) + if (role == Qt::CheckStateRole || role == SortRole) return m_filter->isIncludedByDefault() ? Qt::Checked : Qt::Unchecked; break; default: @@ -113,7 +113,7 @@ Qt::ItemFlags FilterItem::flags(int column) const if (column == FilterPrefix) return Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable; if (column == FilterIncludedByDefault) - return Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsUserCheckable; + return Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsUserCheckable; return Qt::ItemIsSelectable | Qt::ItemIsEnabled; } diff --git a/src/plugins/cppeditor/cppeditorwidget.cpp b/src/plugins/cppeditor/cppeditorwidget.cpp index 44f9e01a01..9aa98c7189 100644 --- a/src/plugins/cppeditor/cppeditorwidget.cpp +++ b/src/plugins/cppeditor/cppeditorwidget.cpp @@ -1267,20 +1267,16 @@ std::unique_ptr<AssistInterface> CppEditorWidget::createAssistInterface(AssistKi if (cap) return cap->createAssistInterface(textDocument()->filePath(), this, getFeatures(), reason); - else { - if (isOldStyleSignalOrSlot()) - return CppModelManager::instance() - ->completionAssistProvider() - ->createAssistInterface(textDocument()->filePath(), this, getFeatures(), reason); - return TextEditorWidget::createAssistInterface(kind, reason); + + if (isOldStyleSignalOrSlot()) { + return CppModelManager::instance() + ->completionAssistProvider() + ->createAssistInterface(textDocument()->filePath(), this, getFeatures(), reason); } - } else if (kind == QuickFix) { - if (isSemanticInfoValid()) - return std::make_unique<CppQuickFixInterface>(const_cast<CppEditorWidget *>(this), reason); - } else { - return TextEditorWidget::createAssistInterface(kind, reason); } - return nullptr; + if (kind == QuickFix && isSemanticInfoValid()) + return std::make_unique<CppQuickFixInterface>(const_cast<CppEditorWidget *>(this), reason); + return TextEditorWidget::createAssistInterface(kind, reason); } QSharedPointer<FunctionDeclDefLink> CppEditorWidget::declDefLink() const diff --git a/src/plugins/cppeditor/cppquickfixassistant.cpp b/src/plugins/cppeditor/cppquickfixassistant.cpp index 89af86e334..19514387d7 100644 --- a/src/plugins/cppeditor/cppquickfixassistant.cpp +++ b/src/plugins/cppeditor/cppquickfixassistant.cpp @@ -149,7 +149,8 @@ QTextCursor CppQuickFixInterface::adjustedCursor() QuickFixOperations quickFixOperations(const TextEditor::AssistInterface *interface) { const auto cppInterface = dynamic_cast<const CppQuickFixInterface *>(interface); - QTC_ASSERT(cppInterface, return {}); + if (!cppInterface) + return {}; QuickFixOperations quickFixes; for (CppQuickFixFactory *factory : CppQuickFixFactory::cppQuickFixFactories()) factory->match(*cppInterface, quickFixes); diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 906eeb5809..ef83f906a9 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -330,8 +330,9 @@ bool GenericBuildSystem::addFiles(Node *, const FilePaths &filePaths_, FilePaths QSet<QString> toAdd; for (const QString &filePath : filePaths) { - const QString directory = QFileInfo(filePath).absolutePath(); - if (!includes.contains(directory)) + const QFileInfo fi(filePath); + const QString directory = fi.absolutePath(); + if (fi.fileName() == "include" && !includes.contains(directory)) toAdd << directory; } diff --git a/src/plugins/genericprojectmanager/genericprojectwizard.cpp b/src/plugins/genericprojectmanager/genericprojectwizard.cpp index 27d2a3932b..1f125ff321 100644 --- a/src/plugins/genericprojectmanager/genericprojectwizard.cpp +++ b/src/plugins/genericprojectmanager/genericprojectwizard.cpp @@ -141,6 +141,8 @@ Core::GeneratedFiles GenericProjectWizard::generateFiles(const QWizard *w, const QDir dir(projectPath.toString()); for (const QString &path : paths) { QFileInfo fileInfo(path); + if (fileInfo.fileName() != "include") + continue; QDir thisDir(fileInfo.absoluteFilePath()); if (! thisDir.entryList(nameFilters, QDir::Files).isEmpty()) { diff --git a/src/plugins/mcusupport/mcukitmanager.cpp b/src/plugins/mcusupport/mcukitmanager.cpp index 61f268f021..f68eca6973 100644 --- a/src/plugins/mcusupport/mcukitmanager.cpp +++ b/src/plugins/mcusupport/mcukitmanager.cpp @@ -289,8 +289,7 @@ public: cMakeToolchainFile.toString().toUtf8()); if (!cMakeToolchainFile.exists()) { printMessage( - Tr::tr( - "Warning for target %1: missing CMake toolchain file expected at %2.") + Tr::tr("Warning for target %1: missing CMake toolchain file expected at %2.") .arg(generateKitNameFromTarget(mcuTarget), cMakeToolchainFile.toUserOutput()), false); @@ -301,8 +300,7 @@ public: "/lib/cmake/Qul/QulGenerators.cmake"); configMap.insert("QUL_GENERATORS", generatorsPath.toString().toUtf8()); if (!generatorsPath.exists()) { - printMessage(Tr::tr( - "Warning for target %1: missing QulGenerators expected at %2.") + printMessage(Tr::tr("Warning for target %1: missing QulGenerators expected at %2.") .arg(generateKitNameFromTarget(mcuTarget), generatorsPath.toUserOutput()), false); @@ -510,8 +508,7 @@ void createAutomaticKits(const SettingsHandler::Ptr &settingsHandler) } case McuAbstractPackage::Status::EmptyPath: { printMessage( - Tr::tr( - "Missing %1. Add the path in Edit > Preferences > Devices > MCU.") + Tr::tr("Missing %1. Add the path in Edit > Preferences > Devices > MCU.") .arg(qtForMCUsPackage->detectionPath().toUserOutput()), true); return; @@ -524,9 +521,8 @@ void createAutomaticKits(const SettingsHandler::Ptr &settingsHandler) if (CMakeProjectManager::CMakeToolManager::cmakeTools().isEmpty()) { printMessage( - Tr::tr( - "No CMake tool was detected. Add a CMake tool in Edit > Preferences > " - "Kits > CMake."), + Tr::tr("No CMake tool was detected. Add a CMake tool in Edit > Preferences > " + "Kits > CMake."), true); return; } @@ -744,11 +740,17 @@ static bool anyKitDescriptionFileExists(const FilePaths &jsonFiles, const QRegularExpressionMatch match = re.match(jsonFile.fileName()); QStringList kitsPropertiesFromFileName; if (match.hasMatch()) { - const QString toolchain = match.captured(1).replace( - "gnu", "gcc"); // kitFileName contains gnu while profiles.xml contains gcc + QString toolchain = match.captured(1); const QString vendor = match.captured(2); const QString device = match.captured(3); + /* + * file name of kit starts with "gnu" while in profiles.xml name of + * toolchain is "gcc" on Linux and "mingw" on Windows + */ + toolchain = HostOsInfo::isLinuxHost() ? toolchain.replace("gnu", "gcc") + : toolchain.replace("gnu", "mingw"); + kitsPropertiesFromFileName << toolchain << vendor << device; } diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index 590ef1da58..ccc94a5ea4 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -1042,7 +1042,7 @@ std::unique_ptr<AssistInterface> QmlJSEditorWidget::createAssistInterface( return std::make_unique<Internal::QmlJSQuickFixAssistInterface>( const_cast<QmlJSEditorWidget *>(this), reason); } - return nullptr; + return TextEditorWidget::createAssistInterface(assistKind, reason); } QString QmlJSEditorWidget::foldReplacementText(const QTextBlock &block) const diff --git a/src/plugins/texteditor/codeassist/codeassistant.cpp b/src/plugins/texteditor/codeassist/codeassistant.cpp index b81161dd6a..bbcbb130be 100644 --- a/src/plugins/texteditor/codeassist/codeassistant.cpp +++ b/src/plugins/texteditor/codeassist/codeassistant.cpp @@ -175,8 +175,7 @@ void CodeAssistantPrivate::requestProposal(AssistReason reason, std::unique_ptr<AssistInterface> assistInterface = m_editorWidget->createAssistInterface(kind, reason); - if (!assistInterface) - return; + QTC_ASSERT(assistInterface, return); // We got an assist provider and interface so no need to reset the current context anymore earlyReturnContextClear.reset({}); @@ -403,8 +402,10 @@ void CodeAssistantPrivate::notifyChange() if (m_editorWidget->position() < m_proposalWidget->basePosition()) { destroyContext(); } else { - m_proposalWidget->updateProposal( - m_editorWidget->createAssistInterface(m_assistKind, m_proposalWidget->reason())); + std::unique_ptr<AssistInterface> assistInterface + = m_editorWidget->createAssistInterface(m_assistKind, m_proposalWidget->reason()); + QTC_ASSERT(assistInterface, destroyContext(); return); + m_proposalWidget->updateProposal(std::move(assistInterface)); if (!isDisplayingProposal()) requestActivationCharProposal(); } diff --git a/src/shared/qbs b/src/shared/qbs -Subproject e002680feb415ee7d26e3a31d70afeef0d50dea +Subproject 03e717b06ed5c0864618e763f08f91d9fc94b73 |
