From b9924e2b4b3544ea494925576a421cd9a5fce94f Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Thu, 13 Jun 2019 13:16:35 +0200 Subject: [PATCH 01/35] Fix perfresourcecounter test If qrand() generates a 0, the obtain() is ignored as that is the invalid ID. Change-Id: I608f2687a6ca9a40d905c665a3585bffc1ea5695 Reviewed-by: Christian Stenger --- src/plugins/perfprofiler/tests/perfresourcecounter_test.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/plugins/perfprofiler/tests/perfresourcecounter_test.cpp b/src/plugins/perfprofiler/tests/perfresourcecounter_test.cpp index 87d905c8809..f242725c357 100644 --- a/src/plugins/perfprofiler/tests/perfresourcecounter_test.cpp +++ b/src/plugins/perfprofiler/tests/perfresourcecounter_test.cpp @@ -140,9 +140,10 @@ void PerfResourceCounterTest::testUnitSized() QList ids; for (int i = 0; i < 10000; ++i) { counter.request(1); - int id = qrand(); + const int id = qrand(); counter.obtain(id); - ids.append(id); + if (id != 0) // Otherwise it's the invalid ID and that means the allocation "failed". + ids.append(id); QCOMPARE(counter.currentTotal(), ids.length()); } QCOMPARE(sum(container), counter.currentTotal()); From f2ce80e0c69730a9e4bd7aa6cb366f5a75a615c6 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Wed, 12 Jun 2019 17:22:30 +0200 Subject: [PATCH 02/35] CMake build: Copy fonts and syntax-highlighting files to builddir Fixes: QTCREATORBUG-22472 Change-Id: Ib812690c70efdc0ad7b125f6ce9623ca500d698d Reviewed-by: Tobias Hunger --- src/libs/3rdparty/syntax-highlighting/CMakeLists.txt | 11 ++++++++++- src/share/3rdparty/CMakeLists.txt | 9 +++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/libs/3rdparty/syntax-highlighting/CMakeLists.txt b/src/libs/3rdparty/syntax-highlighting/CMakeLists.txt index e8498150989..27cc4082230 100644 --- a/src/libs/3rdparty/syntax-highlighting/CMakeLists.txt +++ b/src/libs/3rdparty/syntax-highlighting/CMakeLists.txt @@ -33,6 +33,15 @@ add_qtc_library(KSyntaxHighlighting STATIC ) install( - DIRECTORY data/ + DIRECTORY data/syntax DESTINATION "${IDE_DATA_PATH}/generic-highlighter/" ) + +add_custom_target(copy_generic_highligher_to_builddir ALL VERBATIM) +add_custom_command(TARGET copy_generic_highligher_to_builddir POST_BUILD + COMMAND "${CMAKE_COMMAND}" -E copy_directory data/syntax + "${PROJECT_BINARY_DIR}/${IDE_DATA_PATH}/generic-highlighter/syntax" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + COMMENT Copy files into build directory + VERBATIM +) diff --git a/src/share/3rdparty/CMakeLists.txt b/src/share/3rdparty/CMakeLists.txt index 39791681244..ede2157426e 100644 --- a/src/share/3rdparty/CMakeLists.txt +++ b/src/share/3rdparty/CMakeLists.txt @@ -2,3 +2,12 @@ install( DIRECTORY fonts DESTINATION "${IDE_DATA_PATH}" ) + +add_custom_target(copy_fonts_to_builddir ALL VERBATIM) +add_custom_command(TARGET copy_fonts_to_builddir POST_BUILD + COMMAND "${CMAKE_COMMAND}" -E copy_directory fonts + "${PROJECT_BINARY_DIR}/${IDE_DATA_PATH}/fonts" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + COMMENT Copy files into build directory + VERBATIM +) From db7aa20d12faf01651b6f9adc353df2368531ee1 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 13 Jun 2019 16:36:49 +0200 Subject: [PATCH 03/35] QmlDesigner: Use instance value for none translated text Task-number: QDS-715 Change-Id: I176af10925eddeeb7419316538fa3ae0efcb61a6 Reviewed-by: Tim Jenssen --- src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp index 65ed482bfb1..53e29b7157e 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp @@ -263,7 +263,7 @@ QString QmlObjectNode::stripedTranslatableText(const PropertyName &name) const return regularExpressionPatter.cap(2); return instanceValue(name).toString(); } - return modelNode().variantProperty(name).value().toString(); + return instanceValue(name).toString(); } QString QmlObjectNode::expression(const PropertyName &name) const From 885cd63e8f8fa11b4f97cd45c32af2b2b9f7e6ce Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Tue, 11 Jun 2019 19:40:11 +0200 Subject: [PATCH 04/35] Port from QLatin1Literal to QLatin1String QLatin1Literal is an undocumented and deprecated typedef for QLatin1String, just use the original. Change-Id: I42347a2128e7b4280aaafeea5ebdee5a1b623c82 Reviewed-by: hjk --- src/plugins/qnx/qnxtoolchain.cpp | 2 +- src/plugins/studiowelcome/studiowelcomeplugin.cpp | 8 ++++---- .../auto/qml/codemodel/dependencies/tst_dependencies.cpp | 2 +- tests/auto/qml/codemodel/ecmascript7/tst_ecmascript7.cpp | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/plugins/qnx/qnxtoolchain.cpp b/src/plugins/qnx/qnxtoolchain.cpp index 376ae637113..0a515287ea2 100644 --- a/src/plugins/qnx/qnxtoolchain.cpp +++ b/src/plugins/qnx/qnxtoolchain.cpp @@ -52,7 +52,7 @@ static Abis detectTargetAbis(const FilePath &sdpPath) if (!sdpPath.fileName().isEmpty()) { QList environment = QnxUtils::qnxEnvironment(sdpPath.toString()); foreach (const Utils::EnvironmentItem &item, environment) { - if (item.name == QLatin1Literal("QNX_TARGET")) + if (item.name == QLatin1String("QNX_TARGET")) qnxTarget = FilePath::fromString(item.value); } } diff --git a/src/plugins/studiowelcome/studiowelcomeplugin.cpp b/src/plugins/studiowelcome/studiowelcomeplugin.cpp index 864acf4e83f..cc220576604 100644 --- a/src/plugins/studiowelcome/studiowelcomeplugin.cpp +++ b/src/plugins/studiowelcome/studiowelcomeplugin.cpp @@ -226,9 +226,9 @@ void StudioWelcomePlugin::extensionsInitialized() s_view->setWindowModality(Qt::ApplicationModal); s_view->engine()->addImportPath("qrc:/studiofonts"); #ifdef QT_DEBUG - s_view->engine()->addImportPath(QLatin1Literal(STUDIO_QML_PATH) + s_view->engine()->addImportPath(QLatin1String(STUDIO_QML_PATH) + "splashscreen/imports"); - s_view->setSource(QUrl::fromLocalFile(QLatin1Literal(STUDIO_QML_PATH) + s_view->setSource(QUrl::fromLocalFile(QLatin1String(STUDIO_QML_PATH) + "splashscreen/main.qml")); #else s_view->engine()->addImportPath("qrc:/qml/splashscreen/imports"); @@ -287,9 +287,9 @@ WelcomeMode::WelcomeMode() m_modeWidget->setResizeMode(QQuickWidget::SizeRootObjectToView); m_modeWidget->engine()->addImportPath("qrc:/studiofonts"); #ifdef QT_DEBUG - m_modeWidget->engine()->addImportPath(QLatin1Literal(STUDIO_QML_PATH) + m_modeWidget->engine()->addImportPath(QLatin1String(STUDIO_QML_PATH) + "welcomepage/imports"); - m_modeWidget->setSource(QUrl::fromLocalFile(QLatin1Literal(STUDIO_QML_PATH) + m_modeWidget->setSource(QUrl::fromLocalFile(QLatin1String(STUDIO_QML_PATH) + "welcomepage/main.qml")); #else m_modeWidget->engine()->addImportPath("qrc:/qml/welcomepage/imports"); diff --git a/tests/auto/qml/codemodel/dependencies/tst_dependencies.cpp b/tests/auto/qml/codemodel/dependencies/tst_dependencies.cpp index 71e5d50735d..79ce9cec1be 100644 --- a/tests/auto/qml/codemodel/dependencies/tst_dependencies.cpp +++ b/tests/auto/qml/codemodel/dependencies/tst_dependencies.cpp @@ -112,7 +112,7 @@ private: void tst_Dependencies::initTestCase() { - m_path = QLatin1Literal(TESTSRCDIR "/samples"); + m_path = QLatin1String(TESTSRCDIR "/samples"); m_basePaths.append(QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath)); diff --git a/tests/auto/qml/codemodel/ecmascript7/tst_ecmascript7.cpp b/tests/auto/qml/codemodel/ecmascript7/tst_ecmascript7.cpp index f178338bd16..735daa04f71 100644 --- a/tests/auto/qml/codemodel/ecmascript7/tst_ecmascript7.cpp +++ b/tests/auto/qml/codemodel/ecmascript7/tst_ecmascript7.cpp @@ -134,13 +134,13 @@ void tst_Ecmascript::initTestCase() QDirIterator it(sampledir, QDirIterator::Subdirectories); - QStringList skipList = readSkipList(sampledir, QLatin1Literal("skip.txt")); + QStringList skipList = readSkipList(sampledir, QLatin1String("skip.txt")); while (it.hasNext()) { QString path = it.next(); if (skipList.contains(path)) continue; QFileInfo f(path); - if (f.isFile() && f.suffix() == QLatin1Literal("js")) + if (f.isFile() && f.suffix() == QLatin1String("js")) m_files << f; } From cd8ebb21e3445dd1b02f3401cd3c223e14c45c26 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 12 Jun 2019 15:03:23 +0200 Subject: [PATCH 05/35] QmakeProjectManager: Make sure OBJECTIVE_HEADERS appear in project tree We do not introduce another category, but list them under "Headers", as we do with PRECOMPILED_HEADER entries. Fixes: QTCREATORBUG-17569 Change-Id: Ie0e6efdd09715daf2802b126a4ecbdc20b25d008 Reviewed-by: Eike Ziller --- .../qmakeprojectmanager/qmakeparsernodes.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp index 10a09fe9a5d..c9fce5bb9ad 100644 --- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp @@ -878,8 +878,7 @@ QStringList QmakePriFile::varNames(FileType type, QtSupport::ProFileReader *read QStringList vars; switch (type) { case FileType::Header: - vars << QLatin1String("HEADERS"); - vars << QLatin1String("PRECOMPILED_HEADER"); + vars << "HEADERS" << "OBJECTIVE_HEADERS" << "PRECOMPILED_HEADER"; break; case FileType::Source: { vars << QLatin1String("SOURCES"); @@ -888,12 +887,15 @@ QStringList QmakePriFile::varNames(FileType type, QtSupport::ProFileReader *read QStringList inputs = readerExact->values(var + QLatin1String(".input")); foreach (const QString &input, inputs) // FORMS, RESOURCES, and STATECHARTS are handled below, HEADERS and SOURCES above - if (input != QLatin1String("FORMS") - && input != QLatin1String("STATECHARTS") - && input != QLatin1String("RESOURCES") - && input != QLatin1String("SOURCES") - && input != QLatin1String("HEADERS")) + if (input != "FORMS" + && input != "STATECHARTS" + && input != "RESOURCES" + && input != "SOURCES" + && input != "HEADERS" + && input != "OBJECTIVE_HEADERS" + && input != "PRECOMPILED_HEADER") { vars << input; + } } break; } From acfe45c4348e9db30c3db682cf0863f38a5094cb Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 14 Jun 2019 13:37:20 +0200 Subject: [PATCH 06/35] SSH: Fix running remote process in terminal ConsoleProcess stumbles over the special characters in the remote command and as a result silently runs the command locally instead. Prevent that. We can (and should) simply leave these characters alone, as they have no special meaning on the local machine. Change-Id: I31b3afe1cf170e51d431372b15f4df3656006959 Reviewed-by: hjk --- src/libs/utils/consoleprocess.h | 4 +++- src/libs/utils/consoleprocess_unix.cpp | 5 +++-- src/libs/utils/consoleprocess_win.cpp | 4 +++- src/libs/utils/qtcprocess.cpp | 4 ++-- src/libs/utils/qtcprocess.h | 3 ++- .../projectexplorer/devicesupport/sshdeviceprocess.cpp | 3 ++- 6 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/libs/utils/consoleprocess.h b/src/libs/utils/consoleprocess.h index 28be67f0bf2..82d0a5d8bb7 100644 --- a/src/libs/utils/consoleprocess.h +++ b/src/libs/utils/consoleprocess.h @@ -70,7 +70,9 @@ public: QProcess::ProcessError error() const; QString errorString() const; - bool start(const QString &program, const QString &args); + enum class MetaCharMode { Abort, Ignore }; + bool start(const QString &program, const QString &args, + MetaCharMode metaCharMode = MetaCharMode::Ignore); public slots: void stop(); diff --git a/src/libs/utils/consoleprocess_unix.cpp b/src/libs/utils/consoleprocess_unix.cpp index 53a8c958487..43afffa0a28 100644 --- a/src/libs/utils/consoleprocess_unix.cpp +++ b/src/libs/utils/consoleprocess_unix.cpp @@ -65,7 +65,7 @@ void ConsoleProcess::setSettings(QSettings *settings) d->m_settings = settings; } -bool ConsoleProcess::start(const QString &program, const QString &args) +bool ConsoleProcess::start(const QString &program, const QString &args, MetaCharMode metaCharMode) { if (isRunning()) return false; @@ -75,7 +75,8 @@ bool ConsoleProcess::start(const QString &program, const QString &args) QtcProcess::SplitError perr; QtcProcess::Arguments pargs = QtcProcess::prepareArgs(args, &perr, HostOsInfo::hostOs(), - &d->m_environment, &d->m_workingDir); + &d->m_environment, &d->m_workingDir, + metaCharMode == MetaCharMode::Abort); QString pcmd; if (perr == QtcProcess::SplitOk) { pcmd = program; diff --git a/src/libs/utils/consoleprocess_win.cpp b/src/libs/utils/consoleprocess_win.cpp index 2a68ddaba82..be65c42cc8d 100644 --- a/src/libs/utils/consoleprocess_win.cpp +++ b/src/libs/utils/consoleprocess_win.cpp @@ -51,8 +51,10 @@ qint64 ConsoleProcess::applicationMainThreadID() const return d->m_appMainThreadId; } -bool ConsoleProcess::start(const QString &program, const QString &args) +bool ConsoleProcess::start(const QString &program, const QString &args, MetaCharMode metaCharMode) { + Q_UNUSED(metaCharMode); + if (isRunning()) return false; diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index d05746d5b1e..992e1817c02 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -595,12 +595,12 @@ static QString quoteArgWin(const QString &arg) } QtcProcess::Arguments QtcProcess::prepareArgs(const QString &cmd, SplitError *err, OsType osType, - const Environment *env, const QString *pwd) + const Environment *env, const QString *pwd, bool abortOnMeta) { if (osType == OsTypeWindows) return prepareArgsWin(cmd, err, env, pwd); else - return Arguments::createUnixArgs(splitArgs(cmd, osType, true, err, env, pwd)); + return Arguments::createUnixArgs(splitArgs(cmd, osType, abortOnMeta, err, env, pwd)); } diff --git a/src/libs/utils/qtcprocess.h b/src/libs/utils/qtcprocess.h index d3d22d34154..5eeacf666e8 100644 --- a/src/libs/utils/qtcprocess.h +++ b/src/libs/utils/qtcprocess.h @@ -79,7 +79,8 @@ public: //! Prepare argument of a shell command for feeding into QProcess static Arguments prepareArgs(const QString &cmd, SplitError *err, OsType osType = HostOsInfo::hostOs(), - const Environment *env = nullptr, const QString *pwd = nullptr); + const Environment *env = nullptr, const QString *pwd = nullptr, + bool abortOnMeta = true); //! Prepare a shell command for feeding into QProcess static bool prepareCommand(const QString &command, const QString &arguments, QString *outCmd, Arguments *outArgs, OsType osType = HostOsInfo::hostOs(), diff --git a/src/plugins/projectexplorer/devicesupport/sshdeviceprocess.cpp b/src/plugins/projectexplorer/devicesupport/sshdeviceprocess.cpp index 030e4057a3d..7e8be72c652 100644 --- a/src/plugins/projectexplorer/devicesupport/sshdeviceprocess.cpp +++ b/src/plugins/projectexplorer/devicesupport/sshdeviceprocess.cpp @@ -201,7 +201,8 @@ void SshDeviceProcess::handleConnected() this, &SshDeviceProcess::handleProcessStarted); connect(&d->consoleProcess, &ConsoleProcess::stubStopped, this, [this] { handleProcessFinished(d->consoleProcess.errorString()); }); - d->consoleProcess.start(cmdLine.first(), cmdLine.mid(1).join(' ')); + d->consoleProcess.start(cmdLine.first(), cmdLine.mid(1).join(' '), + ConsoleProcess::MetaCharMode::Ignore); } else { connect(d->process.get(), &QSsh::SshRemoteProcess::started, this, &SshDeviceProcess::handleProcessStarted); From 31c9171a658622723c4a47ceab0c8e22cb997c51 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 14 Jun 2019 14:27:34 +0200 Subject: [PATCH 07/35] QmlDesigner: Add new node hints Change-Id: I327b9bd714072077bc12085573e63ee2f4b994a8 Reviewed-by: Thomas Hartmann --- .../designercore/include/nodehints.h | 2 ++ .../designercore/metainfo/nodehints.cpp | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/include/nodehints.h b/src/plugins/qmldesigner/designercore/include/nodehints.h index 1e8b7d99e41..7fed390ee0a 100644 --- a/src/plugins/qmldesigner/designercore/include/nodehints.h +++ b/src/plugins/qmldesigner/designercore/include/nodehints.h @@ -64,9 +64,11 @@ public: bool isStackedContainer() const; bool canBeReparentedTo(const ModelNode &potenialParent); QString indexPropertyForStackedContainer() const; + QStringList visibleNonDefaultProperties() const; bool takesOverRenderingOfChildren() const; bool visibleInNavigator() const; bool visibleInLibrary() const; + QString forceNonDefaultProperty() const; QHash hints() const; static NodeHints fromModelNode(const ModelNode &modelNode); diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodehints.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodehints.cpp index c6bc6451866..dcb350c4480 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/nodehints.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/nodehints.cpp @@ -192,6 +192,19 @@ QString NodeHints::indexPropertyForStackedContainer() const return Internal::evaluateExpression(expression, modelNode(), ModelNode()).toString(); } +QStringList NodeHints::visibleNonDefaultProperties() const +{ + if (!isValid()) + return {}; + + const QString expression = m_hints.value("visibleNonDefaultProperties"); + + if (expression.isEmpty()) + return {}; + + return Internal::evaluateExpression(expression, modelNode(), ModelNode()).toString().split(","); +} + bool NodeHints::takesOverRenderingOfChildren() const { if (!isValid()) @@ -213,6 +226,16 @@ bool NodeHints::visibleInLibrary() const return evaluateBooleanExpression("visibleInLibrary", true); } +QString NodeHints::forceNonDefaultProperty() const +{ + const QString expression = m_hints.value("forceNonDefaultProperty"); + + if (expression.isEmpty()) + return {}; + + return Internal::evaluateExpression(expression, modelNode(), ModelNode()).toString(); +} + QHash NodeHints::hints() const { return m_hints; From 55eb0587ef65782561c8020801cad159e5dfe6e3 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 12 Jun 2019 16:37:26 +0200 Subject: [PATCH 08/35] QmlDesigner: reset state editor model when error occurs Task-number: QDS-695 Change-Id: I1e2e454c31eb92e865ccec9f7d68c5142488ddf9 Reviewed-by: Tim Jenssen --- .../qmldesigner/components/stateseditor/stateseditormodel.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/qmldesigner/components/stateseditor/stateseditormodel.cpp b/src/plugins/qmldesigner/components/stateseditor/stateseditormodel.cpp index 07e758b35ac..ae7400e3825 100644 --- a/src/plugins/qmldesigner/components/stateseditor/stateseditormodel.cpp +++ b/src/plugins/qmldesigner/components/stateseditor/stateseditormodel.cpp @@ -185,6 +185,7 @@ void StatesEditorModel::renameState(int internalNodeId, const QString &newName) newName.isEmpty() ? tr("The empty string as a name is reserved for the base state.") : tr("Name already used in another state")); + reset(); } else { m_statesEditorView->renameState(internalNodeId, newName); } From e3690ad7ac6d749c8a489676163864f5abbf99d7 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 14 Jun 2019 15:11:57 +0200 Subject: [PATCH 09/35] ProjectTree: Fix crash when project has no rootProjectNode Fix a crash that is triggered by a project returning to a state where it has no rootProjectNode. This can happen when parsing fails and Creator should fall back to displaying the project name and its main project file as it does before any parsing had been done. Unfortunately the hasNode function returned false in this case, so the project model was never updated and the removed project nodes stuck around, triggering a crash. Change-Id: I7616e576773dc52fb6fdff39b9f0a7c7729eac71 Reviewed-by: hjk Reviewed-by: Tobias Hunger --- src/plugins/projectexplorer/projecttree.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/plugins/projectexplorer/projecttree.cpp b/src/plugins/projectexplorer/projecttree.cpp index 27344989c27..5e853e6a78b 100644 --- a/src/plugins/projectexplorer/projecttree.cpp +++ b/src/plugins/projectexplorer/projecttree.cpp @@ -393,9 +393,15 @@ void ProjectTree::applyTreeManager(FolderNode *folder) bool ProjectTree::hasNode(const Node *node) { return Utils::contains(SessionManager::projects(), [node](const Project *p) { - return p && p->rootProjectNode() && ( - p->containerNode() == node - || p->rootProjectNode()->findNode([node](const Node *n) { return n == node; })); + if (!p) + return false; + if (p->containerNode() == node) + return true; + // When parsing fails we have a living container node but no rootProjectNode. + ProjectNode *pn = p->rootProjectNode(); + if (!pn) + return false; + return pn->findNode([node](const Node *n) { return n == node; }) != nullptr; }); } From e00536eeea25e0ebbf44cf1af88eb7af916d8337 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 13 Jun 2019 17:11:00 +0200 Subject: [PATCH 10/35] ProjectExplorer: Fix "Open Terminal With Run Env" for remote targets Amends 6fa474ead8. Note that the semantics of this operation are a bit dubious, because it is supposed to open the terminal at the location of the file corresponding to the project node, which does not make sense for remote targets. So for those, we use the run configuration's working directory instead. Change-Id: Ie60b54e441daab51e8d51fdfba1d4a71e6a33604 Reviewed-by: hjk --- .../devicesupport/desktopdevice.cpp | 5 ++ .../projectexplorer/devicesupport/idevice.cpp | 17 ++++++ .../projectexplorer/devicesupport/idevice.h | 7 +++ .../projectexplorer/projectexplorer.cpp | 44 +++++++++++-- src/plugins/remotelinux/linuxdevice.cpp | 61 +++++++++---------- src/plugins/remotelinux/linuxdevice.h | 4 -- .../remotelinuxenvironmentaspectwidget.cpp | 2 +- 7 files changed, 98 insertions(+), 42 deletions(-) diff --git a/src/plugins/projectexplorer/devicesupport/desktopdevice.cpp b/src/plugins/projectexplorer/devicesupport/desktopdevice.cpp index 3cd6590f206..a725658b9bf 100644 --- a/src/plugins/projectexplorer/devicesupport/desktopdevice.cpp +++ b/src/plugins/projectexplorer/devicesupport/desktopdevice.cpp @@ -30,6 +30,8 @@ #include "desktopdeviceconfigurationwidget.h" #include "desktopprocesssignaloperation.h" +#include + #include #include @@ -58,6 +60,9 @@ DesktopDevice::DesktopDevice() const QString portRange = QString::fromLatin1("%1-%2").arg(DESKTOP_PORT_START).arg(DESKTOP_PORT_END); setFreePorts(Utils::PortList::fromString(portRange)); + setOpenTerminal([](const Utils::Environment &env, const QString &workingDir) { + Core::FileUtils::openTerminal(workingDir, env); + }); } IDevice::DeviceInfo DesktopDevice::deviceInformation() const diff --git a/src/plugins/projectexplorer/devicesupport/idevice.cpp b/src/plugins/projectexplorer/devicesupport/idevice.cpp index 0faade9f9bf..86d783a6d99 100644 --- a/src/plugins/projectexplorer/devicesupport/idevice.cpp +++ b/src/plugins/projectexplorer/devicesupport/idevice.cpp @@ -153,6 +153,7 @@ public: QList deviceIcons; QList deviceActions; QVariantMap extraData; + IDevice::OpenTerminal openTerminal; }; } // namespace Internal @@ -162,6 +163,11 @@ IDevice::IDevice() : d(new Internal::IDevicePrivate) { } +void IDevice::setOpenTerminal(const IDevice::OpenTerminal &openTerminal) +{ + d->openTerminal = openTerminal; +} + void IDevice::setupId(Origin origin, Core::Id id) { d->origin = origin; @@ -169,6 +175,17 @@ void IDevice::setupId(Origin origin, Core::Id id) d->id = id.isValid() ? id : newId(); } +bool IDevice::canOpenTerminal() const +{ + return bool(d->openTerminal); +} + +void IDevice::openTerminal(const Utils::Environment &env, const QString &workingDir) const +{ + QTC_ASSERT(canOpenTerminal(), return); + d->openTerminal(env, workingDir); +} + IDevice::~IDevice() = default; /*! diff --git a/src/plugins/projectexplorer/devicesupport/idevice.h b/src/plugins/projectexplorer/devicesupport/idevice.h index db750086a5f..b2635440000 100644 --- a/src/plugins/projectexplorer/devicesupport/idevice.h +++ b/src/plugins/projectexplorer/devicesupport/idevice.h @@ -120,6 +120,7 @@ public: // See cpp file for documentation. class PROJECTEXPLORER_EXPORT IDevice : public QEnableSharedFromThis { + friend class Internal::IDevicePrivate; public: using Ptr = QSharedPointer; using ConstPtr = QSharedPointer; @@ -218,9 +219,15 @@ public: void setupId(Origin origin, Core::Id id = Core::Id()); + bool canOpenTerminal() const; + void openTerminal(const Utils::Environment &env, const QString &workingDir) const; + protected: IDevice(); + using OpenTerminal = std::function; + void setOpenTerminal(const OpenTerminal &openTerminal); + private: IDevice(const IDevice &) = delete; IDevice &operator=(const IDevice &) = delete; diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 12eed68bd7c..9d0e1181ad9 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -268,11 +268,20 @@ static Utils::optional buildEnv(const Project *project) return project->activeTarget()->activeBuildConfiguration()->environment(); } -static Utils::optional runEnv(const Project *project) +static bool canOpenTerminalWithRunEnv(const Project *project) { - if (!project || !project->activeTarget() || !project->activeTarget()->activeRunConfiguration()) - return {}; - return project->activeTarget()->activeRunConfiguration()->runnable().environment; + if (!project) + return false; + const Target * const target = project->activeTarget(); + if (!target) + return false; + const RunConfiguration * const runConfig = target->activeRunConfiguration(); + if (!runConfig) + return false; + IDevice::ConstPtr device = runConfig->runnable().device; + if (!device) + device = DeviceKitAspect::device(target->kit()); + return device && device->canOpenTerminal(); } static Target *activeTarget() @@ -382,6 +391,7 @@ public: void updateUnloadProjectMenu(); using EnvironmentGetter = std::function(const Project *project)>; void openTerminalHere(const EnvironmentGetter &env); + void openTerminalHereWithRunEnv(); void invalidateProject(ProjectExplorer::Project *project); @@ -1473,7 +1483,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er connect(dd->m_openTerminalHere, &QAction::triggered, dd, []() { dd->openTerminalHere(sysEnv); }); connect(dd->m_openTerminalHereBuildEnv, &QAction::triggered, dd, []() { dd->openTerminalHere(buildEnv); }); - connect(dd->m_openTerminalHereRunEnv, &QAction::triggered, dd, []() { dd->openTerminalHere(runEnv); }); + connect(dd->m_openTerminalHereRunEnv, &QAction::triggered, dd, []() { dd->openTerminalHereWithRunEnv(); }); connect(dd->m_filePropertiesAction, &QAction::triggered, this, []() { const Node *currentNode = ProjectTree::currentNode(); @@ -3205,7 +3215,7 @@ void ProjectExplorerPluginPrivate::updateContextMenuActions() Project *project = ProjectTree::currentProject(); m_openTerminalHereBuildEnv->setVisible(bool(buildEnv(project))); - m_openTerminalHereRunEnv->setVisible(bool(runEnv(project))); + m_openTerminalHereRunEnv->setVisible(canOpenTerminalWithRunEnv(project)); if (pn && project) { if (pn == project->rootProjectNode()) { @@ -3544,6 +3554,28 @@ void ProjectExplorerPluginPrivate::openTerminalHere(const EnvironmentGetter &env FileUtils::openTerminal(directoryFor(currentNode), environment.value()); } +void ProjectExplorerPluginPrivate::openTerminalHereWithRunEnv() +{ + const Node *currentNode = ProjectTree::currentNode(); + QTC_ASSERT(currentNode, return); + + const Project * const project = ProjectTree::projectForNode(currentNode); + QTC_ASSERT(project, return); + const Target * const target = project->activeTarget(); + QTC_ASSERT(target, return); + const RunConfiguration * const runConfig = target->activeRunConfiguration(); + QTC_ASSERT(runConfig, return); + + const Runnable runnable = runConfig->runnable(); + IDevice::ConstPtr device = runnable.device; + if (!device) + device = DeviceKitAspect::device(target->kit()); + QTC_ASSERT(device && device->canOpenTerminal(), return); + const QString workingDir = device->type() == Constants::DESKTOP_DEVICE_TYPE + ? directoryFor(currentNode) : runnable.workingDirectory; + device->openTerminal(runnable.environment, workingDir); +} + void ProjectExplorerPluginPrivate::removeFile() { const Node *currentNode = ProjectTree::currentNode(); diff --git a/src/plugins/remotelinux/linuxdevice.cpp b/src/plugins/remotelinux/linuxdevice.cpp index e6b22eb4bbd..6e05739c019 100644 --- a/src/plugins/remotelinux/linuxdevice.cpp +++ b/src/plugins/remotelinux/linuxdevice.cpp @@ -196,9 +196,38 @@ LinuxDevice::LinuxDevice() } }}); + setOpenTerminal([this](const Utils::Environment &env, const QString &workingDir) { + DeviceProcess * const proc = createProcess(nullptr); + QObject::connect(proc, &DeviceProcess::finished, [proc] { + if (!proc->errorString().isEmpty()) { + Core::MessageManager::write(tr("Error running remote shell: %1") + .arg(proc->errorString()), + Core::MessageManager::ModeSwitch); + } + proc->deleteLater(); + }); + QObject::connect(proc, &DeviceProcess::error, [proc] { + Core::MessageManager::write(tr("Error starting remote shell."), + Core::MessageManager::ModeSwitch); + proc->deleteLater(); + }); + Runnable runnable; + runnable.device = sharedFromThis(); + runnable.environment = env; + runnable.workingDirectory = workingDir; + + // It seems we cannot pass an environment to OpenSSH dynamically + // without specifying an executable. + if (env.size() > 0) + runnable.executable = "/bin/sh"; + + proc->setRunInTerminal(true); + proc->start(runnable); + }); + if (Utils::HostOsInfo::isAnyUnixHost()) { addDeviceAction({tr("Open Remote Shell"), [](const IDevice::Ptr &device, QWidget *) { - device.staticCast()->startRemoteShell(Utils::Environment()); + device->openTerminal(Utils::Environment(), QString()); }}); } } @@ -268,36 +297,6 @@ bool LinuxDevice::supportsRSync() const return extraData("RemoteLinux.SupportsRSync").toBool(); } -void LinuxDevice::startRemoteShell(const Utils::Environment &env) const -{ - DeviceProcess * const proc = createProcess(nullptr); - QObject::connect(proc, &DeviceProcess::finished, [proc] { - if (!proc->errorString().isEmpty()) { - Core::MessageManager::write(tr("Error running remote shell: %1") - .arg(proc->errorString()), - Core::MessageManager::ModeSwitch); - } - proc->deleteLater(); - }); - QObject::connect(proc, &DeviceProcess::error, [proc] { - Core::MessageManager::write(tr("Error starting remote shell."), - Core::MessageManager::ModeSwitch); - proc->deleteLater(); - }); - Runnable runnable; - runnable.device = sharedFromThis(); - runnable.environment = env; - - // It seems we cannot pass an environment to OpenSSH dynamically - // without specifying an executable. - if (env.size() > 0) - runnable.executable = "/bin/sh"; - - proc->setRunInTerminal(true); - proc->start(runnable); -} - - namespace Internal { // Factory diff --git a/src/plugins/remotelinux/linuxdevice.h b/src/plugins/remotelinux/linuxdevice.h index c8e8d8bf314..18faf4ae059 100644 --- a/src/plugins/remotelinux/linuxdevice.h +++ b/src/plugins/remotelinux/linuxdevice.h @@ -32,8 +32,6 @@ #include -namespace Utils { class Environment; } - namespace RemoteLinux { class REMOTELINUX_EXPORT LinuxDevice : public ProjectExplorer::IDevice @@ -64,8 +62,6 @@ public: void setSupportsRsync(bool supportsRsync); bool supportsRSync() const; - void startRemoteShell(const Utils::Environment &env) const; - protected: LinuxDevice(); }; diff --git a/src/plugins/remotelinux/remotelinuxenvironmentaspectwidget.cpp b/src/plugins/remotelinux/remotelinuxenvironmentaspectwidget.cpp index b244a5e129c..0d94cf3ffab 100644 --- a/src/plugins/remotelinux/remotelinuxenvironmentaspectwidget.cpp +++ b/src/plugins/remotelinux/remotelinuxenvironmentaspectwidget.cpp @@ -78,7 +78,7 @@ RemoteLinuxEnvironmentAspectWidget::RemoteLinuxEnvironmentAspectWidget } const auto linuxDevice = device.dynamicCast(); QTC_ASSERT(linuxDevice, return); - linuxDevice->startRemoteShell(env); + linuxDevice->openTerminal(env, QString()); }; envWidget()->setOpenTerminalFunc(openTerminalFunc); } From 30e863b676741740502e679bd05aec348955c6ee Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Sat, 15 Jun 2019 10:12:31 +0300 Subject: [PATCH 11/35] Fix crash when project node is not found Change-Id: I235fecb579023530692742f14474ae5229237c28 Fixes: QTCREATORBUG-22564 Reviewed-by: hjk --- src/plugins/android/androiddeployqtstep.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plugins/android/androiddeployqtstep.cpp b/src/plugins/android/androiddeployqtstep.cpp index 7994c85b6ac..42a3c7d6e01 100644 --- a/src/plugins/android/androiddeployqtstep.cpp +++ b/src/plugins/android/androiddeployqtstep.cpp @@ -234,15 +234,15 @@ bool AndroidDeployQtStep::init() if (m_useAndroiddeployqt) { const ProjectNode *node = target()->project()->findNodeForBuildKey(rc->buildKey()); + if (!node) + return false; m_apkPath = Utils::FilePath::fromString(node->data(Constants::AndroidApk).toString()); if (!m_apkPath.isEmpty()) { m_manifestName = Utils::FilePath::fromString(node->data(Constants::AndroidManifest).toString()); m_command = AndroidConfigurations::currentConfig().adbToolPath(); AndroidManager::setManifestPath(target(), m_manifestName); } else { - QString jsonFile; - if (node) - jsonFile = node->data(Constants::AndroidDeploySettingsFile).toString(); + QString jsonFile = node->data(Constants::AndroidDeploySettingsFile).toString(); if (jsonFile.isEmpty()) { emit addOutput(tr("Cannot find the androiddeploy Json file."), OutputFormat::Stderr); return false; From 8728057f15a6a858da07e96f632b562e5d23bb5d Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Sat, 15 Jun 2019 10:13:03 +0300 Subject: [PATCH 12/35] Cleanup QBS plugin Remove comments & debug messages. Change-Id: Idcc03867e188de6fe258758b3d2cce22f1a1b732 Reviewed-by: hjk --- src/plugins/qbsprojectmanager/qbsnodes.cpp | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp index e5071cabba1..cbc6e597401 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.cpp +++ b/src/plugins/qbsprojectmanager/qbsnodes.cpp @@ -403,9 +403,6 @@ QString QbsProductNode::buildKey() const QVariant QbsProductNode::data(Core::Id role) const { -// if (role == Android::Constants::AndroidExtraLibs) -// return value("ANDROID_EXTRA_LIBS"); - if (role == Android::Constants::AndroidDeploySettingsFile) { for (const auto &artifact : m_qbsProductData.generatedArtifacts()) { if (artifact.fileTags().contains("qt_androiddeployqt_input")) @@ -419,11 +416,9 @@ QVariant QbsProductNode::data(Core::Id role) const for (const auto &artifact : m_qbsProductData.generatedArtifacts()) { if (artifact.fileTags().contains("dynamiclibrary")) { ret << QFileInfo(artifact.filePath()).path(); - qDebug() << artifact.properties().toString(); } } ret.removeDuplicates(); - qDebug() << ret; return ret; } @@ -435,16 +430,8 @@ QVariant QbsProductNode::data(Core::Id role) const return {}; } - if (role == Android::Constants::AndroidApk) { -// qDebug() << m_qbsProductData.name() << m_qbsProductData.targetExecutable() << m_qbsProductData.properties(); -// for (const auto &artifact : m_qbsProductData.installableArtifacts()) { -// qDebug() << artifact.fileTags() << artifact.filePath(); -// } -// for (const auto &artifact : m_qbsProductData.generatedArtifacts()) { -// qDebug() << artifact.fileTags() << artifact.filePath(); -// } + if (role == Android::Constants::AndroidApk) return m_qbsProductData.targetExecutable(); - } return {}; } From 622117a6ce4b1fddbf297820a167eb68d76b8709 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 14 Jun 2019 15:11:26 +0200 Subject: [PATCH 13/35] More changelog 4.10 Change-Id: Iba32d4802366ba40f26adcc32ee8264d00014ec1 Reviewed-by: Leena Miettinen --- dist/changes-4.10.0.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/dist/changes-4.10.0.md b/dist/changes-4.10.0.md index f97a83a472d..9a03649d44f 100644 --- a/dist/changes-4.10.0.md +++ b/dist/changes-4.10.0.md @@ -16,6 +16,7 @@ you can check out from the public Git repository. For example: ### Language Client +* Removed `Experimental` flag * Added option for starting server when needed * Added option for starting one server per project * Added support for `workspace/workspaceFolders` server request @@ -34,7 +35,7 @@ you can check out from the public Git repository. For example: * Added option for hiding kit settings (QTCREATORBUG-9134) * Added support for drag & drop in Projects tree (QTCREATORBUG-6446) * Added option for closing files of project when closing project (QTCREATORBUG-22198) -* Added filtering to `Application Output`, `Compile Output`, and `General Messages` +* Added filtering to `Issues`, `Application Output`, `Compile Output`, and `General Messages` (QTCREATORBUG-16356) * Added `Re-detect` and `Remove All` to compiler settings * Added Locator filter for all files in all project directory trees (`a`) (QTCREATORBUG-19122) @@ -59,6 +60,7 @@ you can check out from the public Git repository. For example: * Added completion of paths in project files (QTCREATORBUG-5915) * Added forced `qmake` run on rebuild * Fixed building sub-project in case of additional custom make steps (QTCREATORBUG-15794) +* Fixed missing items from `OBJECTIVE_HEADERS` (QTCREATORBUG-17569) ## CMake Projects @@ -102,9 +104,12 @@ you can check out from the public Git repository. For example: ## QML Support +* Fixed various formatting issues + ## Debugging * Added pretty printer for `QMargin` +* Fixed issues with restoring layout (QTCREATORBUG-21669) ### CDB @@ -120,7 +125,10 @@ you can check out from the public Git repository. For example: * Added support for `ShapeGradient` (QDS-359) * Added gradient picker that allows loading and saving of presets +* Added support for changing properties for multiple items at once (QDS-324) +* Added missing properties for `LineEdit` and `ComboBox` * Updated properties of `Flickable` +* Improved handling of errors in state editor (QDS-695) ## Version Control Systems @@ -191,13 +199,16 @@ Denis Shienkov Denis Vygovskiy Eike Ziller Friedemann Kleint +Giuseppe D'Angelo Haxor Leet +Henning Gruendl illiteratecoder Ivan Donchevskii Ivan Komissarov Joel Smith Jörg Bornemann Kavindra Palaraja +Leena Miettinen Luca Carlon Marco Bubke Martin Haase @@ -213,5 +224,6 @@ Tim Henning Tim Jenssen Tobias Hunger Tor Arne Vestbø +Uladzislau Paulovich Ulf Hermann Ville Nummela From e8705deb1c038d79a47e84274b4c3fdc6d2275aa Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 17 Jun 2019 09:14:11 +0200 Subject: [PATCH 14/35] Fix display of keyboard shortcuts Was using wrong foreground color for the "no collision" case. Fix-up of 963dc84cc5d1e412344e3a0fbf4a476541da2d19 Fixes: QTCREATORBUG-22333 Change-Id: I5b4934b69bd9ff2002846ffda700673b6e1cab24 Reviewed-by: Friedemann Kleint --- src/plugins/coreplugin/dialogs/shortcutsettings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp index 191de4a4121..675996881df 100644 --- a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp +++ b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp @@ -552,7 +552,7 @@ bool ShortcutSettingsWidget::markCollisions(ShortcutItem *item) } item->m_item->setForeground(2, hasCollision ? Utils::creatorTheme()->color(Utils::Theme::TextColorError) - : commandList()->palette().window()); + : commandList()->palette().windowText()); return hasCollision; } From 12b6242f43c531f6cb0a08fea575a9b7d0cb080e Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 17 Jun 2019 09:22:04 +0200 Subject: [PATCH 15/35] Todo: Spread use of Utils::FilePath a bit Change-Id: I0c6caacad76740dfc23e7a0be40ead776e1d5253 Reviewed-by: Eike Ziller --- src/plugins/todo/todoitemsprovider.cpp | 30 +++++++++++--------------- src/plugins/todo/todoitemsprovider.h | 2 +- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/src/plugins/todo/todoitemsprovider.cpp b/src/plugins/todo/todoitemsprovider.cpp index ef2523c3469..c2f958bb4ee 100644 --- a/src/plugins/todo/todoitemsprovider.cpp +++ b/src/plugins/todo/todoitemsprovider.cpp @@ -45,6 +45,7 @@ #include using namespace ProjectExplorer; +using namespace Utils; namespace Todo { namespace Internal { @@ -90,7 +91,7 @@ void TodoItemsProvider::updateList() // Show only items of the current file if any if (m_settings.scanningScope == ScanningScopeCurrentFile) { if (m_currentEditor) - m_itemsList = m_itemsHash.value(m_currentEditor->document()->filePath().toString()); + m_itemsList = m_itemsHash.value(m_currentEditor->document()->filePath()); // Show only items of the current sub-project } else if (m_settings.scanningScope == ScanningScopeSubProject) { if (m_startupProject) @@ -121,21 +122,19 @@ void TodoItemsProvider::createScanners() void TodoItemsProvider::setItemsListWithinStartupProject() { - QHashIterator > it(m_itemsHash); - const QSet fileNames - = QSet::fromList(Utils::transform(m_startupProject->files(Project::SourceFiles), - &Utils::FilePath::toString)); + QHashIterator > it(m_itemsHash); + const auto filePaths = QSet::fromList(m_startupProject->files(Project::SourceFiles)); QVariantMap settings = m_startupProject->namedSettings(Constants::SETTINGS_NAME_KEY).toMap(); while (it.hasNext()) { it.next(); - QString fileName = it.key(); - if (fileNames.contains(fileName)) { + const FilePath filePath = it.key(); + if (filePaths.contains(filePath)) { bool skip = false; for (const QVariant &pattern : settings[Constants::EXCLUDES_LIST_KEY].toList()) { QRegExp re(pattern.toString()); - if (re.indexIn(fileName) != -1) { + if (re.indexIn(filePath.toString()) != -1) { skip = true; break; } @@ -154,22 +153,19 @@ void TodoItemsProvider::setItemsListWithinSubproject() ProjectNode *projectNode = node->parentProjectNode(); if (projectNode) { // FIXME: The name doesn't match the implementation that lists all files. - QSet subprojectFileNames; + QSet subprojectFileNames; projectNode->forEachGenericNode([&](Node *node) { subprojectFileNames.insert(node->filePath()); }); // files must be both in the current subproject and the startup-project. - const QSet fileNames - = QSet::fromList(Utils::transform(m_startupProject->files(Project::SourceFiles), - &Utils::FilePath::toString)); - QHashIterator > it(m_itemsHash); + const auto fileNames + = QSet::fromList(m_startupProject->files(Project::SourceFiles)); + QHashIterator > it(m_itemsHash); while (it.hasNext()) { it.next(); - if (subprojectFileNames.contains(Utils::FilePath::fromString(it.key())) - && fileNames.contains(it.key())) { + if (subprojectFileNames.contains(it.key()) && fileNames.contains(it.key())) m_itemsList << it.value(); - } } } } @@ -178,7 +174,7 @@ void TodoItemsProvider::setItemsListWithinSubproject() void TodoItemsProvider::itemsFetched(const QString &fileName, const QList &items) { // Replace old items with new ones - m_itemsHash.insert(fileName, items); + m_itemsHash.insert(FilePath::fromString(fileName), items); m_shouldUpdateList = true; } diff --git a/src/plugins/todo/todoitemsprovider.h b/src/plugins/todo/todoitemsprovider.h index 234025bfec7..f2d1f33a104 100644 --- a/src/plugins/todo/todoitemsprovider.h +++ b/src/plugins/todo/todoitemsprovider.h @@ -60,7 +60,7 @@ private: TodoItemsModel *m_itemsModel; // All to-do items are stored here regardless current scanning scope - QHash > m_itemsHash; + QHash > m_itemsHash; // This list contains only those to-do items that are within current scanning scope QList m_itemsList; From 4ffa0e9ef9448e1dd309cdc8d75d673433b5a87c Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 4 Jun 2019 17:09:30 +0200 Subject: [PATCH 16/35] Doc: Update info about using Help Change-Id: I23085fbaa9af3ecc20e45a2bbaafd6ce602abc4a Reviewed-by: Eike Ziller --- .../qtcreator-context-sensitive-help.png | Bin 57447 -> 65139 bytes .../qtcreator-help-add-bookmark-dlg.png | Bin 7064 -> 7964 bytes .../qtcreator-help-filter-attributes.png | Bin 23049 -> 15403 bytes doc/images/qtcreator-help-filters.png | Bin 48998 -> 63108 bytes doc/images/qtcreator-help-options.png | Bin 0 -> 14951 bytes doc/images/qtcreator-help-search.png | Bin 65662 -> 36520 bytes doc/src/howto/creator-help.qdoc | 44 +++++++++--------- 7 files changed, 23 insertions(+), 21 deletions(-) create mode 100644 doc/images/qtcreator-help-options.png diff --git a/doc/images/qtcreator-context-sensitive-help.png b/doc/images/qtcreator-context-sensitive-help.png index d26b14469de007893e92e03bbd2490c6ecc7bd04..fb5720bb4af8c1c1667b90d0579f0e35c092ae7f 100644 GIT binary patch literal 65139 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 XPSXwgTe~DWM4fQfxQ} literal 57447 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 V`ZL$rpMima!PC{xWt~$(69D;yA1MF; literal 7064 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 diff --git a/doc/images/qtcreator-help-filter-attributes.png b/doc/images/qtcreator-help-filter-attributes.png index 2ca849a60097664e39eb7d13c52a9ed9acd33ee6..9c290d9dd0ab1b9e08fbe8e371a205cbacb363a2 100644 GIT binary patch literal 15403 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 avnMgt)fA*|jbLD4VDNPHb6Mw<&;$U3Qj_Tb literal 23049 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 KT-G@yGywpH*PCPj literal 48998 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 *^rp;WIq7;{ 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 Sjgx_afx*+&&t;ucLK6Ts!G3N4 diff --git a/doc/images/qtcreator-help-options.png b/doc/images/qtcreator-help-options.png new file mode 100644 index 0000000000000000000000000000000000000000..63c34700b51b3098e5350d811793bb1034f05d7d GIT binary patch literal 14951 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

*K38 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

x6$)uL5pueW{O60X?uVujzO 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 F1OS=%V3+^^ literal 65662 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 RGcYhPc)I$ztaD0e0szR<9W4L= diff --git a/doc/src/howto/creator-help.qdoc b/doc/src/howto/creator-help.qdoc index 51bf69b810b..7d8e7908bcc 100644 --- a/doc/src/howto/creator-help.qdoc +++ b/doc/src/howto/creator-help.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2018 The Qt Company Ltd. +** Copyright (C) 2019 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -23,12 +23,6 @@ ** ****************************************************************************/ -// ********************************************************************** -// NOTE: the sections are not ordered by their logical order to avoid -// reshuffling the file each time the index order changes (i.e., often). -// Run the fixnavi.pl script to adjust the links to the index order. -// ********************************************************************** - /*! \contentspage index.html \page creator-help.html @@ -62,7 +56,6 @@ \li To select and configure how the documentation is displayed in the \uicontrol Help mode, select \uicontrol Tools > \uicontrol Options > \uicontrol Help. - \endlist The following image displays the context sensitive help in the \uicontrol Edit @@ -70,6 +63,19 @@ \image qtcreator-context-sensitive-help.png + If the help HTML file does not use a style sheet, you can change the font + family, style, and size in \uicontrol Tools > \uicontrol Options > + \uicontrol Help > \uicontrol General. + + \image qtcreator-help-options.png + + By default, you can use the mouse scroll wheel to zoom help pages. To + disable this feature, deselect the \uicontrol {Enable scroll wheel zooming} + check box. + + To switch to the editor context when you close the last help page, select + the \uicontrol {Return to editor on closing the last page} check box. + \section1 Viewing Function Tooltips To hide function tooltips by default, select \uicontrol {Tools > Options > @@ -127,17 +133,19 @@ \endlist - To import and export bookmarks, select \uicontrol {Tools > Options > Help > - General Settings > Import} or \uicontrol Export. + To import and export bookmarks, select \uicontrol Tools > \uicontrol Options + > \uicontrol Help > \uicontrol General > \uicontrol {Import Bookmarks} or + \uicontrol {Export Bookmarks}. \section2 Full-text Search In the \uicontrol Search pane, you can use full-text search for finding a - particular word in all the installed documents. In the \uicontrol {Search for} - field, enter the term you are looking for, and select the \uicontrol Search - button. All documents that contain the specified term are listed. The list - is sorted by the number of search hits that the documents contain. Select a - document in the list to open it. + particular word in all the installed documents. Enter the term you are + looking for, and select the \uicontrol Search button. All documents that + contain the specified term are listed. The list is sorted by document + version (if you have installed several Qt versions, for example) and + the number of search hits that the documents contain. Select a document in + the list to open it. \image qtcreator-help-search.png "Search pane" @@ -159,12 +167,6 @@ \endlist - For more flexibility, use the \uicontrol {Advanced search}. Specify words to - exclude from the search hits, or search for an exact phrase or for similar - words. For example, searching for \c{QStin}, \c{QSting}, or \c{QStrin} lists - all the documents with titles that are similar, such as \c{QString}. - Combine options to improve the search results. - Full-text search is based on indexing all the installed documents the first time when you open the \uicontrol Search pane. If you add or remove documents, \QC recreates the index. From 47d40aa4ad3dec54f4e2d4d3e9cc35bbdc2c1d76 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Fri, 7 Jun 2019 15:09:25 +0200 Subject: [PATCH 17/35] Doc: Move "Changing Languages" and "Viewing Images" to "User Interface" ...from "Viewing Output" where the landed when the topic was chopped up. Change-Id: Ic5a0900f3cb6243a32ebc415c4956fcdb71bc3f6 Reviewed-by: Eike Ziller --- doc/src/howto/creator-ui.qdoc | 78 ++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 38 deletions(-) diff --git a/doc/src/howto/creator-ui.qdoc b/doc/src/howto/creator-ui.qdoc index d477eda78de..c9c2370707d 100644 --- a/doc/src/howto/creator-ui.qdoc +++ b/doc/src/howto/creator-ui.qdoc @@ -110,6 +110,46 @@ documentation, see \l{Tips and Tricks}. \endif + \section1 Changing Languages + + \QC has been localized into several languages. If the system language + is one of the supported languages, it is automatically selected. To + change the language, select \uicontrol Tools > \uicontrol Options > + \uicontrol Environment and select a language in the \uicontrol Language + field. The change takes effect after you restart \QC. + + \section1 Viewing Images + + \QC opens image files in the image viewer. + + \image qtcreator-image-viewer.png "Image viewer" + + Use the toolbar buttons (1) or \l{Keyboard Shortcuts}{keyboard shortcuts} + to: + + \list + + \li Export SVG images to pixmaps + + \li Switch between background and outline modes + + \li Zoom in and out + + \li Fit images to screen + + \li Return to original size + + \li Play and pause animated GIF and MNG images + + \endlist + + \section2 Exporting SVG Images + + If you receive a freely scalable icon in the SVG format from an UI designer, + you can export it to several images of different sizes to create a set of + pixmaps. You can then use QIcon::addPixmap() to add the pixmaps to icons in + different modes and states. + \section1 Platform Notes This section describes the cases where the behavior of \QC depends on the @@ -563,42 +603,4 @@ \l{Showing Task List Files in Issues Pane}. \endif - \section1 Changing Languages - - \QC has been localized into several languages. If the system language is one - of the supported languages, it is automatically selected. To change the - language, select \uicontrol {Tools > Options > Environment} and select a language - in the \uicontrol Language field. The change takes effect after you restart \QC. - - \section1 Viewing Images - - \QC opens image files in the image viewer. - - \image qtcreator-image-viewer.png "Image viewer" - - Use the toolbar buttons (1) or \l{Keyboard Shortcuts}{keyboard shortcuts} - to: - - \list - - \li Export SVG images to pixmaps - - \li Switch between background and outline modes - - \li Zoom in and out - - \li Fit images to screen - - \li Return to original size - - \li Play and pause animated GIF and MNG images - - \endlist - - \section1 Exporting SVG Images - - If you receive a freely scalable icon in the SVG format from an UI designer, - you can export it to several images of different sizes to create a set of - pixmaps. You can then use QIcon::addPixmap() to add the pixmaps to icons in - different modes and states. */ From c23e3196285ca5024ea6b86d974b8f358ec1b551 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 4 Jun 2019 15:04:15 +0200 Subject: [PATCH 18/35] Doc: Describe new language client settings and features Change-Id: I9d3e9e094b6256f202e6b7fea559d06f94c9d5be Reviewed-by: David Schulz --- .../qtcreator-language-client-options.png | Bin 15462 -> 10819 bytes doc/src/editors/creator-locator.qdoc | 10 ++-- .../creator-only/creator-language-server.qdoc | 48 +++++++++++++++--- 3 files changed, 45 insertions(+), 13 deletions(-) diff --git a/doc/images/qtcreator-language-client-options.png b/doc/images/qtcreator-language-client-options.png index fef988974850c01bf94cc09832d3e23a72ed4023..ab1a0e09d372a913fbc612a2bdb762e61852acee 100644 GIT binary patch literal 10819 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 F696?*G^_vs literal 15462 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 diff --git a/doc/src/editors/creator-locator.qdoc b/doc/src/editors/creator-locator.qdoc index 7d8f25dd077..e7c048f6d2f 100644 --- a/doc/src/editors/creator-locator.qdoc +++ b/doc/src/editors/creator-locator.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2018 The Qt Company Ltd. +** Copyright (C) 2019 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -99,7 +99,7 @@ \section1 Using Locator Filters The locator enables you to browse not only files, but any items defined by - \b{locator filters}. By default, the locator contains filters for: + \b{locator filters}. The filters that are available depend on the file type: \list @@ -114,11 +114,11 @@ \li Locating bookmarks (\c {b}). For more information, see \l{Using Bookmarks}. - \li Locating class (\c {c}), enum, and function (m) definitions in your - project or anywhere referenced from your project (\c {:}) + \li Locating class (\c {c}), enum, and function (\c {m}) definitions in + your project or anywhere referenced from your project (\c {:}) \endif - \li Locating QML methods (m) + \li Locating QML methods (\c {m}) \li Locating symbols in the current document (\c {.}) diff --git a/doc/src/editors/creator-only/creator-language-server.qdoc b/doc/src/editors/creator-only/creator-language-server.qdoc index 4b75aae16e1..705388802c4 100644 --- a/doc/src/editors/creator-only/creator-language-server.qdoc +++ b/doc/src/editors/creator-only/creator-language-server.qdoc @@ -39,8 +39,9 @@ \list \li \l{Completing Code}{Code completion} \li Highlighting the symbol under cursor - \li \l{Moving to Symbol Definition or Declaration} - {Moving to the symbol definition} + \li Navigating in the code by using the \l{Searching with the Locator} + {locator} or \l{Moving to Symbol Definition or Declaration} + {moving to the symbol definition} \li Inspecting code by viewing the document \l{Viewing Defined Types and Symbols}{outline} \li \l{Finding Symbols}{Finding references to symbols} @@ -53,6 +54,8 @@ However, the experimental client does not support language servers that require special handling. + \section1 Adding MIME Types for Language Servers + \QC uses the \l{https://www.iana.org/assignments/media-types/media-types.xhtml} {MIME type} of the file to determine which language server to request information from when you open a file for editing. Add new MIME types or @@ -62,16 +65,12 @@ only sent to the languge server if they are known to be handled by it. For more information about how \QC uses MIME types, see \l {Editing MIME Types}. - The experimental language service client has been mostly tested with Python. - If problems arise when you try some other language, please select - \uicontrol Help > \uicontrol {Report Bug} to report them in the Qt Bug - Tracker. The reports should include \QC console output with the environment - variable \c {QT_LOGGING_RULES=qtc.languageclient.*=true} set. + \section1 Specifying Settings for Language Clients To use a language server: \list 1 - \li Enable the language server client by selecting \uicontrol Help > + \li Enable the language client by selecting \uicontrol Help > \uicontrol {About Plugins} > \uicontrol {Other Languages} > \uicontrol {Language Client} (or \uicontrol {Qt Creator} > \uicontrol {About Plugins} > \uicontrol {Other Languages} > @@ -86,15 +85,48 @@ language server. \li Select \uicontrol Add to add language servers. \li In the \uicontrol Name field, enter a name for the language server. + Select the \inlineimage replace.png + (\uicontrol {Variables}) button to use a variable for the server + name. For more information, see \l{Using Qt Creator Variables}. \li In the \uicontrol {Language} field, select \uicontrol {Set MIME Types} to select the MIME types of the files to send to the language server. In the field below, you can enter file patterns to extend the MIME types, separated by semicolons. + \li In the \uicontrol {Startup behavior} field, select whether the + language server is started when \QC starts or when a project or file + with a matching MIME type is opened. The + \uicontrol {General Messages} \l{Viewing Output}{output pane} + displays information about the connection to the language server. + \li In the \uicontrol Capabilities field, you can see the features + that are supported by the language server. Only some of them are + implemented by \QC. \li In the \uicontrol Executable field, enter the path to the language server executable. \li In the \uicontrol Arguments field, enter any required command line + arguments. Select \uicontrol Variables to use variables as arguments. \endlist To remove language servers from the list, select \uicontrol Delete. + + \section1 Supported Locator Filters + + The locator enables you to browse not only files, but any items defined by + \e {locator filters}. The language client plugin supports the following + locator filters: + + \list + \li Locating symbols in the current project (\c {:}) + \li Locating symbols in the current document (\c {.}) + \li Locating class (\c {c}), enum, and function (\c {m}) + definitions in your project + \endlist + + \section1 Reporting Issues + + The experimental language service client has been mostly tested with Python. + If problems arise when you try it or some other language, please select + \uicontrol Help > \uicontrol {Report Bug} to report them in the Qt Bug + Tracker. The reports should include \QC console output with the environment + variable \c {QT_LOGGING_RULES=qtc.languageclient.*=true} set. */ From 22736921deaed191012ac306f46fb62b7ed0e15e Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 13 Jun 2019 14:54:35 +0200 Subject: [PATCH 19/35] QmakeProjectManager: Abort project parsing early if no Qt is present Parsing would not succeed anyway, and the pro parser can run into assertions, e.g. in IoUtils::fileType(). Change-Id: I7fff466d858a2d3c9fd975246a20c92134963705 Reviewed-by: Christian Stenger --- src/plugins/qmakeprojectmanager/qmakeproject.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index 3b5e4531b6a..dee31c56af7 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -523,6 +523,21 @@ void QmakeProject::asyncUpdate() m_asyncUpdateFutureInterface->reportStarted(); + const Kit * const kit = activeTarget() ? activeTarget()->kit() : nullptr; + QtSupport::BaseQtVersion * const qtVersion = QtSupport::QtKitAspect::qtVersion(kit); + if (!qtVersion || !qtVersion->isValid()) { + const QString errorMessage = kit + ? tr("Cannot parse project \"%1\": The currently selected kit \"%2\" does not " + "have a valid Qt.").arg(displayName(), kit->displayName()) + : tr("Cannot parse project \"%1\": No kit selected.").arg(displayName()); + proFileParseError(errorMessage); + m_asyncUpdateFutureInterface->reportCanceled(); + m_asyncUpdateFutureInterface->reportFinished(); + delete m_asyncUpdateFutureInterface; + m_asyncUpdateFutureInterface = nullptr; + return; + } + if (m_asyncUpdateState == AsyncFullUpdatePending) { rootProFile()->asyncUpdate(); } else { From c4e4583fada5d29d154b725f6308fb2c35c467df Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 6 Jun 2019 11:51:07 +0200 Subject: [PATCH 20/35] Doc: Describe filtering in output panes Task-number: QTCREATORBUG-16356 Change-Id: I995ddbe8ae06c38935f699ed0f1cb73418b6f401 Reviewed-by: Christian Kandeler --- doc/images/qtcreator-application-output.png | Bin 10275 -> 10542 bytes doc/images/qtcreator-build-issues.png | Bin 9110 -> 0 bytes doc/images/qtcreator-compile-output.png | Bin 0 -> 11969 bytes doc/images/qtcreator-compile-pane.png | Bin 23573 -> 0 bytes doc/images/qtcreator-general-messages.png | Bin 0 -> 22287 bytes doc/images/qtcreator-issues.png | Bin 0 -> 4897 bytes doc/images/qtcreator-task-pane.png | Bin 13049 -> 0 bytes doc/src/howto/creator-ui.qdoc | 9 ++++++--- 8 files changed, 6 insertions(+), 3 deletions(-) delete mode 100644 doc/images/qtcreator-build-issues.png create mode 100644 doc/images/qtcreator-compile-output.png delete mode 100644 doc/images/qtcreator-compile-pane.png create mode 100644 doc/images/qtcreator-general-messages.png create mode 100644 doc/images/qtcreator-issues.png delete mode 100644 doc/images/qtcreator-task-pane.png diff --git a/doc/images/qtcreator-application-output.png b/doc/images/qtcreator-application-output.png index 05f76b380d30666995a3b3d783636217dafa1553..23250da485226ac1938bb9ac517fe85444ae518a 100644 GIT binary patch literal 10542 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 Be!Bnw literal 10275 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 diff --git a/doc/images/qtcreator-build-issues.png b/doc/images/qtcreator-build-issues.png deleted file mode 100644 index 85c42782b3b3082a237cee8fb2b07b2045c666f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9110 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 ONZ!-c&t;ucLK6U-#BH1a literal 0 HcmV?d00001 diff --git a/doc/images/qtcreator-compile-pane.png b/doc/images/qtcreator-compile-pane.png deleted file mode 100644 index e7af4fe5e80044b01a98a33d11d8b7f954376e34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23573 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 z 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 VxR&gWb)Xe944$rjF6*2UngB|H#g700 literal 0 HcmV?d00001 diff --git a/doc/images/qtcreator-issues.png b/doc/images/qtcreator-issues.png new file mode 100644 index 0000000000000000000000000000000000000000..b0bde84e455dfa4a656e63696055ef9b03899dc9 GIT binary patch literal 4897 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 literal 0 HcmV?d00001 diff --git a/doc/images/qtcreator-task-pane.png b/doc/images/qtcreator-task-pane.png deleted file mode 100644 index b2207514005e6d91b47d60bda09b07964406ed9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13049 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 Date: Fri, 7 Jun 2019 16:24:24 +0200 Subject: [PATCH 21/35] Doc: Describe preserving issues from previous builds Task-number: QTCREATORBUG-22478 Change-Id: I84ba5379c5524c879298d0ccca4ab6912304697b Reviewed-by: Christian Kandeler --- doc/src/howto/creator-ui.qdoc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/src/howto/creator-ui.qdoc b/doc/src/howto/creator-ui.qdoc index f8f993f04a5..314abee8740 100644 --- a/doc/src/howto/creator-ui.qdoc +++ b/doc/src/howto/creator-ui.qdoc @@ -465,6 +465,11 @@ To jump from one issue to the next or previous one, press \key F6 and \key Shift+F6. + By default, the \uicontrol Issues pane is cleared on a new build. To keep + the issues from the previous build rounds, deselect \uicontrol Tools > + \uicontrol Options > \uicontrol {Build & Run} > \uicontrol General > + \uicontrol {Clear issues list on new build}. + \section1 Search Results In the \uicontrol{Search Results} pane, you can search through projects, files on From 912cb9278f7528709f9edf08060d997c20d3ec8c Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Mon, 20 May 2019 16:46:22 +0200 Subject: [PATCH 22/35] ClangRefactoring: Ensure that database is written to log after indexing Change-Id: Ic2473d9fe8dc9b41a7da728c9e1b5202524c1a79 Reviewed-by: Tim Jenssen --- src/libs/sqlite/sqlite-lib.pri | 1 + src/libs/sqlite/sqlitedatabase.h | 24 ++++++------ src/libs/sqlite/sqlitedatabasebackend.cpp | 21 +++++++++++ src/libs/sqlite/sqlitedatabasebackend.h | 2 + src/libs/sqlite/sqlitedatabaseinterface.h | 37 +++++++++++++++++++ .../source/symbolindexertaskqueue.h | 25 +++++++++---- .../source/symbolindexing.h | 3 +- tests/unit/unittest/mocksqlitedatabase.h | 5 ++- tests/unit/unittest/symbolindexer-test.cpp | 3 +- .../unittest/symbolindexertaskqueue-test.cpp | 35 +++++++++++++++++- 10 files changed, 132 insertions(+), 24 deletions(-) create mode 100644 src/libs/sqlite/sqlitedatabaseinterface.h diff --git a/src/libs/sqlite/sqlite-lib.pri b/src/libs/sqlite/sqlite-lib.pri index 052e533d2e6..22e92f9fcc9 100644 --- a/src/libs/sqlite/sqlite-lib.pri +++ b/src/libs/sqlite/sqlite-lib.pri @@ -29,6 +29,7 @@ SOURCES += \ HEADERS += \ $$PWD/createtablesqlstatementbuilder.h \ $$PWD/sqlitedatabasebackend.h \ + $$PWD/sqlitedatabaseinterface.h \ $$PWD/sqliteexception.h \ $$PWD/sqliteglobal.h \ $$PWD/sqlitereadstatement.h \ diff --git a/src/libs/sqlite/sqlitedatabase.h b/src/libs/sqlite/sqlitedatabase.h index d0eae28f790..2c35a293c23 100644 --- a/src/libs/sqlite/sqlitedatabase.h +++ b/src/libs/sqlite/sqlitedatabase.h @@ -26,6 +26,7 @@ #pragma once #include "sqlitedatabasebackend.h" +#include "sqlitedatabaseinterface.h" #include "sqliteglobal.h" #include "sqlitetable.h" #include "sqlitetransaction.h" @@ -43,7 +44,7 @@ using namespace std::chrono_literals; class ReadStatement; class WriteStatement; -class SQLITE_EXPORT Database final : public TransactionInterface +class SQLITE_EXPORT Database final : public TransactionInterface, public DatabaseInterface { template friend class Statement; @@ -105,19 +106,18 @@ public: return m_databaseBackend.changesCount(); } - int totalChangesCount() - { - return m_databaseBackend.totalChangesCount(); - } + int totalChangesCount() { return m_databaseBackend.totalChangesCount(); } + + void walCheckpointFull() override { m_databaseBackend.walCheckpointFull(); } private: - void deferredBegin(); - void immediateBegin(); - void exclusiveBegin(); - void commit(); - void rollback(); - void lock(); - void unlock(); + void deferredBegin() override; + void immediateBegin() override; + void exclusiveBegin() override; + void commit() override; + void rollback() override; + void lock() override; + void unlock() override; void initializeTables(); void registerTransactionStatements(); diff --git a/src/libs/sqlite/sqlitedatabasebackend.cpp b/src/libs/sqlite/sqlitedatabasebackend.cpp index a42564aca56..bf9dfab6fc2 100644 --- a/src/libs/sqlite/sqlitedatabasebackend.cpp +++ b/src/libs/sqlite/sqlitedatabasebackend.cpp @@ -406,6 +406,27 @@ void DatabaseBackend::setBusyTimeout(std::chrono::milliseconds timeout) sqlite3_busy_timeout(m_databaseHandle, int(timeout.count())); } +void DatabaseBackend::walCheckpointFull() +{ + int resultCode = sqlite3_wal_checkpoint_v2(m_databaseHandle, + nullptr, + SQLITE_CHECKPOINT_TRUNCATE, + nullptr, + nullptr); + + switch (resultCode) { + case SQLITE_OK: + break; + case SQLITE_BUSY: + throw DatabaseIsBusy("DatabaseBackend::walCheckpointFull: Operation could not concluded " + "because database is busy!"); + case SQLITE_ERROR: + throwException("DatabaseBackend::walCheckpointFull: Error occurred!"); + case SQLITE_MISUSE: + throwExceptionStatic("DatabaseBackend::walCheckpointFull: Misuse of database!"); + } +} + void DatabaseBackend::throwExceptionStatic(const char *whatHasHappens) { throw Exception(whatHasHappens); diff --git a/src/libs/sqlite/sqlitedatabasebackend.h b/src/libs/sqlite/sqlitedatabasebackend.h index 2de55672aa3..7f3973f8787 100644 --- a/src/libs/sqlite/sqlitedatabasebackend.h +++ b/src/libs/sqlite/sqlitedatabasebackend.h @@ -85,6 +85,8 @@ public: void setBusyTimeout(std::chrono::milliseconds timeout); + void walCheckpointFull(); + protected: bool databaseIsOpen() const; diff --git a/src/libs/sqlite/sqlitedatabaseinterface.h b/src/libs/sqlite/sqlitedatabaseinterface.h new file mode 100644 index 00000000000..61ea3ac928d --- /dev/null +++ b/src/libs/sqlite/sqlitedatabaseinterface.h @@ -0,0 +1,37 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#pragma once + +namespace Sqlite { +class DatabaseInterface +{ +public: + virtual void walCheckpointFull() = 0; + +protected: + ~DatabaseInterface() = default; +}; +} // namespace Sqlite diff --git a/src/tools/clangrefactoringbackend/source/symbolindexertaskqueue.h b/src/tools/clangrefactoringbackend/source/symbolindexertaskqueue.h index 7ca35132846..1f15f2ffaa0 100644 --- a/src/tools/clangrefactoringbackend/source/symbolindexertaskqueue.h +++ b/src/tools/clangrefactoringbackend/source/symbolindexertaskqueue.h @@ -30,6 +30,7 @@ #include #include +#include #include #include @@ -38,10 +39,6 @@ #include #include -namespace Sqlite { -class TransactionInterface; -} - namespace ClangBackEnd { class SymbolsCollectorInterface; @@ -53,9 +50,11 @@ public: using Task = SymbolIndexerTask::Callable; SymbolIndexerTaskQueue(TaskSchedulerInterface &symbolIndexerTaskScheduler, - ProgressCounter &progressCounter) - : m_symbolIndexerScheduler(symbolIndexerTaskScheduler), - m_progressCounter(progressCounter) + ProgressCounter &progressCounter, + Sqlite::DatabaseInterface &database) + : m_symbolIndexerScheduler(symbolIndexerTaskScheduler) + , m_progressCounter(progressCounter) + , m_database(database) {} void addOrUpdateTasks(std::vector &&tasks) @@ -94,12 +93,21 @@ public: void processEntries() { - uint taskCount = m_symbolIndexerScheduler.slotUsage().free; + auto slotUsage = m_symbolIndexerScheduler.slotUsage(); + uint taskCount = slotUsage.free; auto newEnd = std::prev(m_tasks.end(), std::min(int(taskCount), int(m_tasks.size()))); m_symbolIndexerScheduler.addTasks({std::make_move_iterator(newEnd), std::make_move_iterator(m_tasks.end())}); m_tasks.erase(newEnd, m_tasks.end()); + + if (m_tasks.empty() && slotUsage.used == 0) { + try { + m_database.walCheckpointFull(); + } catch (Sqlite::Exception &exception) { + exception.printWarning(); + } + } } void syncTasks(); @@ -108,6 +116,7 @@ private: std::vector m_tasks; TaskSchedulerInterface &m_symbolIndexerScheduler; ProgressCounter &m_progressCounter; + Sqlite::DatabaseInterface &m_database; }; } // namespace ClangBackEnd diff --git a/src/tools/clangrefactoringbackend/source/symbolindexing.h b/src/tools/clangrefactoringbackend/source/symbolindexing.h index d4e36499b12..5c391503bff 100644 --- a/src/tools/clangrefactoringbackend/source/symbolindexing.h +++ b/src/tools/clangrefactoringbackend/source/symbolindexing.h @@ -105,6 +105,7 @@ public: m_projectPartsStorage, m_modifiedTimeChecker, environment) + , m_indexerQueue(m_indexerScheduler, m_progressCounter, database) , m_indexerScheduler(m_collectorManger, m_indexerQueue, m_progressCounter, @@ -152,7 +153,7 @@ private: ModifiedTimeChecker m_modifiedTimeChecker{getModifiedTime, m_filePathCache}; SymbolIndexer m_indexer; - SymbolIndexerTaskQueue m_indexerQueue{m_indexerScheduler, m_progressCounter}; + SymbolIndexerTaskQueue m_indexerQueue; SymbolIndexerTaskScheduler m_indexerScheduler; }; diff --git a/tests/unit/unittest/mocksqlitedatabase.h b/tests/unit/unittest/mocksqlitedatabase.h index 5bef2ba8c51..05f6f4e9581 100644 --- a/tests/unit/unittest/mocksqlitedatabase.h +++ b/tests/unit/unittest/mocksqlitedatabase.h @@ -31,12 +31,13 @@ #include "mocksqlitetransactionbackend.h" #include "mocksqlitewritestatement.h" +#include #include #include #include -class MockSqliteDatabase : public MockSqliteTransactionBackend +class MockSqliteDatabase : public MockSqliteTransactionBackend, public Sqlite::DatabaseInterface { public: using ReadStatement = NiceMock; @@ -56,5 +57,7 @@ public: MOCK_METHOD1(setIsInitialized, void (bool)); + + MOCK_METHOD0(walCheckpointFull, void()); }; diff --git a/tests/unit/unittest/symbolindexer-test.cpp b/tests/unit/unittest/symbolindexer-test.cpp index 2972e2019e9..a03f2be5079 100644 --- a/tests/unit/unittest/symbolindexer-test.cpp +++ b/tests/unit/unittest/symbolindexer-test.cpp @@ -267,7 +267,8 @@ protected: mockProjectPartsStorage, mockModifiedTimeChecker, testEnvironment}; - SymbolIndexerTaskQueue indexerQueue{indexerScheduler, progressCounter}; + NiceMock mockSqliteDatabase; + SymbolIndexerTaskQueue indexerQueue{indexerScheduler, progressCounter, mockSqliteDatabase}; Scheduler indexerScheduler{collectorManger, indexerQueue, progressCounter, diff --git a/tests/unit/unittest/symbolindexertaskqueue-test.cpp b/tests/unit/unittest/symbolindexertaskqueue-test.cpp index 2932310eb0f..1364091161a 100644 --- a/tests/unit/unittest/symbolindexertaskqueue-test.cpp +++ b/tests/unit/unittest/symbolindexertaskqueue-test.cpp @@ -25,6 +25,7 @@ #include "googletest.h" +#include "mocksqlitedatabase.h" #include "mocktaskscheduler.h" #include @@ -54,7 +55,8 @@ protected: NiceMock> mockSetProgressCallback; ClangBackEnd::ProgressCounter progressCounter{mockSetProgressCallback.AsStdFunction()}; NiceMock> mockTaskScheduler; - ClangBackEnd::SymbolIndexerTaskQueue queue{mockTaskScheduler, progressCounter}; + NiceMock mockSqliteDatabase; + ClangBackEnd::SymbolIndexerTaskQueue queue{mockTaskScheduler, progressCounter, mockSqliteDatabase}; }; TEST_F(SymbolIndexerTaskQueue, AddTasks) @@ -208,4 +210,35 @@ TEST_F(SymbolIndexerTaskQueue, ProcessTasksRemovesProcessedTasks) ASSERT_THAT(queue.tasks(), SizeIs(1)); } + +TEST_F(SymbolIndexerTaskQueue, + ProcessTasksWritesBackTheDatabaseLogIfTheQueueIsEmptyAndTheIndexerHasNothingToDo) +{ + InSequence s; + + EXPECT_CALL(mockTaskScheduler, slotUsage()).WillRepeatedly(Return(SlotUsage{2, 0})); + EXPECT_CALL(mockSqliteDatabase, walCheckpointFull()); + + queue.processEntries(); } + +TEST_F(SymbolIndexerTaskQueue, ProcessTasksDoesNotWritesBackTheDatabaseLogIfTheIndexerHasSomethingToDo) +{ + InSequence s; + + EXPECT_CALL(mockTaskScheduler, slotUsage()).WillRepeatedly(Return(SlotUsage{1, 1})); + EXPECT_CALL(mockSqliteDatabase, walCheckpointFull()).Times(0); + + queue.processEntries(); +} + +TEST_F(SymbolIndexerTaskQueue, HandleExeptionInWalCheckPoint) +{ + InSequence s; + + EXPECT_CALL(mockTaskScheduler, slotUsage()).WillRepeatedly(Return(SlotUsage{2, 0})); + EXPECT_CALL(mockSqliteDatabase, walCheckpointFull()).WillOnce(Throw(Sqlite::DatabaseIsBusy{""})); + + queue.processEntries(); +} +} // namespace From b213dee0134722fcdcae88efb514e0430fc72959 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Wed, 22 May 2019 12:26:58 +0200 Subject: [PATCH 23/35] Clang: Improve updating If project parts are up to date we send them directly to the indexer, so the indexer can decide we something needs an update. Change-Id: I7d4f32794c6b3a861cdefb3653a6dfd4e711f619 Reviewed-by: Tim Jenssen --- src/libs/clangsupport/clangsupport-lib.pri | 1 - .../precompiledheadersupdatedmessage.h | 31 +++++---- src/libs/clangsupport/projectpartid.h | 2 +- src/libs/clangsupport/projectpartpch.cpp | 3 +- src/libs/clangsupport/projectpartpch.h | 3 +- .../projectpartpchproviderinterface.h | 50 --------------- .../clangpchmanager/pchmanagerclient.cpp | 63 ++----------------- .../clangpchmanager/pchmanagerclient.h | 21 +------ .../pchmanagernotifierinterface.h | 5 +- .../refactoringprojectupdater.cpp | 4 +- .../refactoringprojectupdater.h | 4 +- .../source/pchcreator.cpp | 2 +- .../source/pchmanagerserver.cpp | 18 +++++- .../source/projectpartsmanager.cpp | 31 ++++----- .../source/projectpartsmanager.h | 7 ++- .../source/projectpartsmanagerinterface.h | 9 ++- .../source/indexdataconsumer.cpp | 7 ++- tests/unit/mockup/projectexplorer/project.h | 4 ++ .../unit/unittest/gtest-creator-printing.cpp | 10 +-- tests/unit/unittest/mockpchmanagernotifier.h | 5 +- tests/unit/unittest/mockprojectpartsmanager.h | 5 +- tests/unit/unittest/pchcreator-test.cpp | 4 +- tests/unit/unittest/pchmanagerclient-test.cpp | 61 +----------------- .../pchmanagerclientserverinprocess-test.cpp | 2 +- tests/unit/unittest/pchmanagerserver-test.cpp | 28 +++++++-- .../unittest/projectpartsmanager-test.cpp | 53 ++++++++++------ .../refactoringprojectupdater-test.cpp | 4 +- 27 files changed, 154 insertions(+), 283 deletions(-) delete mode 100644 src/libs/clangsupport/projectpartpchproviderinterface.h diff --git a/src/libs/clangsupport/clangsupport-lib.pri b/src/libs/clangsupport/clangsupport-lib.pri index 201c5bf5380..df537f58486 100644 --- a/src/libs/clangsupport/clangsupport-lib.pri +++ b/src/libs/clangsupport/clangsupport-lib.pri @@ -204,7 +204,6 @@ HEADERS += \ $$PWD/nativefilepath.h \ $$PWD/filepathview.h \ $$PWD/compilermacro.h \ - $$PWD/projectpartpchproviderinterface.h \ $$PWD/updategeneratedfilesmessage.h \ $$PWD/removegeneratedfilesmessage.h \ $$PWD/generatedfiles.h \ diff --git a/src/libs/clangsupport/precompiledheadersupdatedmessage.h b/src/libs/clangsupport/precompiledheadersupdatedmessage.h index 9c17a3c9da2..5bd24dcd49c 100644 --- a/src/libs/clangsupport/precompiledheadersupdatedmessage.h +++ b/src/libs/clangsupport/precompiledheadersupdatedmessage.h @@ -25,7 +25,10 @@ #pragma once -#include "projectpartpch.h" +#include "clangsupport_global.h" +#include "projectpartid.h" + +#include namespace ClangBackEnd { @@ -33,29 +36,26 @@ class PrecompiledHeadersUpdatedMessage { public: PrecompiledHeadersUpdatedMessage() = default; - PrecompiledHeadersUpdatedMessage(ProjectPartPch projectPartPch) + PrecompiledHeadersUpdatedMessage(ProjectPartId projectPartId) { - projectPartPchs.push_back(projectPartPch); + projectPartIds.push_back(projectPartId); } - PrecompiledHeadersUpdatedMessage(ProjectPartPchs &&projectPartPchs) - : projectPartPchs(std::move(projectPartPchs)) + PrecompiledHeadersUpdatedMessage(ProjectPartIds &&projectPartIds) + : projectPartIds(std::move(projectPartIds)) {} - ProjectPartPchs takeProjectPartPchs() const - { - return std::move(projectPartPchs); - } + ProjectPartIds takeProjectPartIds() const { return std::move(projectPartIds); } friend QDataStream &operator<<(QDataStream &out, const PrecompiledHeadersUpdatedMessage &message) { - out << message.projectPartPchs; + out << message.projectPartIds; return out; } friend QDataStream &operator>>(QDataStream &in, PrecompiledHeadersUpdatedMessage &message) { - in >> message.projectPartPchs; + in >> message.projectPartIds; return in; } @@ -63,16 +63,13 @@ public: friend bool operator==(const PrecompiledHeadersUpdatedMessage &first, const PrecompiledHeadersUpdatedMessage &second) { - return first.projectPartPchs == second.projectPartPchs; + return first.projectPartIds == second.projectPartIds; } - PrecompiledHeadersUpdatedMessage clone() const - { - return PrecompiledHeadersUpdatedMessage(Utils::clone(projectPartPchs)); - } + PrecompiledHeadersUpdatedMessage clone() const { return *this; } public: - ProjectPartPchs projectPartPchs; + ProjectPartIds projectPartIds; }; CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const PrecompiledHeadersUpdatedMessage &message); diff --git a/src/libs/clangsupport/projectpartid.h b/src/libs/clangsupport/projectpartid.h index c372682bafc..fc5f659605f 100644 --- a/src/libs/clangsupport/projectpartid.h +++ b/src/libs/clangsupport/projectpartid.h @@ -54,7 +54,7 @@ public: return first.projectPathId < second.projectPathId; } - friend QDataStream &operator<<(QDataStream &out, const ProjectPartId &projectPathId) + friend QDataStream &operator<<(QDataStream &out, ProjectPartId projectPathId) { out << projectPathId.projectPathId; diff --git a/src/libs/clangsupport/projectpartpch.cpp b/src/libs/clangsupport/projectpartpch.cpp index aac672441c7..9c870ac572b 100644 --- a/src/libs/clangsupport/projectpartpch.cpp +++ b/src/libs/clangsupport/projectpartpch.cpp @@ -29,8 +29,7 @@ namespace ClangBackEnd { QDebug operator<<(QDebug debug, const ProjectPartPch &projectPartPch) { - debug.nospace() << "FileContainer(" << projectPartPch.projectPartId.projectPathId << ", " - << projectPartPch.pchPath << ")"; + debug.nospace() << "FileContainer(" << projectPartPch.projectPartId.projectPathId << ")"; return debug; } diff --git a/src/libs/clangsupport/projectpartpch.h b/src/libs/clangsupport/projectpartpch.h index c471b46b166..213247ae429 100644 --- a/src/libs/clangsupport/projectpartpch.h +++ b/src/libs/clangsupport/projectpartpch.h @@ -74,8 +74,7 @@ public: friend bool operator==(const ProjectPartPch &first, const ProjectPartPch &second) { - return first.projectPartId == second.projectPartId - && first.pchPath == second.pchPath; + return first.projectPartId == second.projectPartId && first.pchPath == second.pchPath; } ProjectPartPch clone() const diff --git a/src/libs/clangsupport/projectpartpchproviderinterface.h b/src/libs/clangsupport/projectpartpchproviderinterface.h deleted file mode 100644 index 282e541cfd8..00000000000 --- a/src/libs/clangsupport/projectpartpchproviderinterface.h +++ /dev/null @@ -1,50 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#pragma once - -#include "projectpartpch.h" - -#include - -namespace ClangBackEnd { - -class ProjectPartPchProviderInterface -{ -public: - ProjectPartPchProviderInterface() = default; - ProjectPartPchProviderInterface(const ProjectPartPchProviderInterface &) = delete; - ProjectPartPchProviderInterface &operator=(const ProjectPartPchProviderInterface &) = delete; - - virtual Utils::optional projectPartPch( - ClangBackEnd::ProjectPartId projectPartId) const = 0; - virtual const ClangBackEnd::ProjectPartPchs &projectPartPchs() const = 0; - - -protected: - ~ProjectPartPchProviderInterface() = default; -}; - -} // namespace ClangBackEnd diff --git a/src/plugins/clangpchmanager/pchmanagerclient.cpp b/src/plugins/clangpchmanager/pchmanagerclient.cpp index c26b871f506..04d1d4a0bf8 100644 --- a/src/plugins/clangpchmanager/pchmanagerclient.cpp +++ b/src/plugins/clangpchmanager/pchmanagerclient.cpp @@ -43,11 +43,8 @@ void PchManagerClient::alive() void PchManagerClient::precompiledHeadersUpdated(ClangBackEnd::PrecompiledHeadersUpdatedMessage &&message) { - for (ClangBackEnd::ProjectPartPch &projectPartPch : message.takeProjectPartPchs()) { - const QString pchPath{projectPartPch.pchPath}; - addProjectPartPch(std::move(projectPartPch)); - precompiledHeaderUpdated(projectPartPch.projectPartId, pchPath, projectPartPch.lastModified); - } + for (ClangBackEnd::ProjectPartId &projectPartId : message.takeProjectPartIds()) + precompiledHeaderUpdated(projectPartId); } void PchManagerClient::progress(ClangBackEnd::ProgressMessage &&message) @@ -66,10 +63,8 @@ void PchManagerClient::progress(ClangBackEnd::ProgressMessage &&message) void PchManagerClient::precompiledHeaderRemoved(ClangBackEnd::ProjectPartId projectPartId) { - for (auto notifier : m_notifiers) { - removeProjectPartPch(projectPartId); + for (auto notifier : m_notifiers) notifier->precompiledHeaderRemoved(projectPartId); - } } void PchManagerClient::setConnectionClient(PchManagerConnectionClient *connectionClient) @@ -77,22 +72,6 @@ void PchManagerClient::setConnectionClient(PchManagerConnectionClient *connectio m_connectionClient = connectionClient; } -Utils::optional PchManagerClient::projectPartPch( - ClangBackEnd::ProjectPartId projectPartId) const -{ - auto found = std::lower_bound(m_projectPartPchs.cbegin(), - m_projectPartPchs.cend(), - projectPartId, - [] (const auto &projectPartPch, auto projectPartId) { - return projectPartId < projectPartPch.projectPartId; - }); - - if (found != m_projectPartPchs.end() && found->projectPartId == projectPartId) - return *found; - - return Utils::nullopt; -} - void PchManagerClient::attach(PchManagerNotifierInterface *notifier) { m_notifiers.push_back(notifier); @@ -109,47 +88,15 @@ void PchManagerClient::detach(PchManagerNotifierInterface *notifierToBeDeleted) m_notifiers.erase(newEnd, m_notifiers.end()); } -void PchManagerClient::removeProjectPartPch(ClangBackEnd::ProjectPartId projectPartId) -{ - auto found = std::lower_bound(m_projectPartPchs.begin(), - m_projectPartPchs.end(), - projectPartId, - [] (const auto &projectPartPch, auto projectPartId) { - return projectPartId < projectPartPch.projectPartId; - }); - - if (found != m_projectPartPchs.end() && found->projectPartId == projectPartId) { - *found = std::move(m_projectPartPchs.back()); - m_projectPartPchs.pop_back(); - } -} - -void PchManagerClient::addProjectPartPch(ClangBackEnd::ProjectPartPch &&projectPartPch) -{ - auto found = std::lower_bound(m_projectPartPchs.begin(), - m_projectPartPchs.end(), - projectPartPch.projectPartId, - [] (const auto &projectPartPch, auto projectPartId) { - return projectPartId < projectPartPch.projectPartId; - }); - - if (found != m_projectPartPchs.end() && found->projectPartId == projectPartPch.projectPartId) - *found = std::move(projectPartPch); - else - m_projectPartPchs.insert(found, std::move(projectPartPch)); -} - const std::vector &PchManagerClient::notifiers() const { return m_notifiers; } -void PchManagerClient::precompiledHeaderUpdated(ClangBackEnd::ProjectPartId projectPartId, - const QString &pchFilePath, - long long lastModified) +void PchManagerClient::precompiledHeaderUpdated(ClangBackEnd::ProjectPartId projectPartId) { for (auto notifier : m_notifiers) - notifier->precompiledHeaderUpdated(projectPartId, pchFilePath, lastModified); + notifier->precompiledHeaderUpdated(projectPartId); } } // namespace ClangPchManager diff --git a/src/plugins/clangpchmanager/pchmanagerclient.h b/src/plugins/clangpchmanager/pchmanagerclient.h index 308370356e2..7d986a0ab69 100644 --- a/src/plugins/clangpchmanager/pchmanagerclient.h +++ b/src/plugins/clangpchmanager/pchmanagerclient.h @@ -28,7 +28,7 @@ #include "clangpchmanager_global.h" #include -#include +#include #include @@ -37,8 +37,7 @@ class PchManagerConnectionClient; class ProgressManagerInterface; class PchManagerNotifierInterface; -class CLANGPCHMANAGER_EXPORT PchManagerClient final : public ClangBackEnd::PchManagerClientInterface, - public ClangBackEnd::ProjectPartPchProviderInterface +class CLANGPCHMANAGER_EXPORT PchManagerClient final : public ClangBackEnd::PchManagerClientInterface { friend class PchManagerNotifierInterface; public: @@ -56,27 +55,13 @@ public: void setConnectionClient(PchManagerConnectionClient *connectionClient); - Utils::optional projectPartPch( - ClangBackEnd::ProjectPartId projectPartId) const override; - - const ClangBackEnd::ProjectPartPchs &projectPartPchs() const override - { - return m_projectPartPchs; - } - unittest_public : const std::vector ¬ifiers() const; - void precompiledHeaderUpdated(ClangBackEnd::ProjectPartId projectPartId, - const QString &pchFilePath, - long long lastModified); + void precompiledHeaderUpdated(ClangBackEnd::ProjectPartId projectPartId); void attach(PchManagerNotifierInterface *notifier); void detach(PchManagerNotifierInterface *notifier); - void addProjectPartPch(ClangBackEnd::ProjectPartPch &&projectPartPch); - void removeProjectPartPch(ClangBackEnd::ProjectPartId projectPartId); - private: - ClangBackEnd::ProjectPartPchs m_projectPartPchs; std::vector m_notifiers; PchManagerConnectionClient *m_connectionClient=nullptr; ProgressManagerInterface &m_pchCreationProgressManager; diff --git a/src/plugins/clangpchmanager/pchmanagernotifierinterface.h b/src/plugins/clangpchmanager/pchmanagernotifierinterface.h index 04461186d6f..780ec5a2cd1 100644 --- a/src/plugins/clangpchmanager/pchmanagernotifierinterface.h +++ b/src/plugins/clangpchmanager/pchmanagernotifierinterface.h @@ -42,10 +42,7 @@ public: PchManagerNotifierInterface(const PchManagerNotifierInterface &) = delete; PchManagerNotifierInterface &operator=(const PchManagerNotifierInterface &) = delete; - virtual void precompiledHeaderUpdated(ClangBackEnd::ProjectPartId projectPartId, - const QString &pchFilePath, - long long lastModified) - = 0; + virtual void precompiledHeaderUpdated(ClangBackEnd::ProjectPartId projectPartId) = 0; virtual void precompiledHeaderRemoved(ClangBackEnd::ProjectPartId projectPartId) = 0; PchManagerClient &m_pchManagerClient; diff --git a/src/plugins/clangrefactoring/refactoringprojectupdater.cpp b/src/plugins/clangrefactoring/refactoringprojectupdater.cpp index 8cfd5b942a4..20a9fce730d 100644 --- a/src/plugins/clangrefactoring/refactoringprojectupdater.cpp +++ b/src/plugins/clangrefactoring/refactoringprojectupdater.cpp @@ -30,9 +30,7 @@ namespace ClangRefactoring { -void RefactoringProjectUpdater::precompiledHeaderUpdated(ClangBackEnd::ProjectPartId projectPartId, - const QString &, - long long) +void RefactoringProjectUpdater::precompiledHeaderUpdated(ClangBackEnd::ProjectPartId projectPartId) { const QString projectPartName = fetchProjectPartName(projectPartId); diff --git a/src/plugins/clangrefactoring/refactoringprojectupdater.h b/src/plugins/clangrefactoring/refactoringprojectupdater.h index a9559ef94ec..0986e35cb0b 100644 --- a/src/plugins/clangrefactoring/refactoringprojectupdater.h +++ b/src/plugins/clangrefactoring/refactoringprojectupdater.h @@ -47,9 +47,7 @@ public: { } - void precompiledHeaderUpdated(ClangBackEnd::ProjectPartId projectPartId, - const QString &pchFilePath, - long long lastModified) override; + void precompiledHeaderUpdated(ClangBackEnd::ProjectPartId projectPartId) override; void precompiledHeaderRemoved(ClangBackEnd::ProjectPartId projectPartId) override; private: diff --git a/src/tools/clangpchmanagerbackend/source/pchcreator.cpp b/src/tools/clangpchmanagerbackend/source/pchcreator.cpp index 9dd1bf36476..9416e310aaf 100644 --- a/src/tools/clangpchmanagerbackend/source/pchcreator.cpp +++ b/src/tools/clangpchmanagerbackend/source/pchcreator.cpp @@ -180,7 +180,7 @@ void PchCreator::doInMainThreadAfterFinished() m_buildDependenciesStorage.updatePchCreationTimeStamp(m_projectPartPch.lastModified, m_projectPartPch.projectPartId); m_clangPathwatcher.updateIdPaths({{m_projectPartPch.projectPartId, existingSources}}); - m_pchManagerClient.precompiledHeadersUpdated({m_projectPartPch}); + m_pchManagerClient.precompiledHeadersUpdated({m_projectPartPch.projectPartId}); } } diff --git a/src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp b/src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp index c1c12121aac..9cce6ef4694 100644 --- a/src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp +++ b/src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp @@ -34,6 +34,7 @@ #include #include +#include #include #include @@ -57,18 +58,29 @@ void PchManagerServer::end() QCoreApplication::exit(); } +namespace { +ProjectPartIds toProjectPartIds(const ProjectPartContainers &projectParts) +{ + return Utils::transform(projectParts, [](const auto &projectPart) { + return projectPart.projectPartId; + }); +} +} // namespace + void PchManagerServer::updateProjectParts(UpdateProjectPartsMessage &&message) { m_toolChainsArgumentsCache.update(message.projectsParts, message.toolChainArguments); - ProjectPartContainers newProjectParts = m_projectPartsManager.update(message.takeProjectsParts()); + auto upToDateProjectParts = m_projectPartsManager.update(message.takeProjectsParts()); if (m_generatedFiles.isValid()) { - m_pchTaskGenerator.addProjectParts(std::move(newProjectParts), + m_pchTaskGenerator.addProjectParts(std::move(upToDateProjectParts.notUpToDate), std::move(message.toolChainArguments)); } else { - m_projectPartsManager.updateDeferred(newProjectParts); + m_projectPartsManager.updateDeferred(upToDateProjectParts.notUpToDate); } + + client()->precompiledHeadersUpdated(toProjectPartIds(upToDateProjectParts.upToDate)); } void PchManagerServer::removeProjectParts(RemoveProjectPartsMessage &&message) diff --git a/src/tools/clangpchmanagerbackend/source/projectpartsmanager.cpp b/src/tools/clangpchmanagerbackend/source/projectpartsmanager.cpp index cc4ca53d7d5..191a13e16b9 100644 --- a/src/tools/clangpchmanagerbackend/source/projectpartsmanager.cpp +++ b/src/tools/clangpchmanagerbackend/source/projectpartsmanager.cpp @@ -44,34 +44,35 @@ ProjectPartIds toProjectPartIds(const ProjectPartContainers &projectsParts) return ids; } -ProjectPartContainers ProjectPartsManager::update(ProjectPartContainers &&projectsParts) +ProjectPartsManager::UpToDataProjectParts ProjectPartsManager::update(ProjectPartContainers &&projectsParts) { - auto updatedProjectParts = filterNewProjectParts(std::move(projectsParts), m_projectParts); + auto notUpToDateProjectParts = filterProjectParts(projectsParts, m_projectParts); - if (updatedProjectParts.empty()) - return {}; + if (notUpToDateProjectParts.empty()) + return {std::move(projectsParts), {}}; auto persistentProjectParts = m_projectPartsStorage.fetchProjectParts( - toProjectPartIds(updatedProjectParts)); + toProjectPartIds(notUpToDateProjectParts)); if (persistentProjectParts.size() > 0) { mergeProjectParts(persistentProjectParts); - updatedProjectParts = filterNewProjectParts(std::move(updatedProjectParts), - persistentProjectParts); + notUpToDateProjectParts = filterProjectParts(notUpToDateProjectParts, persistentProjectParts); - if (updatedProjectParts.empty()) + if (notUpToDateProjectParts.empty()) return {}; } - m_projectPartsStorage.updateProjectParts(updatedProjectParts); - m_projectPartsStorage.resetIndexingTimeStamps(updatedProjectParts); + m_projectPartsStorage.updateProjectParts(notUpToDateProjectParts); + m_projectPartsStorage.resetIndexingTimeStamps(notUpToDateProjectParts); m_precompiledHeaderStorage.deleteProjectPrecompiledHeaders( - toProjectPartIds(updatedProjectParts)); + toProjectPartIds(notUpToDateProjectParts)); - mergeProjectParts(updatedProjectParts); + mergeProjectParts(notUpToDateProjectParts); - return updatedProjectParts; + auto upToDateProjectParts = filterProjectParts(projectsParts, notUpToDateProjectParts); + + return {upToDateProjectParts, notUpToDateProjectParts}; } void ProjectPartsManager::remove(const ProjectPartIds &projectPartIds) @@ -176,8 +177,8 @@ ProjectPartContainers ProjectPartsManager::deferredUpdates() return deferredProjectParts; } -ProjectPartContainers ProjectPartsManager::filterNewProjectParts( - ProjectPartContainers &&projectsParts, const ProjectPartContainers &oldProjectParts) +ProjectPartContainers ProjectPartsManager::filterProjectParts( + const ProjectPartContainers &projectsParts, const ProjectPartContainers &oldProjectParts) { ProjectPartContainers updatedProjectPartContainers; updatedProjectPartContainers.reserve(projectsParts.size()); diff --git a/src/tools/clangpchmanagerbackend/source/projectpartsmanager.h b/src/tools/clangpchmanagerbackend/source/projectpartsmanager.h index 323e6c68253..35d9e41c1cc 100644 --- a/src/tools/clangpchmanagerbackend/source/projectpartsmanager.h +++ b/src/tools/clangpchmanagerbackend/source/projectpartsmanager.h @@ -36,6 +36,7 @@ namespace ClangBackEnd { inline namespace Pch { + class ProjectPartsManager final : public ProjectPartsManagerInterface { public: @@ -45,14 +46,14 @@ public: , m_precompiledHeaderStorage(precompiledHeaderStorage) {} - ProjectPartContainers update(ProjectPartContainers &&projectsParts) override; + UpToDataProjectParts update(ProjectPartContainers &&projectsParts) override; void remove(const ProjectPartIds &projectPartIds) override; ProjectPartContainers projects(const ProjectPartIds &projectPartIds) const override; void updateDeferred(const ProjectPartContainers &projectsParts) override; ProjectPartContainers deferredUpdates() override; - static ProjectPartContainers filterNewProjectParts(ProjectPartContainers &&newProjectsParts, - const ProjectPartContainers &oldProjectParts); + static ProjectPartContainers filterProjectParts(const ProjectPartContainers &newProjectsParts, + const ProjectPartContainers &oldProjectParts); void mergeProjectParts(const ProjectPartContainers &projectsParts); const ProjectPartContainers &projectParts() const; diff --git a/src/tools/clangpchmanagerbackend/source/projectpartsmanagerinterface.h b/src/tools/clangpchmanagerbackend/source/projectpartsmanagerinterface.h index ee80173f8a9..54bae58c1ad 100644 --- a/src/tools/clangpchmanagerbackend/source/projectpartsmanagerinterface.h +++ b/src/tools/clangpchmanagerbackend/source/projectpartsmanagerinterface.h @@ -32,11 +32,18 @@ namespace ClangBackEnd { class ProjectPartsManagerInterface { public: + class UpToDataProjectParts + { + public: + ProjectPartContainers upToDate; + ProjectPartContainers notUpToDate; + }; + ProjectPartsManagerInterface() = default; ProjectPartsManagerInterface(const ProjectPartsManagerInterface &) = delete; ProjectPartsManagerInterface &operator=(const ProjectPartsManagerInterface &) = delete; - virtual ProjectPartContainers update(ProjectPartContainers &&projectsParts) = 0; + virtual UpToDataProjectParts update(ProjectPartContainers &&projectsParts) = 0; virtual void remove(const ProjectPartIds &projectPartIds) = 0; virtual ProjectPartContainers projects(const ProjectPartIds &projectPartIds) const = 0; virtual void updateDeferred(const ProjectPartContainers &projectsParts) = 0; diff --git a/src/tools/clangrefactoringbackend/source/indexdataconsumer.cpp b/src/tools/clangrefactoringbackend/source/indexdataconsumer.cpp index 86e5fb597ce..f44b3134a23 100644 --- a/src/tools/clangrefactoringbackend/source/indexdataconsumer.cpp +++ b/src/tools/clangrefactoringbackend/source/indexdataconsumer.cpp @@ -32,6 +32,8 @@ #include +#include + namespace ClangBackEnd { namespace { @@ -136,9 +138,10 @@ bool IndexDataConsumer::handleDeclOccurence( if (!namedDeclaration->getIdentifier()) return true; - if (skipSymbol(m_sourceManager->getFileID(sourceLocation), symbolRoles)) - + if (skipSymbol(m_sourceManager->getFileID(sourceLocation), symbolRoles)) { + namedDeclaration->getDeclName().dump(); return true; + } SymbolIndex globalId = toSymbolIndex(declaration->getCanonicalDecl()); diff --git a/tests/unit/mockup/projectexplorer/project.h b/tests/unit/mockup/projectexplorer/project.h index e6e321ee433..c69eb6e47ba 100644 --- a/tests/unit/mockup/projectexplorer/project.h +++ b/tests/unit/mockup/projectexplorer/project.h @@ -43,6 +43,10 @@ public: Target *activeTarget() const { return {}; } + QVariant namedSettings(const QString &name) const { return settings.at(name); } + void setNamedSettings(const QString &name, const QVariant &value) { settings[name] = value; } + Utils::FileName rootProjectDirectoryPath; + mutable std::map settings; }; } // namespace ProjectExplorer diff --git a/tests/unit/unittest/gtest-creator-printing.cpp b/tests/unit/unittest/gtest-creator-printing.cpp index 6b3433ef104..7ac4a676e3e 100644 --- a/tests/unit/unittest/gtest-creator-printing.cpp +++ b/tests/unit/unittest/gtest-creator-printing.cpp @@ -51,7 +51,7 @@ #include #include #include -#include +#include #include #include #include @@ -719,18 +719,14 @@ std::ostream &operator<<(std::ostream &out, const NativeFilePath &filePath) std::ostream &operator<<(std::ostream &out, const PrecompiledHeadersUpdatedMessage &message) { - out << "(" - << message.projectPartPchs - << ")"; + out << "(" << message.projectPartIds << ")"; return out; } std::ostream &operator<<(std::ostream &out, const ProjectPartPch &projectPartPch) { - out << "(" - << projectPartPch.projectPartId << ", " - << projectPartPch.pchPath << ", " + out << "(" << projectPartPch.projectPartId << ", " << projectPartPch.pchPath << ", " << projectPartPch.lastModified << ")"; return out; diff --git a/tests/unit/unittest/mockpchmanagernotifier.h b/tests/unit/unittest/mockpchmanagernotifier.h index 600b37bd2ee..8db9a63c40c 100644 --- a/tests/unit/unittest/mockpchmanagernotifier.h +++ b/tests/unit/unittest/mockpchmanagernotifier.h @@ -36,9 +36,6 @@ public: : ClangPchManager::PchManagerNotifierInterface(pchManagerClient) {} - MOCK_METHOD3(precompiledHeaderUpdated, - void(ClangBackEnd::ProjectPartId projectPartId, - const QString &pchFilePath, - long long lastModified)); + MOCK_METHOD1(precompiledHeaderUpdated, void(ClangBackEnd::ProjectPartId projectPartId)); MOCK_METHOD1(precompiledHeaderRemoved, void(ClangBackEnd::ProjectPartId projectPartId)); }; diff --git a/tests/unit/unittest/mockprojectpartsmanager.h b/tests/unit/unittest/mockprojectpartsmanager.h index b2cab59060c..613faf7dfca 100644 --- a/tests/unit/unittest/mockprojectpartsmanager.h +++ b/tests/unit/unittest/mockprojectpartsmanager.h @@ -33,7 +33,7 @@ class MockProjectPartsManager : public ClangBackEnd::ProjectPartsManagerInterfac { public: MOCK_METHOD1(update, - ClangBackEnd::ProjectPartContainers( + ClangBackEnd::ProjectPartsManagerInterface::UpToDataProjectParts( const ClangBackEnd::ProjectPartContainers &projectsParts)); MOCK_METHOD1(remove, void(const ClangBackEnd::ProjectPartIds &projectPartIds)); MOCK_CONST_METHOD1( @@ -42,7 +42,8 @@ public: MOCK_METHOD1(updateDeferred, void(const ClangBackEnd::ProjectPartContainers &projectsParts)); MOCK_METHOD0(deferredUpdates, ClangBackEnd::ProjectPartContainers()); - ClangBackEnd::ProjectPartContainers update(ClangBackEnd::ProjectPartContainers &&projectsParts) override + ClangBackEnd::ProjectPartsManagerInterface::UpToDataProjectParts update( + ClangBackEnd::ProjectPartContainers &&projectsParts) override { return update(projectsParts); } diff --git a/tests/unit/unittest/pchcreator-test.cpp b/tests/unit/unittest/pchcreator-test.cpp index 19bc087ca6d..66943fc1479 100644 --- a/tests/unit/unittest/pchcreator-test.cpp +++ b/tests/unit/unittest/pchcreator-test.cpp @@ -203,8 +203,8 @@ TEST_F(PchCreatorVerySlowTest, ProjectPartPchsSendToPchManagerClient) EXPECT_CALL(mockPchManagerClient, precompiledHeadersUpdated( - Field(&ClangBackEnd::PrecompiledHeadersUpdatedMessage::projectPartPchs, - ElementsAre(Eq(creator.projectPartPch()))))); + Field(&ClangBackEnd::PrecompiledHeadersUpdatedMessage::projectPartIds, + ElementsAre(Eq(creator.projectPartPch().projectPartId))))); creator.doInMainThreadAfterFinished(); } diff --git a/tests/unit/unittest/pchmanagerclient-test.cpp b/tests/unit/unittest/pchmanagerclient-test.cpp index 6c74143e4d2..18a61d70388 100644 --- a/tests/unit/unittest/pchmanagerclient-test.cpp +++ b/tests/unit/unittest/pchmanagerclient-test.cpp @@ -65,11 +65,9 @@ protected: filePathCache, mockProjectPartsStorage}; ClangBackEnd::ProjectPartId projectPartId{1}; - ClangBackEnd::FilePath pchFilePath{"/path/to/pch"}; - PrecompiledHeadersUpdatedMessage message{{{projectPartId, pchFilePath.clone(), 1}}}; + PrecompiledHeadersUpdatedMessage message{{projectPartId}}; ClangBackEnd::ProjectPartId projectPartId2{2}; - ClangBackEnd::FilePath pchFilePath2{"/path/to/pch2"}; - PrecompiledHeadersUpdatedMessage message2{{{projectPartId2, pchFilePath2.clone(), 1}}}; + PrecompiledHeadersUpdatedMessage message2{{projectPartId2}}; }; TEST_F(PchManagerClient, NotifierAttached) @@ -93,8 +91,7 @@ TEST_F(PchManagerClient, NotifierDetached) TEST_F(PchManagerClient, Update) { - EXPECT_CALL(mockPchManagerNotifier, - precompiledHeaderUpdated(projectPartId, pchFilePath.toQString(), Eq(1))); + EXPECT_CALL(mockPchManagerNotifier, precompiledHeaderUpdated(projectPartId)); client.precompiledHeadersUpdated(message.clone()); } @@ -106,58 +103,6 @@ TEST_F(PchManagerClient, Remove) projectUpdater.removeProjectParts({projectPartId, projectPartId}); } -TEST_F(PchManagerClient, GetNoProjectPartPchForWrongProjectPartId) -{ - auto optional = client.projectPartPch(23); - - ASSERT_FALSE(optional); -} - -TEST_F(PchManagerClient, GetProjectPartPchForProjectPartId) -{ - client.precompiledHeadersUpdated(std::move(message)); - - auto optional = client.projectPartPch(projectPartId); - - ASSERT_TRUE(optional); -} - -TEST_F(PchManagerClient, ProjectPartPchRemoved) -{ - client.precompiledHeadersUpdated(std::move(message)); - - client.precompiledHeaderRemoved(projectPartId); - - ASSERT_FALSE(client.projectPartPch(projectPartId)); -} - -TEST_F(PchManagerClient, ProjectPartPchHasNoDublicateEntries) -{ - client.precompiledHeadersUpdated(message.clone()); - client.precompiledHeadersUpdated(message2.clone()); - - client.precompiledHeadersUpdated(message.clone()); - - ASSERT_THAT(client.projectPartPchs(), SizeIs(2)); -} - -TEST_F(PchManagerClient, ProjectPartPchForProjectPartIdLastModified) -{ - client.precompiledHeadersUpdated(std::move(message)); - - ASSERT_THAT(client.projectPartPch(projectPartId)->lastModified, 1); -} - -TEST_F(PchManagerClient, ProjectPartPchForProjectPartIdIsUpdated) -{ - client.precompiledHeadersUpdated(message.clone()); - PrecompiledHeadersUpdatedMessage updateMessage{{{projectPartId, pchFilePath.clone(), 42}}}; - - client.precompiledHeadersUpdated(updateMessage.clone()); - - ASSERT_THAT(client.projectPartPch(projectPartId)->lastModified, 42); -} - TEST_F(PchManagerClient, SetPchCreationProgress) { EXPECT_CALL(mockPchCreationProgressManager, setProgress(10, 20)); diff --git a/tests/unit/unittest/pchmanagerclientserverinprocess-test.cpp b/tests/unit/unittest/pchmanagerclientserverinprocess-test.cpp index e55b71f8605..194f52afd3b 100644 --- a/tests/unit/unittest/pchmanagerclientserverinprocess-test.cpp +++ b/tests/unit/unittest/pchmanagerclientserverinprocess-test.cpp @@ -148,7 +148,7 @@ TEST_F(PchManagerClientServerInProcess, SendRemoveGeneratedFilesMessage) TEST_F(PchManagerClientServerInProcess, SendPrecompiledHeaderUpdatedMessage) { - PrecompiledHeadersUpdatedMessage message{{{1, "/path/to/pch", 1}}}; + PrecompiledHeadersUpdatedMessage message{1}; EXPECT_CALL(mockPchManagerClient, precompiledHeadersUpdated(message)); diff --git a/tests/unit/unittest/pchmanagerserver-test.cpp b/tests/unit/unittest/pchmanagerserver-test.cpp index 502b51bc8c0..47b7d987ab7 100644 --- a/tests/unit/unittest/pchmanagerserver-test.cpp +++ b/tests/unit/unittest/pchmanagerserver-test.cpp @@ -48,6 +48,7 @@ using ClangBackEnd::V2::FileContainer; using ClangBackEnd::V2::FileContainers; using ClangBackEnd::ProjectPartContainer; using ClangBackEnd::ProjectPartContainers; +using UpToDataProjectParts = ClangBackEnd::ProjectPartsManagerInterface::UpToDataProjectParts; class PchManagerServer : public ::testing::Test { @@ -55,7 +56,8 @@ class PchManagerServer : public ::testing::Test { server.setClient(&mockPchManagerClient); - ON_CALL(mockProjectPartsManager, update(projectParts)).WillByDefault(Return(projectParts)); + ON_CALL(mockProjectPartsManager, update(projectParts)) + .WillByDefault(Return(UpToDataProjectParts{{}, projectParts})); ON_CALL(mockGeneratedFiles, isValid()).WillByDefault(Return(true)); } @@ -107,7 +109,8 @@ protected: Utils::LanguageVersion::C11, Utils::LanguageExtension::All}; std::vector projectParts{projectPart1, projectPart2}; - std::vector projectParts2{projectPart2}; + std::vector projectParts1{projectPart1}; + std::vector projectParts2{projectPart2}; FileContainer generatedFile{{"/path/to/", "file"}, "content", {}}; ClangBackEnd::UpdateProjectPartsMessage updateProjectPartsMessage{ Utils::clone(projectParts), {"toolChainArgument"}}; @@ -120,7 +123,7 @@ TEST_F(PchManagerServer, FilterProjectPartsAndSendThemToQueue) InSequence s; EXPECT_CALL(mockProjectPartsManager, update(updateProjectPartsMessage.projectsParts)) - .WillOnce(Return(projectParts2)); + .WillOnce(Return(UpToDataProjectParts{{}, projectParts2})); EXPECT_CALL( mockPchTaskGenerator, addProjectParts(Eq(projectParts2), ElementsAre("toolChainArgument"))); @@ -219,7 +222,7 @@ TEST_F(PchManagerServer, DontGeneratePchIfGeneratedFilesAreNotValid) InSequence s; EXPECT_CALL(mockProjectPartsManager, update(ElementsAre(projectPart1))) - .WillOnce(Return(ProjectPartContainers{projectPart1})); + .WillOnce(Return(UpToDataProjectParts{{}, ProjectPartContainers{projectPart1}})); EXPECT_CALL(mockGeneratedFiles, isValid()).WillOnce(Return(false)); EXPECT_CALL(mockPchTaskGenerator, addProjectParts(_, _)).Times(0); EXPECT_CALL(mockProjectPartsManager, updateDeferred(ElementsAre(projectPart1))); @@ -233,7 +236,7 @@ TEST_F(PchManagerServer, GeneratePchIfGeneratedFilesAreValid) InSequence s; EXPECT_CALL(mockProjectPartsManager, update(ElementsAre(projectPart1))) - .WillOnce(Return(ProjectPartContainers{projectPart1})); + .WillOnce(Return(UpToDataProjectParts{{}, ProjectPartContainers{projectPart1}})); EXPECT_CALL(mockGeneratedFiles, isValid()).WillOnce(Return(true)); EXPECT_CALL(mockPchTaskGenerator, addProjectParts(_, _)); EXPECT_CALL(mockProjectPartsManager, updateDeferred(_)).Times(0); @@ -276,4 +279,19 @@ TEST_F(PchManagerServer, AfterUpdatingGeneratedFilesAreStillInvalidSoNoPchsGener server.updateGeneratedFiles(updateGeneratedFilesMessage.clone()); } +TEST_F(PchManagerServer, SentUpToDateProjectPartIdsToClient) +{ + InSequence s; + + EXPECT_CALL(mockProjectPartsManager, update(updateProjectPartsMessage.projectsParts)) + .WillOnce(Return(UpToDataProjectParts{projectParts1, projectParts2})); + EXPECT_CALL(mockPchTaskGenerator, + addProjectParts(Eq(projectParts2), ElementsAre("toolChainArgument"))); + EXPECT_CALL(mockPchManagerClient, + precompiledHeadersUpdated( + Field(&ClangBackEnd::PrecompiledHeadersUpdatedMessage::projectPartIds, + ElementsAre(Eq(projectPart1.projectPartId))))); + + server.updateProjectParts(updateProjectPartsMessage.clone()); } +} // namespace diff --git a/tests/unit/unittest/projectpartsmanager-test.cpp b/tests/unit/unittest/projectpartsmanager-test.cpp index b12cbb6b2e9..d86543e9c26 100644 --- a/tests/unit/unittest/projectpartsmanager-test.cpp +++ b/tests/unit/unittest/projectpartsmanager-test.cpp @@ -36,6 +36,7 @@ namespace { using ClangBackEnd::FilePathId; using ClangBackEnd::ProjectPartContainer; using ClangBackEnd::ProjectPartContainers; +using UpToDataProjectParts = ClangBackEnd::ProjectPartsManagerInterface::UpToDataProjectParts; class ProjectPartsManager : public testing::Test { @@ -111,16 +112,20 @@ protected: TEST_F(ProjectPartsManager, GetNoProjectPartsForAddingEmptyProjectParts) { - auto updatedProjectParts = manager.update({}); + auto projectParts = manager.update({}); - ASSERT_THAT(updatedProjectParts, IsEmpty()); + ASSERT_THAT(projectParts, + AllOf(Field(&UpToDataProjectParts::upToDate, IsEmpty()), + Field(&UpToDataProjectParts::notUpToDate, IsEmpty()))); } TEST_F(ProjectPartsManager, GetProjectPartForAddingProjectPart) { - auto updatedProjectParts = manager.update({projectPartContainer1}); + auto projectParts = manager.update({projectPartContainer1}); - ASSERT_THAT(updatedProjectParts, ElementsAre(projectPartContainer1)); + ASSERT_THAT(projectParts, + AllOf(Field(&UpToDataProjectParts::upToDate, IsEmpty()), + Field(&UpToDataProjectParts::notUpToDate, ElementsAre(projectPartContainer1)))); } TEST_F(ProjectPartsManager, GetProjectPartForAddingProjectPartWithProjectPartAlreadyInTheDatabase) @@ -128,9 +133,11 @@ TEST_F(ProjectPartsManager, GetProjectPartForAddingProjectPartWithProjectPartAlr ON_CALL(mockProjectPartsStorage, fetchProjectParts(_)) .WillByDefault(Return(ProjectPartContainers{projectPartContainer1})); - auto updatedProjectParts = manager.update({projectPartContainer1, projectPartContainer2}); + auto projectParts = manager.update({projectPartContainer1, projectPartContainer2}); - ASSERT_THAT(updatedProjectParts, ElementsAre(projectPartContainer2)); + ASSERT_THAT(projectParts, + AllOf(Field(&UpToDataProjectParts::upToDate, ElementsAre(projectPartContainer1)), + Field(&UpToDataProjectParts::notUpToDate, ElementsAre(projectPartContainer2)))); } TEST_F(ProjectPartsManager, GetProjectPartForAddingProjectPartWithOlderProjectPartAlreadyInTheDatabase) @@ -138,9 +145,12 @@ TEST_F(ProjectPartsManager, GetProjectPartForAddingProjectPartWithOlderProjectPa ON_CALL(mockProjectPartsStorage, fetchProjectParts(_)) .WillByDefault(Return(ProjectPartContainers{projectPartContainer1})); - auto updatedProjectParts = manager.update({updatedProjectPartContainer1, projectPartContainer2}); + auto projectParts = manager.update({updatedProjectPartContainer1, projectPartContainer2}); - ASSERT_THAT(updatedProjectParts, ElementsAre(updatedProjectPartContainer1, projectPartContainer2)); + ASSERT_THAT(projectParts, + AllOf(Field(&UpToDataProjectParts::upToDate, IsEmpty()), + Field(&UpToDataProjectParts::notUpToDate, + ElementsAre(updatedProjectPartContainer1, projectPartContainer2)))); } TEST_F(ProjectPartsManager, ProjectPartAdded) @@ -184,9 +194,11 @@ TEST_F(ProjectPartsManager, DoNotUpdateNotNewProjectPart) { manager.update({projectPartContainer1}); - auto updatedProjectParts = manager.update({projectPartContainer1}); + auto projectParts = manager.update({projectPartContainer1}); - ASSERT_THAT(updatedProjectParts, IsEmpty()); + ASSERT_THAT(projectParts, + AllOf(Field(&UpToDataProjectParts::upToDate, ElementsAre(projectPartContainer1)), + Field(&UpToDataProjectParts::notUpToDate, IsEmpty()))); } TEST_F(ProjectPartsManager, NoDuplicateProjectPartAfterUpdatingWithNotNewProjectPart) @@ -216,8 +228,8 @@ TEST_F(ProjectPartsManager, MergeProjectMultipleTimesParts) TEST_F(ProjectPartsManager, GetNewProjectParts) { - auto newProjectParts = manager.filterNewProjectParts({projectPartContainer1, projectPartContainer2}, - {projectPartContainer2}); + auto newProjectParts = manager.filterProjectParts({projectPartContainer1, projectPartContainer2}, + {projectPartContainer2}); ASSERT_THAT(newProjectParts, ElementsAre(projectPartContainer1)); } @@ -226,9 +238,12 @@ TEST_F(ProjectPartsManager, GetUpdatedProjectPart) { manager.update({projectPartContainer1, projectPartContainer2}); - auto updatedProjectParts = manager.update({updatedProjectPartContainer1}); + auto projectParts = manager.update({updatedProjectPartContainer1}); - ASSERT_THAT(updatedProjectParts, ElementsAre(updatedProjectPartContainer1)); + ASSERT_THAT(projectParts, + AllOf(Field(&UpToDataProjectParts::upToDate, IsEmpty()), + Field(&UpToDataProjectParts::notUpToDate, + ElementsAre(updatedProjectPartContainer1)))); } TEST_F(ProjectPartsManager, ProjectPartIsReplacedWithUpdatedProjectPart) @@ -280,14 +295,14 @@ TEST_F(ProjectPartsManager, UpdateDeferred) TEST_F(ProjectPartsManager, NotUpdateDeferred) { - auto projectPartContainers = manager.update({projectPartContainer1, projectPartContainer2}); + manager.update({projectPartContainer1, projectPartContainer2}); ASSERT_THAT(manager.deferredUpdates(), IsEmpty()); } TEST_F(ProjectPartsManager, UpdateDeferredCleansDeferredUpdates) { - auto projectPartContainers = manager.update({projectPartContainer1, projectPartContainer2}); + manager.update({projectPartContainer1, projectPartContainer2}); manager.updateDeferred({projectPartContainer1}); manager.deferredUpdates(); @@ -386,9 +401,11 @@ TEST_F(ProjectPartsManager, ON_CALL(mockProjectPartsStorage, fetchProjectParts(_)) .WillByDefault(Return(ProjectPartContainers{projectPartContainerWithoutPrecompiledHeader1})); - auto updatedProjectParts = manager.update({projectPartContainer1}); + auto projectParts = manager.update({projectPartContainer1}); - ASSERT_THAT(updatedProjectParts, ElementsAre(projectPartContainer1)); + ASSERT_THAT(projectParts, + AllOf(Field(&UpToDataProjectParts::upToDate, IsEmpty()), + Field(&UpToDataProjectParts::notUpToDate, ElementsAre(projectPartContainer1)))); } TEST_F(ProjectPartsManager, ProjectPartAddedWithProjectPartAlreadyInTheDatabaseButWithoutEntries) diff --git a/tests/unit/unittest/refactoringprojectupdater-test.cpp b/tests/unit/unittest/refactoringprojectupdater-test.cpp index 8d5e60df91a..6913d1a16f7 100644 --- a/tests/unit/unittest/refactoringprojectupdater-test.cpp +++ b/tests/unit/unittest/refactoringprojectupdater-test.cpp @@ -101,7 +101,7 @@ TEST_F(RefactoringProjectUpdater, DontUpdateProjectPartIfNoProjectPartExistsForI EXPECT_CALL(mockCppModelManager, projectPartForId(Eq(QString("project1")))); EXPECT_CALL(mockRefactoringServer, updateProjectParts(_)).Times(0); - pchManagerClient.precompiledHeadersUpdated({{{3, "/path/to/pch", 12}}}); + pchManagerClient.precompiledHeadersUpdated({3}); } TEST_F(RefactoringProjectUpdater, UpdateProjectPart) @@ -118,7 +118,7 @@ TEST_F(RefactoringProjectUpdater, UpdateProjectPart) updateProjectParts(Field(&UpdateProjectPartsMessage::projectsParts, ElementsAre(IsProjectPartContainer(3))))); - pchManagerClient.precompiledHeadersUpdated({{{3, "/path/to/pch", 12}}}); + pchManagerClient.precompiledHeadersUpdated({3}); } TEST_F(RefactoringProjectUpdater, RemoveProjectPart) From b36e9d0e95f53fdebcf63f79060c0ebff42d0bf2 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Wed, 22 May 2019 15:08:55 +0200 Subject: [PATCH 24/35] ClangPchManager: Improve handling of no include in project PCH We were doing simply nothing but we should call PchCreator::doInMainThreadAfterFinished(). Change-Id: Ia21d2cf4af53121d9e401f6e9a5b432a4daed00f Reviewed-by: Tim Jenssen --- .../source/pchcreator.cpp | 5 +++- .../source/pchtaskqueue.cpp | 10 ++----- tests/unit/unittest/pchcreator-test.cpp | 30 +++++++++++++++++++ 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/src/tools/clangpchmanagerbackend/source/pchcreator.cpp b/src/tools/clangpchmanagerbackend/source/pchcreator.cpp index 9416e310aaf..cd7b492868d 100644 --- a/src/tools/clangpchmanagerbackend/source/pchcreator.cpp +++ b/src/tools/clangpchmanagerbackend/source/pchcreator.cpp @@ -113,8 +113,11 @@ Utils::SmallStringVector PchCreator::generateClangCompilerArguments(const PchTas void PchCreator::generatePch(PchTask &&pchTask) { m_projectPartPch.projectPartId = pchTask.projectPartId(); - m_projectPartPch.lastModified = QDateTime::currentSecsSinceEpoch(); + + if (pchTask.includes.empty()) + return; + auto content = generatePchIncludeFileContent(pchTask.includes); auto pchOutputPath = generatePchFilePath(); diff --git a/src/tools/clangpchmanagerbackend/source/pchtaskqueue.cpp b/src/tools/clangpchmanagerbackend/source/pchtaskqueue.cpp index 1edbe15806b..b9d6a48fe39 100644 --- a/src/tools/clangpchmanagerbackend/source/pchtaskqueue.cpp +++ b/src/tools/clangpchmanagerbackend/source/pchtaskqueue.cpp @@ -33,6 +33,8 @@ #include +#include + namespace ClangBackEnd { void PchTaskQueue::addPchTasks(PchTasks &&newPchTasks, PchTasks &destination) @@ -145,7 +147,6 @@ std::vector PchTaskQueue::createProjectTasks(PchTasks &&pchT auto convert = [this](auto &&pchTask) { return [pchTask = std::move(pchTask), this](PchCreatorInterface &pchCreator) mutable { const auto projectPartId = pchTask.projectPartId(); - if (pchTask.includes.size()) { pchTask.systemPchPath = m_precompiledHeaderStorage.fetchSystemPrecompiledHeaderPath( projectPartId); pchTask.preIncludeSearchPath = m_environment.preIncludeSearchPath(); @@ -157,9 +158,6 @@ std::vector PchTaskQueue::createProjectTasks(PchTasks &&pchT m_precompiledHeaderStorage.insertProjectPrecompiledHeader( projectPartId, projectPartPch.pchPath, projectPartPch.lastModified); } - } else { - m_precompiledHeaderStorage.deleteProjectPrecompiledHeader(projectPartId); - } }; }; @@ -179,7 +177,6 @@ std::vector PchTaskQueue::createSystemTasks(PchTasks &&pchTa auto convert = [this](auto &&pchTask) { return [pchTask = std::move(pchTask), this](PchCreatorInterface &pchCreator) mutable { const auto projectPartIds = pchTask.projectPartIds; - if (pchTask.includes.size()) { pchTask.preIncludeSearchPath = m_environment.preIncludeSearchPath(); pchCreator.generatePch(std::move(pchTask)); const auto &projectPartPch = pchCreator.projectPartPch(); @@ -189,9 +186,6 @@ std::vector PchTaskQueue::createSystemTasks(PchTasks &&pchTa m_precompiledHeaderStorage.insertSystemPrecompiledHeaders( projectPartIds, projectPartPch.pchPath, projectPartPch.lastModified); } - } else { - m_precompiledHeaderStorage.deleteSystemPrecompiledHeaders(projectPartIds); - } }; }; diff --git a/tests/unit/unittest/pchcreator-test.cpp b/tests/unit/unittest/pchcreator-test.cpp index 66943fc1479..0cf84a983dd 100644 --- a/tests/unit/unittest/pchcreator-test.cpp +++ b/tests/unit/unittest/pchcreator-test.cpp @@ -315,6 +315,36 @@ TEST_F(PchCreatorVerySlowTest, FaultyProjectPartPchForCreatesFaultyPchForPchTask Field(&ProjectPartPch::lastModified, Gt(0)))); } +TEST_F(PchCreatorSlowTest, NoIncludes) +{ + pchTask1.includes = {}; + + creator.generatePch(std::move(pchTask1)); + + ASSERT_THAT(creator.projectPartPch(), + AllOf(Field(&ProjectPartPch::projectPartId, Eq(pchTask1.projectPartId())), + Field(&ProjectPartPch::pchPath, IsEmpty()), + Field(&ProjectPartPch::lastModified, Gt(0)))); +} + +TEST_F(PchCreatorSlowTest, NoIncludesInTheMainThreadCalls) +{ + pchTask1.includes = {}; + creator.generatePch(std::move(pchTask1)); + + EXPECT_CALL(mockPchManagerClient, + precompiledHeadersUpdated( + Field(&ClangBackEnd::PrecompiledHeadersUpdatedMessage::projectPartIds, + ElementsAre(Eq(creator.projectPartPch().projectPartId))))); + EXPECT_CALL(mockClangPathWatcher, + updateIdPaths( + ElementsAre(AllOf(Field(&ClangBackEnd::IdPaths::id, 1), + Field(&ClangBackEnd::IdPaths::filePathIds, IsEmpty()))))); + EXPECT_CALL(mockBuildDependenciesStorage, updatePchCreationTimeStamp(Gt(0), Eq(1))); + + creator.doInMainThreadAfterFinished(); +} + TEST_F(PchCreatorVerySlowTest, GeneratedFile) { creator.clear(); From ee27ae2ef78692b29d26c466c519f4318526a7a4 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Thu, 23 May 2019 18:32:47 +0200 Subject: [PATCH 25/35] ClangRefactoring: Improve indexing Fix some bugs in the indexing and use the new macro indexer from clang. Change-Id: I2ba1b28097a8751aea942071851a60d164c6f371 Reviewed-by: Tim Jenssen --- .../source/builddependencycollector.cpp | 3 +- .../source/builddependencycollector.h | 1 - .../source/collectbuilddependencyaction.h | 18 +- ...lectbuilddependencypreprocessorcallbacks.h | 3 - .../source/collectbuilddependencytoolaction.h | 16 +- .../source/collectusedmacroactionfactory.h | 4 - .../source/collectusedmacrosaction.h | 4 - ...sedmacrosandsourcespreprocessorcallbacks.h | 15 +- .../source/usedmacrosandsourcescollector.cpp | 1 - .../source/usedmacrosandsourcescollector.h | 1 - .../source/clangrefactoringbackend-source.pri | 2 + .../collectmacrospreprocessorcallbacks.h | 19 +- .../collectmacrossourcefilecallbacks.cpp | 19 +- .../source/collectmacrossourcefilecallbacks.h | 11 +- .../source/collectsymbolsaction.cpp | 3 +- .../source/collectsymbolsaction.h | 65 ++++-- .../filestatuspreprocessorcallbacks.cpp | 59 +++++ .../source/filestatuspreprocessorcallbacks.h | 59 +++++ .../source/indexdataconsumer.cpp | 104 +++++++-- .../source/indexdataconsumer.h | 33 ++- .../source/symbolscollector.cpp | 103 +++----- .../source/symbolscollector.h | 8 +- .../source/symbolscollectorinterface.h | 3 - .../source/symbolsvisitorbase.h | 43 ++-- tests/unit/unittest/pchtaskqueue-test.cpp | 31 --- tests/unit/unittest/symbolscollector-test.cpp | 219 ++---------------- 26 files changed, 393 insertions(+), 454 deletions(-) create mode 100644 src/tools/clangrefactoringbackend/source/filestatuspreprocessorcallbacks.cpp create mode 100644 src/tools/clangrefactoringbackend/source/filestatuspreprocessorcallbacks.h diff --git a/src/tools/clangpchmanagerbackend/source/builddependencycollector.cpp b/src/tools/clangpchmanagerbackend/source/builddependencycollector.cpp index 2bd0b87af0d..b2c6cf8f86b 100644 --- a/src/tools/clangpchmanagerbackend/source/builddependencycollector.cpp +++ b/src/tools/clangpchmanagerbackend/source/builddependencycollector.cpp @@ -129,8 +129,7 @@ void BuildDependencyCollector::collect() auto action = std::make_unique(m_buildDependency, m_filePathCache, - m_excludedFilePaths, - m_sourcesManager); + m_excludedFilePaths); tool.run(action.get()); } diff --git a/src/tools/clangpchmanagerbackend/source/builddependencycollector.h b/src/tools/clangpchmanagerbackend/source/builddependencycollector.h index f8aaa8f07cd..084024c8212 100644 --- a/src/tools/clangpchmanagerbackend/source/builddependencycollector.h +++ b/src/tools/clangpchmanagerbackend/source/builddependencycollector.h @@ -95,7 +95,6 @@ private: BuildDependency m_buildDependency; ClangBackEnd::FilePaths m_excludedFilePaths; Utils::SmallStringVector m_directories; - SourcesManager m_sourcesManager; const FilePathCachingInterface &m_filePathCache; const GeneratedFilesInterface &m_generatedFiles; const Environment &m_environment; diff --git a/src/tools/clangpchmanagerbackend/source/collectbuilddependencyaction.h b/src/tools/clangpchmanagerbackend/source/collectbuilddependencyaction.h index fa1a10e79c3..3e98dc2483b 100644 --- a/src/tools/clangpchmanagerbackend/source/collectbuilddependencyaction.h +++ b/src/tools/clangpchmanagerbackend/source/collectbuilddependencyaction.h @@ -40,15 +40,13 @@ class CollectBuildDependencyAction final : public clang::PreprocessOnlyAction { public: CollectBuildDependencyAction(BuildDependency &buildDependency, - const FilePathCachingInterface &filePathCache, - std::vector &excludedIncludeUID, - std::vector &alreadyIncludedFileUIDs, - SourcesManager &sourcesManager) - : m_buildDependency(buildDependency), - m_filePathCache(filePathCache), - m_excludedIncludeUID(excludedIncludeUID), - m_alreadyIncludedFileUIDs(alreadyIncludedFileUIDs), - m_sourcesManager(sourcesManager) + const FilePathCachingInterface &filePathCache, + std::vector &excludedIncludeUID, + std::vector &alreadyIncludedFileUIDs) + : m_buildDependency(buildDependency) + , m_filePathCache(filePathCache) + , m_excludedIncludeUID(excludedIncludeUID) + , m_alreadyIncludedFileUIDs(alreadyIncludedFileUIDs) { } @@ -66,7 +64,6 @@ public: m_excludedIncludeUID, m_alreadyIncludedFileUIDs, compilerInstance.getSourceManager(), - m_sourcesManager, compilerInstance.getPreprocessorPtr()); preprocessor.addPPCallbacks( @@ -88,7 +85,6 @@ private: const FilePathCachingInterface &m_filePathCache; std::vector &m_excludedIncludeUID; std::vector &m_alreadyIncludedFileUIDs; - SourcesManager &m_sourcesManager; }; } // namespace ClangBackEnd diff --git a/src/tools/clangpchmanagerbackend/source/collectbuilddependencypreprocessorcallbacks.h b/src/tools/clangpchmanagerbackend/source/collectbuilddependencypreprocessorcallbacks.h index 9db095bd75f..8583ff7a158 100644 --- a/src/tools/clangpchmanagerbackend/source/collectbuilddependencypreprocessorcallbacks.h +++ b/src/tools/clangpchmanagerbackend/source/collectbuilddependencypreprocessorcallbacks.h @@ -54,12 +54,10 @@ public: const std::vector &excludedIncludeUID, std::vector &alreadyIncludedFileUIDs, clang::SourceManager &sourceManager, - SourcesManager &sourcesManager, std::shared_ptr preprocessor) : CollectUsedMacrosAndSourcesPreprocessorCallbacksBase(buildDependency.usedMacros, filePathCache, sourceManager, - sourcesManager, preprocessor, buildDependency.sourceDependencies, buildDependency.sourceFiles, @@ -189,7 +187,6 @@ public: { filterOutHeaderGuards(); mergeUsedMacros(); - m_sourcesManager.updateModifiedTimeStamps(); filterOutIncludesWithMissingIncludes(); } diff --git a/src/tools/clangpchmanagerbackend/source/collectbuilddependencytoolaction.h b/src/tools/clangpchmanagerbackend/source/collectbuilddependencytoolaction.h index 4f28d0f7c82..471291ee90d 100644 --- a/src/tools/clangpchmanagerbackend/source/collectbuilddependencytoolaction.h +++ b/src/tools/clangpchmanagerbackend/source/collectbuilddependencytoolaction.h @@ -38,13 +38,11 @@ class CollectBuildDependencyToolAction final : public clang::tooling::FrontendAc { public: CollectBuildDependencyToolAction(BuildDependency &buildDependency, - const FilePathCachingInterface &filePathCache, - const ClangBackEnd::FilePaths &excludedIncludes, - SourcesManager &sourcesManager) - : m_buildDependency(buildDependency), - m_filePathCache(filePathCache), - m_excludedFilePaths(excludedIncludes), - m_sourcesManager(sourcesManager) + const FilePathCachingInterface &filePathCache, + const ClangBackEnd::FilePaths &excludedIncludes) + : m_buildDependency(buildDependency) + , m_filePathCache(filePathCache) + , m_excludedFilePaths(excludedIncludes) {} @@ -67,8 +65,7 @@ public: return new CollectBuildDependencyAction(m_buildDependency, m_filePathCache, m_excludedIncludeUIDs, - m_alreadyIncludedFileUIDs, - m_sourcesManager); + m_alreadyIncludedFileUIDs); } std::vector generateExcludedIncludeFileUIDs(clang::FileManager &fileManager) const @@ -95,7 +92,6 @@ private: BuildDependency &m_buildDependency; const FilePathCachingInterface &m_filePathCache; const ClangBackEnd::FilePaths &m_excludedFilePaths; - SourcesManager &m_sourcesManager; }; } // namespace ClangBackEnd diff --git a/src/tools/clangpchmanagerbackend/source/collectusedmacroactionfactory.h b/src/tools/clangpchmanagerbackend/source/collectusedmacroactionfactory.h index b3f1cc0029a..423d5f88764 100644 --- a/src/tools/clangpchmanagerbackend/source/collectusedmacroactionfactory.h +++ b/src/tools/clangpchmanagerbackend/source/collectusedmacroactionfactory.h @@ -39,13 +39,11 @@ class CollectUsedMacrosToolActionFactory final : public clang::tooling::Frontend public: CollectUsedMacrosToolActionFactory(UsedMacros &usedMacros, FilePathCachingInterface &filePathCache, - SourcesManager &sourcesManager, SourceDependencies &sourceDependencies, FilePathIds &sourceFiles, FileStatuses &fileStatuses) : m_usedMacros(usedMacros), m_filePathCache(filePathCache), - m_sourcesManager(sourcesManager), m_sourceDependencies(sourceDependencies), m_sourceFiles(sourceFiles), m_fileStatuses(fileStatuses) @@ -67,7 +65,6 @@ public: { return new CollectUsedMacrosAction(m_usedMacros, m_filePathCache, - m_sourcesManager, m_sourceDependencies, m_sourceFiles, m_fileStatuses); @@ -76,7 +73,6 @@ public: private: UsedMacros &m_usedMacros; FilePathCachingInterface &m_filePathCache; - SourcesManager &m_sourcesManager; SourceDependencies &m_sourceDependencies; FilePathIds &m_sourceFiles; FileStatuses &m_fileStatuses; diff --git a/src/tools/clangpchmanagerbackend/source/collectusedmacrosaction.h b/src/tools/clangpchmanagerbackend/source/collectusedmacrosaction.h index 4134d41d410..8f50e5a2308 100644 --- a/src/tools/clangpchmanagerbackend/source/collectusedmacrosaction.h +++ b/src/tools/clangpchmanagerbackend/source/collectusedmacrosaction.h @@ -41,13 +41,11 @@ class CollectUsedMacrosAction final : public clang::PreprocessOnlyAction public: CollectUsedMacrosAction(UsedMacros &usedMacros, FilePathCachingInterface &filePathCache, - SourcesManager &sourcesManager, SourceDependencies &sourceDependencies, FilePathIds &sourceFiles, FileStatuses &fileStatuses) : m_usedMacros(usedMacros), m_filePathCache(filePathCache), - m_sourcesManager(sourcesManager), m_sourceDependencies(sourceDependencies), m_sourceFiles(sourceFiles), m_fileStatuses(fileStatuses) @@ -65,7 +63,6 @@ public: m_usedMacros, m_filePathCache, compilerInstance.getSourceManager(), - m_sourcesManager, compilerInstance.getPreprocessorPtr(), m_sourceDependencies, m_sourceFiles, @@ -87,7 +84,6 @@ public: private: UsedMacros &m_usedMacros; FilePathCachingInterface &m_filePathCache; - SourcesManager &m_sourcesManager; SourceDependencies &m_sourceDependencies; FilePathIds &m_sourceFiles; FileStatuses &m_fileStatuses; diff --git a/src/tools/clangpchmanagerbackend/source/collectusedmacrosandsourcespreprocessorcallbacks.h b/src/tools/clangpchmanagerbackend/source/collectusedmacrosandsourcespreprocessorcallbacks.h index b8ea406df0f..5dc630de182 100644 --- a/src/tools/clangpchmanagerbackend/source/collectusedmacrosandsourcespreprocessorcallbacks.h +++ b/src/tools/clangpchmanagerbackend/source/collectusedmacrosandsourcespreprocessorcallbacks.h @@ -54,17 +54,16 @@ public: CollectUsedMacrosAndSourcesPreprocessorCallbacksBase(UsedMacros &usedMacros, const FilePathCachingInterface &filePathCache, const clang::SourceManager &sourceManager, - SourcesManager &sourcesManager, std::shared_ptr preprocessor, SourceDependencies &sourceDependencies, FilePathIds &sourceFiles, FileStatuses &fileStatuses) - : SymbolsVisitorBase(filePathCache, &sourceManager, sourcesManager), - m_usedMacros(usedMacros), - m_preprocessor(preprocessor), - m_sourceDependencies(sourceDependencies), - m_sourceFiles(sourceFiles), - m_fileStatuses(fileStatuses) + : SymbolsVisitorBase(filePathCache, &sourceManager, m_filePathIndices) + , m_usedMacros(usedMacros) + , m_preprocessor(preprocessor) + , m_sourceDependencies(sourceDependencies) + , m_sourceFiles(sourceFiles) + , m_fileStatuses(fileStatuses) {} void addSourceFile(const clang::FileEntry *fileEntry) @@ -166,6 +165,7 @@ public: private: UsedMacros m_maybeUsedMacros; + FilePathIds m_filePathIndices; UsedMacros &m_usedMacros; std::shared_ptr m_preprocessor; SourceDependencies &m_sourceDependencies; @@ -248,7 +248,6 @@ public: { filterOutHeaderGuards(); mergeUsedMacros(); - m_sourcesManager.updateModifiedTimeStamps(); } private: diff --git a/src/tools/clangpchmanagerbackend/source/usedmacrosandsourcescollector.cpp b/src/tools/clangpchmanagerbackend/source/usedmacrosandsourcescollector.cpp index b26b2b801c5..770d46f5e14 100644 --- a/src/tools/clangpchmanagerbackend/source/usedmacrosandsourcescollector.cpp +++ b/src/tools/clangpchmanagerbackend/source/usedmacrosandsourcescollector.cpp @@ -48,7 +48,6 @@ void UsedMacroAndSourcesCollector::collect() auto action = std::make_unique( m_usedMacros, m_filePathCache, - m_sourcesManager, m_sourceDependencies, m_sourceFiles, m_fileStatuses); diff --git a/src/tools/clangpchmanagerbackend/source/usedmacrosandsourcescollector.h b/src/tools/clangpchmanagerbackend/source/usedmacrosandsourcescollector.h index a5b5749c127..9b72201fbb6 100644 --- a/src/tools/clangpchmanagerbackend/source/usedmacrosandsourcescollector.h +++ b/src/tools/clangpchmanagerbackend/source/usedmacrosandsourcescollector.h @@ -74,7 +74,6 @@ public: private: ClangTool m_clangTool; - SourcesManager m_sourcesManager; UsedMacros m_usedMacros; FilePathCachingInterface &m_filePathCache; FilePathIds m_sourceFiles; diff --git a/src/tools/clangrefactoringbackend/source/clangrefactoringbackend-source.pri b/src/tools/clangrefactoringbackend/source/clangrefactoringbackend-source.pri index fcac51f226d..e7e83da7884 100644 --- a/src/tools/clangrefactoringbackend/source/clangrefactoringbackend-source.pri +++ b/src/tools/clangrefactoringbackend/source/clangrefactoringbackend-source.pri @@ -2,6 +2,7 @@ INCLUDEPATH += $$PWD HEADERS += \ $$PWD/clangrefactoringbackend_global.h \ + $$PWD/filestatuspreprocessorcallbacks.h \ $$PWD/sourcerangefilter.h \ $$PWD/symbolindexer.h \ $$PWD/symbolentry.h \ @@ -64,6 +65,7 @@ HEADERS += \ } SOURCES += \ + $$PWD/filestatuspreprocessorcallbacks.cpp \ $$PWD/sourcerangefilter.cpp \ $$PWD/symbolindexer.cpp \ $$PWD/filestatuscache.cpp diff --git a/src/tools/clangrefactoringbackend/source/collectmacrospreprocessorcallbacks.h b/src/tools/clangrefactoringbackend/source/collectmacrospreprocessorcallbacks.h index 1d16b0f5e1c..b0d59607e23 100644 --- a/src/tools/clangrefactoringbackend/source/collectmacrospreprocessorcallbacks.h +++ b/src/tools/clangrefactoringbackend/source/collectmacrospreprocessorcallbacks.h @@ -56,18 +56,16 @@ public: SourceDependencies &sourceDependencies, FilePathCachingInterface &filePathCache, const clang::SourceManager &sourceManager, - std::shared_ptr &&preprocessor, - SourcesManager &sourcesManager) + std::shared_ptr &&preprocessor) : CollectUsedMacrosAndSourcesPreprocessorCallbacksBase(usedMacros, filePathCache, sourceManager, - sourcesManager, std::move(preprocessor), sourceDependencies, sourceFiles, - fileStatuses), - m_symbolEntries(symbolEntries), - m_sourceLocationEntries(sourceLocationEntries) + fileStatuses) + , m_symbolEntries(symbolEntries) + , m_sourceLocationEntries(sourceLocationEntries) { } @@ -88,17 +86,15 @@ public: } void InclusionDirective(clang::SourceLocation hashLocation, - const clang::Token &/*includeToken*/, + const clang::Token & /*includeToken*/, llvm::StringRef /*fileName*/, bool /*isAngled*/, clang::CharSourceRange /*fileNameRange*/, const clang::FileEntry *file, llvm::StringRef /*searchPath*/, llvm::StringRef /*relativePath*/, - const clang::Module * /*imported*/ -#if LLVM_VERSION_MAJOR >= 7 - , clang::SrcMgr::CharacteristicKind /*fileType*/ -#endif + const clang::Module * /*imported*/, + clang::SrcMgr::CharacteristicKind /*fileType*/ ) override { if (!m_skipInclude && file) @@ -174,7 +170,6 @@ public: { filterOutHeaderGuards(); mergeUsedMacros(); - m_sourcesManager.updateModifiedTimeStamps(); } static const clang::MacroInfo *firstMacroInfo(const clang::MacroDirective *macroDirective) diff --git a/src/tools/clangrefactoringbackend/source/collectmacrossourcefilecallbacks.cpp b/src/tools/clangrefactoringbackend/source/collectmacrossourcefilecallbacks.cpp index d96fb05026c..d360b727c4b 100644 --- a/src/tools/clangrefactoringbackend/source/collectmacrossourcefilecallbacks.cpp +++ b/src/tools/clangrefactoringbackend/source/collectmacrossourcefilecallbacks.cpp @@ -34,16 +34,15 @@ namespace ClangBackEnd { bool CollectMacrosSourceFileCallbacks::handleBeginSource(clang::CompilerInstance &compilerInstance) { auto callbacks = std::make_unique( - m_symbolEntries, - m_sourceLocationEntries, - m_sourceFiles, - m_usedMacros, - m_fileStatuses, - m_sourceDependencies, - m_filePathCache, - compilerInstance.getSourceManager(), - compilerInstance.getPreprocessorPtr(), - m_sourcesManager); + m_symbolEntries, + m_sourceLocationEntries, + m_sourceFiles, + m_usedMacros, + m_fileStatuses, + m_sourceDependencies, + m_filePathCache, + compilerInstance.getSourceManager(), + compilerInstance.getPreprocessorPtr()); compilerInstance.getPreprocessorPtr()->addPPCallbacks(std::move(callbacks)); diff --git a/src/tools/clangrefactoringbackend/source/collectmacrossourcefilecallbacks.h b/src/tools/clangrefactoringbackend/source/collectmacrossourcefilecallbacks.h index 23922381065..16ba5a4f536 100644 --- a/src/tools/clangrefactoringbackend/source/collectmacrossourcefilecallbacks.h +++ b/src/tools/clangrefactoringbackend/source/collectmacrossourcefilecallbacks.h @@ -44,12 +44,10 @@ class CollectMacrosSourceFileCallbacks : public clang::tooling::SourceFileCallba public: CollectMacrosSourceFileCallbacks(SymbolEntries &symbolEntries, SourceLocationEntries &sourceLocationEntries, - FilePathCachingInterface &filePathCache, - SourcesManager &sourcesManager) - : m_symbolEntries(symbolEntries), - m_sourceLocationEntries(sourceLocationEntries), - m_filePathCache(filePathCache), - m_sourcesManager(sourcesManager) + FilePathCachingInterface &filePathCache) + : m_symbolEntries(symbolEntries) + , m_sourceLocationEntries(sourceLocationEntries) + , m_filePathCache(filePathCache) { } @@ -96,7 +94,6 @@ private: SymbolEntries &m_symbolEntries; SourceLocationEntries &m_sourceLocationEntries; FilePathCachingInterface &m_filePathCache; - SourcesManager &m_sourcesManager; }; } // namespace ClangBackEnd diff --git a/src/tools/clangrefactoringbackend/source/collectsymbolsaction.cpp b/src/tools/clangrefactoringbackend/source/collectsymbolsaction.cpp index 91c0dd28d85..301f50beaef 100644 --- a/src/tools/clangrefactoringbackend/source/collectsymbolsaction.cpp +++ b/src/tools/clangrefactoringbackend/source/collectsymbolsaction.cpp @@ -33,8 +33,7 @@ std::unique_ptr CollectSymbolsAction::newASTConsumer( clang::CompilerInstance &compilerInstance, llvm::StringRef inFile) { - m_indexDataConsumer->setSourceManager(&compilerInstance.getSourceManager()); - return m_action.CreateASTConsumer(compilerInstance, inFile); + return clang::WrapperFrontendAction::CreateASTConsumer(compilerInstance, inFile); } } // namespace ClangBackEnd diff --git a/src/tools/clangrefactoringbackend/source/collectsymbolsaction.h b/src/tools/clangrefactoringbackend/source/collectsymbolsaction.h index 2074a25a6e5..a38f1c4f879 100644 --- a/src/tools/clangrefactoringbackend/source/collectsymbolsaction.h +++ b/src/tools/clangrefactoringbackend/source/collectsymbolsaction.h @@ -26,8 +26,8 @@ #pragma once #include "clangrefactoringbackend_global.h" -#include "sourcelocationentry.h" #include "indexdataconsumer.h" +#include "sourcelocationentry.h" #include "symbolentry.h" #include @@ -37,53 +37,68 @@ #include #include #include +#include #include namespace ClangBackEnd { -class CollectSymbolsAction +class CollectSymbolsAction : public clang::WrapperFrontendAction { public: CollectSymbolsAction(std::shared_ptr indexDataConsumer) - : m_action(indexDataConsumer, createIndexingOptions()), - m_indexDataConsumer(indexDataConsumer.get()) + : clang::WrapperFrontendAction( + clang::index::createIndexingAction(indexDataConsumer, createIndexingOptions(), nullptr)) + , m_indexDataConsumer(indexDataConsumer) {} std::unique_ptr newASTConsumer(clang::CompilerInstance &compilerInstance, llvm::StringRef inFile); -private: - class WrappedIndexAction final : public clang::WrapperFrontendAction - { - public: - WrappedIndexAction(std::shared_ptr indexDataConsumer, - clang::index::IndexingOptions indexingOptions) - : clang::WrapperFrontendAction( - clang::index::createIndexingAction(indexDataConsumer, indexingOptions, nullptr)) - {} - std::unique_ptr - CreateASTConsumer(clang::CompilerInstance &compilerInstance, - llvm::StringRef inFile) override - { - return WrapperFrontendAction::CreateASTConsumer(compilerInstance, inFile); - } - }; - - static - clang::index::IndexingOptions createIndexingOptions() + static clang::index::IndexingOptions createIndexingOptions() { clang::index::IndexingOptions options; options.SystemSymbolFilter = clang::index::IndexingOptions::SystemSymbolFilterKind::None; options.IndexFunctionLocals = true; + options.IndexMacrosInPreprocessor = true; return options; } + bool BeginInvocation(clang::CompilerInstance &compilerInstance) override + { + m_indexDataConsumer->setSourceManager(&compilerInstance.getSourceManager()); + compilerInstance.getPreprocessorOpts().AllowPCHWithCompilerErrors = true; + compilerInstance.getDiagnosticOpts().ErrorLimit = 1; + + return clang::WrapperFrontendAction::BeginInvocation(compilerInstance); + } + + bool BeginSourceFileAction(clang::CompilerInstance &compilerInstance) override + { + compilerInstance.getPreprocessor().SetSuppressIncludeNotFoundError(true); + + return clang::WrapperFrontendAction::BeginSourceFileAction(compilerInstance); + } + + void EndSourceFileAction() override { clang::WrapperFrontendAction::EndSourceFileAction(); } + + bool PrepareToExecuteAction(clang::CompilerInstance &instance) override + { + return clang::WrapperFrontendAction::PrepareToExecuteAction(instance); + } + + void ExecuteAction() override { clang::WrapperFrontendAction::ExecuteAction(); } + + std::unique_ptr CreateASTConsumer(clang::CompilerInstance &compilerInstance, + llvm::StringRef inFile) override + { + return WrapperFrontendAction::CreateASTConsumer(compilerInstance, inFile); + } + private: - WrappedIndexAction m_action; - IndexDataConsumer *m_indexDataConsumer; + std::shared_ptr m_indexDataConsumer; }; } // namespace ClangBackEnd diff --git a/src/tools/clangrefactoringbackend/source/filestatuspreprocessorcallbacks.cpp b/src/tools/clangrefactoringbackend/source/filestatuspreprocessorcallbacks.cpp new file mode 100644 index 00000000000..28efe39f9bb --- /dev/null +++ b/src/tools/clangrefactoringbackend/source/filestatuspreprocessorcallbacks.cpp @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#include "filestatuspreprocessorcallbacks.h" + +namespace ClangBackEnd { + +void FileStatusPreprocessorCallbacks::FileChanged(clang::SourceLocation sourceLocation, + clang::PPCallbacks::FileChangeReason reason, + clang::SrcMgr::CharacteristicKind, + clang::FileID) +{ + if (reason == clang::PPCallbacks::EnterFile) { + const clang::FileEntry *fileEntry = m_sourceManager->getFileEntryForID( + m_sourceManager->getFileID(sourceLocation)); + if (fileEntry) + addFileStatus(fileEntry); + } +} + +void FileStatusPreprocessorCallbacks::addFileStatus(const clang::FileEntry *fileEntry) +{ + auto id = filePathId(fileEntry); + + auto found = std::lower_bound(m_fileStatuses.begin(), + m_fileStatuses.end(), + id, + [](const auto &first, const auto &second) { + return first.filePathId < second; + }); + + if (found == m_fileStatuses.end() || found->filePathId != id) { + m_fileStatuses.emplace(found, id, fileEntry->getSize(), fileEntry->getModificationTime()); + } +} + +} // namespace ClangBackEnd diff --git a/src/tools/clangrefactoringbackend/source/filestatuspreprocessorcallbacks.h b/src/tools/clangrefactoringbackend/source/filestatuspreprocessorcallbacks.h new file mode 100644 index 00000000000..ad7bc4f4d60 --- /dev/null +++ b/src/tools/clangrefactoringbackend/source/filestatuspreprocessorcallbacks.h @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2019 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#pragma once + +#include "filestatus.h" +#include "symbolsvisitorbase.h" + +#include + +#include + +namespace ClangBackEnd { + +class FileStatusPreprocessorCallbacks final : public clang::PPCallbacks, public SymbolsVisitorBase +{ +public: + FileStatusPreprocessorCallbacks(FileStatuses &fileStatuses, + const FilePathCachingInterface &filePathCache, + const clang::SourceManager *sourceManager, + FilePathIds &filePathIndices) + : SymbolsVisitorBase(filePathCache, sourceManager, filePathIndices) + , m_fileStatuses(fileStatuses) + {} + + void FileChanged(clang::SourceLocation sourceLocation, + clang::PPCallbacks::FileChangeReason reason, + clang::SrcMgr::CharacteristicKind, + clang::FileID) override; + + void addFileStatus(const clang::FileEntry *fileEntry); + +private: + FileStatuses &m_fileStatuses; +}; + +} // namespace ClangBackEnd diff --git a/src/tools/clangrefactoringbackend/source/indexdataconsumer.cpp b/src/tools/clangrefactoringbackend/source/indexdataconsumer.cpp index f44b3134a23..1fa60434619 100644 --- a/src/tools/clangrefactoringbackend/source/indexdataconsumer.cpp +++ b/src/tools/clangrefactoringbackend/source/indexdataconsumer.cpp @@ -24,11 +24,13 @@ ****************************************************************************/ #include "indexdataconsumer.h" +#include "collectsymbolsaction.h" +#include "filestatuspreprocessorcallbacks.h" +#include #include #include -#include -#include +#include #include @@ -115,33 +117,41 @@ bool isReference(clang::index::SymbolRoleSet symbolRoles) return symbolRoles & (uint(SymbolRole::Reference) | uint(SymbolRole::Call)); } -} +} // namespace bool IndexDataConsumer::skipSymbol(clang::FileID fileId, clang::index::SymbolRoleSet symbolRoles) { - bool alreadyParsed = isAlreadyParsed(fileId); - bool isParsedDeclaration = alreadyParsed && isDeclaration(symbolRoles); - bool isParsedReference = alreadyParsed && !dependentFilesAreModified() && isReference(symbolRoles); - - return isParsedDeclaration || isParsedReference; + return isAlreadyParsed(fileId, m_symbolSourcesManager) + && !m_symbolSourcesManager.dependentFilesModified(); } -bool IndexDataConsumer::handleDeclOccurence( - const clang::Decl *declaration, - clang::index::SymbolRoleSet symbolRoles, - llvm::ArrayRef /*symbolRelations*/, - clang::SourceLocation sourceLocation, - IndexDataConsumer::ASTNodeInfo /*astNodeInfo*/) +bool IndexDataConsumer::isAlreadyParsed(clang::FileID fileId, SourcesManager &sourcesManager) +{ + const clang::FileEntry *fileEntry = m_sourceManager->getFileEntryForID(fileId); + if (!fileEntry) + return false; + return sourcesManager.alreadyParsed(filePathId(fileEntry), fileEntry->getModificationTime()); +} + +void IndexDataConsumer::setPreprocessor(std::shared_ptr preprocessor) +{ + preprocessor->addPPCallbacks(std::make_unique( + m_fileStatuses, m_filePathCache, m_sourceManager, m_filePathIndices)); +} + +bool IndexDataConsumer::handleDeclOccurence(const clang::Decl *declaration, + clang::index::SymbolRoleSet symbolRoles, + llvm::ArrayRef /*symbolRelations*/, + clang::SourceLocation sourceLocation, + IndexDataConsumer::ASTNodeInfo /*astNodeInfo*/) { const auto *namedDeclaration = clang::dyn_cast(declaration); if (namedDeclaration) { if (!namedDeclaration->getIdentifier()) return true; - if (skipSymbol(m_sourceManager->getFileID(sourceLocation), symbolRoles)) { - namedDeclaration->getDeclName().dump(); + if (skipSymbol(m_sourceManager->getFileID(sourceLocation), symbolRoles)) return true; - } SymbolIndex globalId = toSymbolIndex(declaration->getCanonicalDecl()); @@ -168,4 +178,64 @@ bool IndexDataConsumer::handleDeclOccurence( return true; } +namespace { + +SourceLocationKind macroSymbolType(clang::index::SymbolRoleSet roles) +{ + if (roles & static_cast(clang::index::SymbolRole::Definition)) + return SourceLocationKind::MacroDefinition; + + if (roles & static_cast(clang::index::SymbolRole::Undefinition)) + return SourceLocationKind::MacroUndefinition; + + if (roles & static_cast(clang::index::SymbolRole::Reference)) + return SourceLocationKind::MacroUsage; + + return SourceLocationKind::None; +} + +} // namespace + +bool IndexDataConsumer::handleMacroOccurence(const clang::IdentifierInfo *identifierInfo, + const clang::MacroInfo *macroInfo, + clang::index::SymbolRoleSet roles, + clang::SourceLocation sourceLocation) +{ + if (macroInfo && sourceLocation.isFileID() + && !isAlreadyParsed(m_sourceManager->getFileID(sourceLocation), m_macroSourcesManager) + && !isInSystemHeader(sourceLocation)) { + FilePathId fileId = filePathId(sourceLocation); + if (fileId.isValid()) { + auto macroName = identifierInfo->getName(); + SymbolIndex globalId = toSymbolIndex(macroInfo); + + auto found = m_symbolEntries.find(globalId); + if (found == m_symbolEntries.end()) { + Utils::optional usr = generateUSR(macroName, sourceLocation); + if (usr) { + m_symbolEntries.emplace(std::piecewise_construct, + std::forward_as_tuple(globalId), + std::forward_as_tuple(std::move(*usr), + macroName, + SymbolKind::Macro)); + } + } + + m_sourceLocationEntries.emplace_back(globalId, + fileId, + lineColum(sourceLocation), + macroSymbolType(roles)); + } + } + + return true; +} + +void IndexDataConsumer::finish() +{ + m_macroSourcesManager.updateModifiedTimeStamps(); + m_symbolSourcesManager.updateModifiedTimeStamps(); + m_filePathIndices.clear(); +} + } // namespace ClangBackEnd diff --git a/src/tools/clangrefactoringbackend/source/indexdataconsumer.h b/src/tools/clangrefactoringbackend/source/indexdataconsumer.h index 6db595391c3..730ca12b232 100644 --- a/src/tools/clangrefactoringbackend/source/indexdataconsumer.h +++ b/src/tools/clangrefactoringbackend/source/indexdataconsumer.h @@ -26,6 +26,7 @@ #pragma once #include "clangrefactoringbackend_global.h" +#include "filestatus.h" #include "sourcelocationentry.h" #include "symbolentry.h" #include "symbolsvisitorbase.h" @@ -42,28 +43,48 @@ class IndexDataConsumer : public clang::index::IndexDataConsumer, public: IndexDataConsumer(SymbolEntries &symbolEntries, SourceLocationEntries &sourceLocationEntries, + FileStatuses &fileStatuses, FilePathCachingInterface &filePathCache, - SourcesManager &sourcesManager) - : SymbolsVisitorBase(filePathCache, nullptr, sourcesManager), - m_symbolEntries(symbolEntries), - m_sourceLocationEntries(sourceLocationEntries) + SourcesManager &symbolSourcesManager, + SourcesManager ¯oSourcesManager) + : SymbolsVisitorBase(filePathCache, nullptr, m_filePathIndices) + , m_symbolEntries(symbolEntries) + , m_sourceLocationEntries(sourceLocationEntries) + , m_fileStatuses(fileStatuses) + , m_symbolSourcesManager(symbolSourcesManager) + , m_macroSourcesManager(macroSourcesManager) + {} IndexDataConsumer(const IndexDataConsumer &) = delete; IndexDataConsumer &operator=(const IndexDataConsumer &) = delete; + void setPreprocessor(std::shared_ptr preprocessor) override; + bool handleDeclOccurence(const clang::Decl *declaration, clang::index::SymbolRoleSet symbolRoles, llvm::ArrayRef symbolRelations, clang::SourceLocation sourceLocation, ASTNodeInfo astNodeInfo) override; -private: - bool skipSymbol(clang::FileID fileId, clang::index::SymbolRoleSet symbolRoles); + bool handleMacroOccurence(const clang::IdentifierInfo *identifierInfo, + const clang::MacroInfo *macroInfo, + clang::index::SymbolRoleSet roles, + clang::SourceLocation sourceLocation) override; + + void finish() override; private: + bool skipSymbol(clang::FileID fileId, clang::index::SymbolRoleSet symbolRoles); + bool isAlreadyParsed(clang::FileID fileId, SourcesManager &sourcesManager); + +private: + FilePathIds m_filePathIndices; SymbolEntries &m_symbolEntries; SourceLocationEntries &m_sourceLocationEntries; + FileStatuses &m_fileStatuses; + SourcesManager &m_symbolSourcesManager; + SourcesManager &m_macroSourcesManager; }; } // namespace ClangBackEnd diff --git a/src/tools/clangrefactoringbackend/source/symbolscollector.cpp b/src/tools/clangrefactoringbackend/source/symbolscollector.cpp index b4bafcc8ada..071837ac528 100644 --- a/src/tools/clangrefactoringbackend/source/symbolscollector.cpp +++ b/src/tools/clangrefactoringbackend/source/symbolscollector.cpp @@ -32,10 +32,14 @@ namespace ClangBackEnd { SymbolsCollector::SymbolsCollector(Sqlite::Database &database) - : m_filePathCache(database), - m_indexDataConsumer(std::make_shared(m_symbolEntries, m_sourceLocationEntries, m_filePathCache, m_sourcesManager)), - m_collectSymbolsAction(m_indexDataConsumer), - m_collectMacrosSourceFileCallbacks(m_symbolEntries, m_sourceLocationEntries, m_filePathCache, m_sourcesManager) + : m_filePathCache(database) + , m_indexDataConsumer(std::make_shared(m_symbolEntries, + m_sourceLocationEntries, + m_fileStatuses, + m_filePathCache, + m_symbolSourcesManager, + m_macroSourcesManager)) + , m_collectSymbolsAction(m_indexDataConsumer) { } @@ -43,7 +47,6 @@ void SymbolsCollector::addFiles(const FilePathIds &filePathIds, const Utils::SmallStringVector &arguments) { m_clangTool.addFiles(m_filePathCache.filePaths(filePathIds), arguments); - m_collectMacrosSourceFileCallbacks.addSourceFiles(filePathIds); } void SymbolsCollector::setFile(FilePathId filePathId, const Utils::SmallStringVector &arguments) @@ -58,90 +61,73 @@ void SymbolsCollector::setUnsavedFiles(const V2::FileContainers &unsavedFiles) void SymbolsCollector::clear() { - m_indexDataConsumer->clear(); - m_collectMacrosSourceFileCallbacks.clear(); m_symbolEntries.clear(); m_sourceLocationEntries.clear(); + m_fileStatuses.clear(); m_clangTool = ClangTool(); } -template -std::unique_ptr -newFrontendActionFactory(Factory *consumerFactory, - clang::tooling::SourceFileCallbacks *sourceFileCallbacks) +std::unique_ptr newFrontendActionFactory(CollectSymbolsAction *action) { class FrontendActionFactoryAdapter : public clang::tooling::FrontendActionFactory { public: - explicit FrontendActionFactoryAdapter(Factory *consumerFactory, - clang::tooling::SourceFileCallbacks *sourceFileCallbacks) - : m_consumerFactory(consumerFactory), - m_sourceFileCallbacks(sourceFileCallbacks) + explicit FrontendActionFactoryAdapter(CollectSymbolsAction *consumerFactory) + : m_action(consumerFactory) {} - clang::FrontendAction *create() override { - return new ConsumerFactoryAdaptor(m_consumerFactory, m_sourceFileCallbacks); - } + clang::FrontendAction *create() override { return new AdaptorAction(m_action); } private: - class ConsumerFactoryAdaptor : public clang::ASTFrontendAction { + class AdaptorAction : public clang::ASTFrontendAction + { public: - ConsumerFactoryAdaptor(Factory *consumerFactory, - clang::tooling::SourceFileCallbacks *sourceFileCallbacks) - : m_consumerFactory(consumerFactory), - m_sourceFileCallbacks(sourceFileCallbacks) + AdaptorAction(CollectSymbolsAction *action) + : m_action(action) {} std::unique_ptr CreateASTConsumer(clang::CompilerInstance &instance, llvm::StringRef inFile) override { - return m_consumerFactory->newASTConsumer(instance, inFile); + return m_action->newASTConsumer(instance, inFile); } - protected: - bool BeginInvocation(clang::CompilerInstance &compilerInstance) override + bool BeginInvocation(clang::CompilerInstance &instance) override { - compilerInstance.getPreprocessorOpts().AllowPCHWithCompilerErrors = true; - - return clang::ASTFrontendAction::BeginInvocation(compilerInstance); + return m_action->BeginInvocation(instance); } - - bool BeginSourceFileAction(clang::CompilerInstance &compilerInstance) override + bool BeginSourceFileAction(clang::CompilerInstance &instance) override { - compilerInstance.getPreprocessor().SetSuppressIncludeNotFoundError(true); - - if (!clang::ASTFrontendAction::BeginSourceFileAction(compilerInstance)) - return false; - if (m_sourceFileCallbacks) - return m_sourceFileCallbacks->handleBeginSource(compilerInstance); - return true; + return m_action->BeginSourceFileAction(instance); } - void EndSourceFileAction() override + bool PrepareToExecuteAction(clang::CompilerInstance &instance) override { - if (m_sourceFileCallbacks) - m_sourceFileCallbacks->handleEndSource(); - clang::ASTFrontendAction::EndSourceFileAction(); + return m_action->PrepareToExecuteAction(instance); } + void ExecuteAction() override { m_action->ExecuteAction(); } + void EndSourceFileAction() override { m_action->EndSourceFileAction(); } + + bool hasPCHSupport() const override { return m_action->hasPCHSupport(); } + bool hasASTFileSupport() const override { return m_action->hasASTFileSupport(); } + bool hasIRSupport() const override { return false; } + bool hasCodeCompletionSupport() const override { return false; } private: - Factory *m_consumerFactory; - clang::tooling::SourceFileCallbacks *m_sourceFileCallbacks; + CollectSymbolsAction *m_action; }; - Factory *m_consumerFactory; - clang::tooling::SourceFileCallbacks *m_sourceFileCallbacks; + CollectSymbolsAction *m_action; }; - return std::unique_ptr( - new FrontendActionFactoryAdapter(consumerFactory, sourceFileCallbacks)); + return std::unique_ptr( + new FrontendActionFactoryAdapter(action)); } bool SymbolsCollector::collectSymbols() { auto tool = m_clangTool.createTool(); - auto actionFactory = ClangBackEnd::newFrontendActionFactory(&m_collectSymbolsAction, - &m_collectMacrosSourceFileCallbacks); + auto actionFactory = ClangBackEnd::newFrontendActionFactory(&m_collectSymbolsAction); return tool.run(actionFactory.get()) != 1; } @@ -160,24 +146,9 @@ const SourceLocationEntries &SymbolsCollector::sourceLocations() const return m_sourceLocationEntries; } -const FilePathIds &SymbolsCollector::sourceFiles() const -{ - return m_collectMacrosSourceFileCallbacks.sourceFiles(); -} - -const UsedMacros &SymbolsCollector::usedMacros() const -{ - return m_collectMacrosSourceFileCallbacks.usedMacros(); -} - const FileStatuses &SymbolsCollector::fileStatuses() const { - return m_collectMacrosSourceFileCallbacks.fileStatuses(); -} - -const SourceDependencies &SymbolsCollector::sourceDependencies() const -{ - return m_collectMacrosSourceFileCallbacks.sourceDependencies(); + return m_fileStatuses; } bool SymbolsCollector::isUsed() const diff --git a/src/tools/clangrefactoringbackend/source/symbolscollector.h b/src/tools/clangrefactoringbackend/source/symbolscollector.h index b37647e9694..cc7ca4396c9 100644 --- a/src/tools/clangrefactoringbackend/source/symbolscollector.h +++ b/src/tools/clangrefactoringbackend/source/symbolscollector.h @@ -58,10 +58,7 @@ public: const SymbolEntries &symbols() const override; const SourceLocationEntries &sourceLocations() const override; - const FilePathIds &sourceFiles() const override; - const UsedMacros &usedMacros() const override; const FileStatuses &fileStatuses() const override; - const SourceDependencies &sourceDependencies() const override; bool isUsed() const override; void setIsUsed(bool isUsed) override; @@ -71,10 +68,11 @@ private: ClangTool m_clangTool; SymbolEntries m_symbolEntries; SourceLocationEntries m_sourceLocationEntries; + FileStatuses m_fileStatuses; std::shared_ptr m_indexDataConsumer; CollectSymbolsAction m_collectSymbolsAction; - CollectMacrosSourceFileCallbacks m_collectMacrosSourceFileCallbacks; - SourcesManager m_sourcesManager; + SourcesManager m_symbolSourcesManager; + SourcesManager m_macroSourcesManager; bool m_isUsed = false; }; diff --git a/src/tools/clangrefactoringbackend/source/symbolscollectorinterface.h b/src/tools/clangrefactoringbackend/source/symbolscollectorinterface.h index 94b31423718..07b5de223ce 100644 --- a/src/tools/clangrefactoringbackend/source/symbolscollectorinterface.h +++ b/src/tools/clangrefactoringbackend/source/symbolscollectorinterface.h @@ -48,10 +48,7 @@ public: virtual const SymbolEntries &symbols() const = 0; virtual const SourceLocationEntries &sourceLocations() const = 0; - virtual const FilePathIds &sourceFiles() const = 0; - virtual const UsedMacros &usedMacros() const = 0; virtual const FileStatuses &fileStatuses() const = 0; - virtual const SourceDependencies &sourceDependencies() const = 0; }; } // namespace ClangBackEnd diff --git a/src/tools/clangrefactoringbackend/source/symbolsvisitorbase.h b/src/tools/clangrefactoringbackend/source/symbolsvisitorbase.h index ff2142f40e2..7b63cb223ec 100644 --- a/src/tools/clangrefactoringbackend/source/symbolsvisitorbase.h +++ b/src/tools/clangrefactoringbackend/source/symbolsvisitorbase.h @@ -46,10 +46,10 @@ class SymbolsVisitorBase public: SymbolsVisitorBase(const FilePathCachingInterface &filePathCache, const clang::SourceManager *sourceManager, - SourcesManager &sourcesManager) - : m_filePathCache(filePathCache), - m_sourceManager(sourceManager), - m_sourcesManager(sourcesManager) + FilePathIds &filePathIndices) + : m_filePathCache(filePathCache) + , m_sourceManager(sourceManager) + , m_filePathIndices(filePathIndices) {} FilePathId filePathId(clang::SourceLocation sourceLocation) @@ -60,25 +60,6 @@ public: return filePathId(fileEntry); } - bool dependentFilesAreModified() - { - return m_sourcesManager.dependentFilesModified(); - } - - bool isAlreadyParsed(clang::FileID fileId) - { - const clang::FileEntry *fileEntry = m_sourceManager->getFileEntryForID(fileId); - if (!fileEntry) - return false; - return m_sourcesManager.alreadyParsed(filePathId(fileEntry), - fileEntry->getModificationTime()); - } - - bool alreadyParsed(clang::SourceLocation sourceLocation) - { - return isAlreadyParsed(m_sourceManager->getFileID(sourceLocation)); - } - FilePathId filePathId(const clang::FileEntry *fileEntry) { if (fileEntry) { @@ -156,22 +137,26 @@ public: return isSystem(m_sourceManager->getSLocEntry(fileId).getFile().getFileCharacteristic()); } + bool isInSystemHeader(clang::SourceLocation sourceLocation) const + { + return m_sourceManager->isInSystemHeader(sourceLocation); + } + static bool isSystem(clang::SrcMgr::CharacteristicKind kind) { return clang::SrcMgr::isSystem(kind); } - void clear() - { - m_filePathIndices.clear(); - } + const FilePathCachingInterface &filePathCache() const { return m_filePathCache; } + const clang::SourceManager *sourceManager() const { return m_sourceManager; } protected: - std::vector m_filePathIndices; const FilePathCachingInterface &m_filePathCache; const clang::SourceManager *m_sourceManager = nullptr; - SourcesManager &m_sourcesManager; + +private: + FilePathIds &m_filePathIndices; }; } // namespace ClangBackend diff --git a/tests/unit/unittest/pchtaskqueue-test.cpp b/tests/unit/unittest/pchtaskqueue-test.cpp index 0851224d9d0..1754cea5623 100644 --- a/tests/unit/unittest/pchtaskqueue-test.cpp +++ b/tests/unit/unittest/pchtaskqueue-test.cpp @@ -331,22 +331,6 @@ TEST_F(PchTaskQueue, DeleteProjectPchEntryInDatabaseIfNoPchIsGenerated) tasks.front()(mockPchCreator); } -TEST_F(PchTaskQueue, DeleteProjectPchEntryInDatabaseIfTasksHasNoIncludes) -{ - InSequence s; - MockPchCreator mockPchCreator; - ClangBackEnd::ProjectPartPch projectPartPch{{}, "", 0}; - projectTask1.includes = {}; - auto tasks = queue.createProjectTasks({projectTask1}); - - EXPECT_CALL(mockPrecompiledHeaderStorage, fetchSystemPrecompiledHeaderPath(_)).Times(0); - EXPECT_CALL(mockPchCreator, generatePch(_)).Times(0); - EXPECT_CALL(mockPchCreator, projectPartPch()).Times(0); - EXPECT_CALL(mockPrecompiledHeaderStorage, deleteProjectPrecompiledHeader(Eq(1))); - - tasks.front()(mockPchCreator); -} - TEST_F(PchTaskQueue, CreateSystemTasksSizeEqualsInputSize) { auto tasks = queue.createSystemTasks({systemTask1, systemTask2}); @@ -388,19 +372,4 @@ TEST_F(PchTaskQueue, DeleteSystemPchEntryInDatabaseIfNoPchIsGenerated) tasks.front()(mockPchCreator); } -TEST_F(PchTaskQueue, DeleteSystemPchEntryInDatabaseIfTasksHasNoIncludes) -{ - InSequence s; - MockPchCreator mockPchCreator; - ClangBackEnd::ProjectPartPch projectPartPch{{}, "", 0}; - systemTask4.includes = {}; - auto tasks = queue.createSystemTasks({systemTask4}); - - EXPECT_CALL(mockPchCreator, generatePch(_)).Times(0); - EXPECT_CALL(mockPchCreator, projectPartPch()).Times(0); - EXPECT_CALL(mockPrecompiledHeaderStorage, - deleteSystemPrecompiledHeaders(UnorderedElementsAre(1, 3))); - - tasks.front()(mockPchCreator); -} } // namespace diff --git a/tests/unit/unittest/symbolscollector-test.cpp b/tests/unit/unittest/symbolscollector-test.cpp index 48e4420dc12..f0080a5d2c3 100644 --- a/tests/unit/unittest/symbolscollector-test.cpp +++ b/tests/unit/unittest/symbolscollector-test.cpp @@ -271,56 +271,6 @@ TEST_F(SymbolsCollector, DISABLED_ON_WINDOWS(CollectInUnsavedFile)) Contains(HasSymbolName("function"))); } -TEST_F(SymbolsCollector, SourceFiles) -{ - collector.setFile(filePathId(TESTDATA_DIR "/symbolscollector/main.cpp"), {"cc"}); - - collector.collectSymbols(); - - ASSERT_THAT(collector.sourceFiles(), - UnorderedElementsAre(filePathId(TESTDATA_DIR "/symbolscollector/main.cpp"), - filePathId(TESTDATA_DIR "/symbolscollector/header1.h"), - filePathId(TESTDATA_DIR "/symbolscollector/header2.h"))); -} - -TEST_F(SymbolsCollector, MainFileInSourceFiles) -{ - collector.setFile(filePathId(TESTDATA_DIR "/symbolscollector/main.cpp"), {"cc"}); - - ASSERT_THAT(collector.sourceFiles(), - ElementsAre(filePathId(TESTDATA_DIR "/symbolscollector/main.cpp"))); -} - -TEST_F(SymbolsCollector, ResetMainFileInSourceFiles) -{ - collector.setFile(filePathId(TESTDATA_DIR "/symbolscollector/main.cpp"), {"cc"}); - - ASSERT_THAT(collector.sourceFiles(), - ElementsAre(filePathId(TESTDATA_DIR "/symbolscollector/main.cpp"))); -} - -TEST_F(SymbolsCollector, DontDuplicateSourceFiles) -{ - collector.setFile(filePathId(TESTDATA_DIR "/symbolscollector/main.cpp"), {"cc"}); - collector.collectSymbols(); - - collector.collectSymbols(); - - ASSERT_THAT(collector.sourceFiles(), - UnorderedElementsAre(filePathId(TESTDATA_DIR "/symbolscollector/main.cpp"), - filePathId(TESTDATA_DIR "/symbolscollector/header1.h"), - filePathId(TESTDATA_DIR "/symbolscollector/header2.h"))); -} - -TEST_F(SymbolsCollector, ClearSourceFiles) -{ - collector.setFile(filePathId(TESTDATA_DIR "/symbolscollector/main.cpp"), {"cc"}); - - collector.clear(); - - ASSERT_THAT(collector.sourceFiles(), IsEmpty()); -} - TEST_F(SymbolsCollector, ClearSymbols) { collector.setFile(filePathId(TESTDATA_DIR "/symbolscollector/main.cpp"), {"cc"}); @@ -351,27 +301,6 @@ TEST_F(SymbolsCollector, ClearFileStatus) ASSERT_THAT(collector.fileStatuses(), IsEmpty()); } -TEST_F(SymbolsCollector, ClearUsedMacros) -{ - collector.setFile(filePathId(TESTDATA_DIR "/symbolscollector/defines.h"), {"cc"}); - collector.collectSymbols(); - - collector.clear(); - - ASSERT_THAT(collector.usedMacros(), IsEmpty()); -} - -TEST_F(SymbolsCollector, ClearSourceDependencies) -{ - collector.setFile(filePathId(TESTDATA_DIR "/symbolscollector/main2.cpp"), - {"cc", "-I" TESTDATA_DIR}); - collector.collectSymbols(); - - collector.clear(); - - ASSERT_THAT(collector.sourceDependencies(), IsEmpty()); -} - TEST_F(SymbolsCollector, DontCollectSymbolsAfterFilesAreCleared) { collector.setFile(filePathId(TESTDATA_DIR "/symbolscollector/main.cpp"), {"cc"}); @@ -382,16 +311,6 @@ TEST_F(SymbolsCollector, DontCollectSymbolsAfterFilesAreCleared) ASSERT_THAT(collector.symbols(), IsEmpty()); } -TEST_F(SymbolsCollector, DontCollectSourceFilesAfterFilesAreCleared) -{ - collector.setFile(filePathId(TESTDATA_DIR "/symbolscollector/main.cpp"), {"cc"}); - - collector.clear(); - collector.collectSymbols(); - - ASSERT_THAT(collector.sourceFiles(), IsEmpty()); -} - TEST_F(SymbolsCollector, DontCollectFileStatusAfterFilesAreCleared) { collector.setFile(filePathId(TESTDATA_DIR "/symbolscollector/main.cpp"), {"cc"}); @@ -402,82 +321,6 @@ TEST_F(SymbolsCollector, DontCollectFileStatusAfterFilesAreCleared) ASSERT_THAT(collector.fileStatuses(), IsEmpty()); } -TEST_F(SymbolsCollector, DontCollectUsedMacrosAfterFilesAreCleared) -{ - collector.setFile(filePathId(TESTDATA_DIR "/symbolscollector/main.cpp"), {"cc"}); - - collector.clear(); - collector.collectSymbols(); - - ASSERT_THAT(collector.usedMacros(), IsEmpty()); -} - -TEST_F(SymbolsCollector, DontCollectSourceDependenciesAfterFilesAreCleared) -{ - collector.setFile(filePathId(TESTDATA_DIR "/symbolscollector/main.cpp"), {"cc"}); - - collector.clear(); - collector.collectSymbols(); - - ASSERT_THAT(collector.sourceDependencies(), IsEmpty()); -} - -TEST_F(SymbolsCollector, CollectUsedMacrosWithExternalDefine) -{ - auto fileId = filePathId(TESTDATA_DIR "/symbolscollector/defines.h"); - collector.setFile(fileId, {"cc", "-DCOMPILER_ARGUMENT"}); - - collector.collectSymbols(); - - ASSERT_THAT(collector.usedMacros(), - ElementsAre(Eq(UsedMacro{"DEFINED", fileId}), - Eq(UsedMacro{"IF_DEFINE", fileId}), - Eq(UsedMacro{"__clang__", fileId}), - Eq(UsedMacro{"CLASS_EXPORT", fileId}), - Eq(UsedMacro{"IF_NOT_DEFINE", fileId}), - Eq(UsedMacro{"MACRO_EXPANSION", fileId}), - Eq(UsedMacro{"COMPILER_ARGUMENT", fileId}))); -} - -TEST_F(SymbolsCollector, CollectUsedMacrosWithoutExternalDefine) -{ - auto fileId = filePathId(TESTDATA_DIR "/symbolscollector/defines.h"); - collector.setFile(fileId, {"cc"}); - - collector.collectSymbols(); - - ASSERT_THAT(collector.usedMacros(), - ElementsAre(Eq(UsedMacro{"DEFINED", fileId}), - Eq(UsedMacro{"IF_DEFINE", fileId}), - Eq(UsedMacro{"__clang__", fileId}), - Eq(UsedMacro{"CLASS_EXPORT", fileId}), - Eq(UsedMacro{"IF_NOT_DEFINE", fileId}), - Eq(UsedMacro{"MACRO_EXPANSION", fileId}), - Eq(UsedMacro{"COMPILER_ARGUMENT", fileId}))); -} - -TEST_F(SymbolsCollector, DontCollectHeaderGuards) -{ - auto fileId = filePathId(TESTDATA_DIR "/symbolscollector/defines.h"); - collector.setFile(fileId, {"cc"}); - - collector.collectSymbols(); - - ASSERT_THAT(collector.usedMacros(), - Not(Contains(Eq(UsedMacro{"SYMBOLSCOLLECTOR_DEFINES_H", fileId})))); -} - -TEST_F(SymbolsCollector, DISABLED_DontCollectDynamicLibraryExports) -{ - auto fileId = filePathId(TESTDATA_DIR "/symbolscollector/defines.h"); - collector.setFile(fileId, {"cc"}); - - collector.collectSymbols(); - - ASSERT_THAT(collector.usedMacros(), - Not(Contains(Eq(UsedMacro{"CLASS_EXPORT", fileId})))); -} - TEST_F(SymbolsCollector, CollectMacroDefinitionSourceLocation) { auto fileId = filePathId(TESTDATA_DIR "/symbolscollector/defines.h"); @@ -489,7 +332,7 @@ TEST_F(SymbolsCollector, CollectMacroDefinitionSourceLocation) Contains(IsSourceLocationEntry(symbolId("IF_NOT_DEFINE"), fileId, 4, 9, SourceLocationKind::MacroDefinition))); } -TEST_F(SymbolsCollector, CollectMacroUsageInIfNotDefSourceLocation) +TEST_F(SymbolsCollector, DISABLED_CollectMacroUsageInIfNotDefSourceLocation) { auto fileId = filePathId(TESTDATA_DIR "/symbolscollector/defines.h"); collector.setFile(fileId, {"cc", "-DCOMPILER_ARGUMENT"}); @@ -500,7 +343,7 @@ TEST_F(SymbolsCollector, CollectMacroUsageInIfNotDefSourceLocation) Contains(IsSourceLocationEntry(symbolId("IF_NOT_DEFINE"), fileId, 6, 9, SourceLocationKind::MacroUsage))); } -TEST_F(SymbolsCollector, CollectSecondMacroUsageInIfNotDefSourceLocation) +TEST_F(SymbolsCollector, DISABLED_CollectSecondMacroUsageInIfNotDefSourceLocation) { auto fileId = filePathId(TESTDATA_DIR "/symbolscollector/defines.h"); collector.setFile(fileId, {"cc", "-DCOMPILER_ARGUMENT"}); @@ -511,7 +354,7 @@ TEST_F(SymbolsCollector, CollectSecondMacroUsageInIfNotDefSourceLocation) Contains(IsSourceLocationEntry(symbolId("IF_NOT_DEFINE"), fileId, 9, 9, SourceLocationKind::MacroUsage))); } -TEST_F(SymbolsCollector, CollectMacroUsageCompilerArgumentSourceLocation) +TEST_F(SymbolsCollector, DISABLED_CollectMacroUsageCompilerArgumentSourceLocation) { auto fileId = filePathId(TESTDATA_DIR "/symbolscollector/defines.h"); collector.setFile(fileId, {"cc", "-DCOMPILER_ARGUMENT"}); @@ -522,7 +365,7 @@ TEST_F(SymbolsCollector, CollectMacroUsageCompilerArgumentSourceLocation) Contains(IsSourceLocationEntry(symbolId("COMPILER_ARGUMENT"), fileId, 12, 9, SourceLocationKind::MacroUsage))); } -TEST_F(SymbolsCollector, CollectMacroUsageInIfDefSourceLocation) +TEST_F(SymbolsCollector, DISABLED_CollectMacroUsageInIfDefSourceLocation) { auto fileId = filePathId(TESTDATA_DIR "/symbolscollector/defines.h"); collector.setFile(fileId, {"cc", "-DCOMPILER_ARGUMENT"}); @@ -533,7 +376,7 @@ TEST_F(SymbolsCollector, CollectMacroUsageInIfDefSourceLocation) Contains(IsSourceLocationEntry(symbolId("IF_DEFINE"), fileId, 17, 8, SourceLocationKind::MacroUsage))); } -TEST_F(SymbolsCollector, CollectMacroUsageInDefinedSourceLocation) +TEST_F(SymbolsCollector, DISABLED_CollectMacroUsageInDefinedSourceLocation) { auto fileId = filePathId(TESTDATA_DIR "/symbolscollector/defines.h"); collector.setFile(fileId, {"cc", "-DCOMPILER_ARGUMENT"}); @@ -566,7 +409,7 @@ TEST_F(SymbolsCollector, CollectMacroUsageUndefSourceLocation) Contains(IsSourceLocationEntry(symbolId("UN_DEFINE"), fileId, 34, 8, SourceLocationKind::MacroUndefinition))); } -TEST_F(SymbolsCollector, CollectMacroUsageBuiltInSourceLocation) +TEST_F(SymbolsCollector, DISABLED_CollectMacroUsageBuiltInSourceLocation) { auto fileId = filePathId(TESTDATA_DIR "/symbolscollector/defines.h"); collector.setFile(fileId, {"cc", "-DCOMPILER_ARGUMENT"}); @@ -588,7 +431,7 @@ TEST_F(SymbolsCollector, CollectMacroDefinitionSymbols) Contains(AllOf(HasSymbolName("IF_NOT_DEFINE"), HasSymbolKind(SymbolKind::Macro)))); } -TEST_F(SymbolsCollector, CollectMacroBuiltInSymbols) +TEST_F(SymbolsCollector, DISABLED_CollectMacroBuiltInSymbols) { auto fileId = filePathId(TESTDATA_DIR "/symbolscollector/defines.h"); collector.setFile(fileId, {"cc"}); @@ -599,7 +442,7 @@ TEST_F(SymbolsCollector, CollectMacroBuiltInSymbols) Contains(AllOf(HasSymbolName("__clang__"), HasSymbolKind(SymbolKind::Macro)))); } -TEST_F(SymbolsCollector, CollectMacroCompilerArgumentSymbols) +TEST_F(SymbolsCollector, DISABLED_CollectMacroCompilerArgumentSymbols) { auto fileId = filePathId(TESTDATA_DIR "/symbolscollector/defines.h"); collector.setFile(fileId, {"cc", "-DCOMPILER_ARGUMENT"}); @@ -623,23 +466,6 @@ TEST_F(SymbolsCollector, CollectFileStatuses) fileStatus(TESTDATA_DIR "/symbolscollector/header2.h"))); } -TEST_F(SymbolsCollector, CollectSourceDependencies) -{ - auto mainFileId = filePathId(TESTDATA_DIR "/symbolscollector/main2.cpp"); - auto header1FileId = filePathId(TESTDATA_DIR "/symbolscollector/header1.h"); - auto header2FileId = filePathId(TESTDATA_DIR "/symbolscollector/header2.h"); - auto header3FileId = filePathId(TESTDATA_DIR "/symbolscollector/header3.h"); - collector.setFile(mainFileId, {"cc", "-I" TESTDATA_DIR}); - - collector.collectSymbols(); - - ASSERT_THAT(collector.sourceDependencies(), - UnorderedElementsAre(SourceDependency(mainFileId, header1FileId), - SourceDependency(mainFileId, header3FileId), - SourceDependency(header3FileId, header2FileId), - SourceDependency(header1FileId, header2FileId))); -} - TEST_F(SymbolsCollector, IsClassSymbol) { collector.setFile(filePathId(TESTDATA_DIR "/symbolscollector/symbolkind.cpp"), {"cc"}); @@ -770,13 +596,13 @@ TEST_F(SymbolsCollector, DontIndexUnmodifiedHeaderFilesAtSecondRun) collector.collectSymbols(); ASSERT_THAT(collector.symbols(), - AllOf( - Contains(HasSymbolName("HeaderFunctionReferenceInMainFile")), - Not(Contains(HasSymbolName("MemberReference"))), - Not(Contains(HasSymbolName("HeaderFunctionReference"))), - Not(Contains(HasSymbolName("HeaderFunction"))), - Not(Contains(HasSymbolName("Class"))), - Not(Contains(HasSymbolName("Member"))))); + AllOf(Contains(HasSymbolName("HeaderFunctionReferenceInMainFile")), + Not(Contains(HasSymbolName("MemberReference"))), + Not(Contains(HasSymbolName("HeaderFunctionReference"))), + Not(Contains(HasSymbolName("HeaderFunction"))), + Not(Contains(HasSymbolName("Class"))), + Not(Contains(HasSymbolName("Member"))), + Not(Contains(HasSymbolName("HEADER_DEFINE"))))); } TEST_F(SymbolsCollector, DontIndexUnmodifiedHeaderFilesAtTouchHeader) @@ -792,13 +618,14 @@ TEST_F(SymbolsCollector, DontIndexUnmodifiedHeaderFilesAtTouchHeader) collector.collectSymbols(); ASSERT_THAT(collector.symbols(), - AllOf( - Contains(HasSymbolName("HeaderFunctionReferenceInMainFile")), - Not(Contains(HasSymbolName("MemberReference"))), - Not(Contains(HasSymbolName("HeaderFunctionReference"))), - Not(Contains(HasSymbolName("HeaderFunction"))), - Not(Contains(HasSymbolName("Class"))), - Not(Contains(HasSymbolName("Member"))))); + AllOf(Contains(HasSymbolName("TouchHeaderFunction")), + Contains(HasSymbolName("HeaderFunctionReferenceInMainFile")), + Not(Contains(HasSymbolName("MemberReference"))), + Not(Contains(HasSymbolName("HeaderFunctionReference"))), + Not(Contains(HasSymbolName("HeaderFunction"))), + Not(Contains(HasSymbolName("Class"))), + Not(Contains(HasSymbolName("Member"))), + Not(Contains(HasSymbolName("HEADER_DEFINE"))))); } TEST_F(SymbolsCollector, DontIndexSystemIncudes) From 300feced2079b291ef107d0015bcf1f88e9e0eaf Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Tue, 4 Jun 2019 15:53:27 +0200 Subject: [PATCH 26/35] ClangRefactoring: Activate updating for indexing Change-Id: I6fb818edfab8ef7d9cfab0520276acedf0597fd3 Reviewed-by: Tim Jenssen --- .../source/builddependenciesstorage.h | 8 ++++++++ .../source/builddependenciesstorageinterface.h | 1 + .../source/symbolindexer.cpp | 2 ++ .../unittest/builddependenciesstorage-test.cpp | 11 ++++++++++- .../unit/unittest/mockbuilddependenciesstorage.h | 2 ++ tests/unit/unittest/symbolindexer-test.cpp | 15 +++++++++++++++ 6 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h b/src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h index e7269dd0f94..8c8c51a6cd2 100644 --- a/src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h +++ b/src/tools/clangpchmanagerbackend/source/builddependenciesstorage.h @@ -66,6 +66,12 @@ public: } } + FilePathIds fetchSources(ProjectPartId projectPartId) const override + { + return fetchProjectPartsFilesStatement.template values(1024, + projectPartId.projectPathId); + } + void insertOrUpdateFileStatuses(const FileStatuses &fileStatuses) override { WriteStatement &statement = insertOrUpdateFileStatusesStatement; @@ -246,6 +252,8 @@ public: "CONFLICT(sourceId, projectPartId) DO UPDATE SET sourceType = ?003, " "hasMissingIncludes = ?004", database}; + mutable ReadStatement fetchProjectPartsFilesStatement{ + "SELECT sourceId FROM projectPartsFiles WHERE projectPartId = ? ORDER BY sourceId", database}; mutable ReadStatement fetchSourceDependenciesStatement{ "WITH RECURSIVE collectedDependencies(sourceId) AS (VALUES(?) UNION " "SELECT dependencySourceId FROM sourceDependencies, " diff --git a/src/tools/clangpchmanagerbackend/source/builddependenciesstorageinterface.h b/src/tools/clangpchmanagerbackend/source/builddependenciesstorageinterface.h index a56e88b1f27..1166564b329 100644 --- a/src/tools/clangpchmanagerbackend/source/builddependenciesstorageinterface.h +++ b/src/tools/clangpchmanagerbackend/source/builddependenciesstorageinterface.h @@ -56,6 +56,7 @@ public: virtual UsedMacros fetchUsedMacros(FilePathId sourceId) const = 0; virtual ProjectPartId fetchProjectPartId(Utils::SmallStringView projectPartName) = 0; virtual void updatePchCreationTimeStamp(long long pchCreationTimeStamp, ProjectPartId projectPartId) = 0; + virtual FilePathIds fetchSources(ProjectPartId projectPartId) const = 0; protected: ~BuildDependenciesStorageInterface() = default; diff --git a/src/tools/clangrefactoringbackend/source/symbolindexer.cpp b/src/tools/clangrefactoringbackend/source/symbolindexer.cpp index 9c84c4666a6..1ee61eb67c2 100644 --- a/src/tools/clangrefactoringbackend/source/symbolindexer.cpp +++ b/src/tools/clangrefactoringbackend/source/symbolindexer.cpp @@ -144,6 +144,8 @@ void SymbolIndexer::updateProjectPart(ProjectPartContainer &&projectPart) } } + m_pathWatcher.updateIdPaths( + {{projectPartId, m_buildDependencyStorage.fetchSources(projectPartId)}}); m_symbolIndexerTaskQueue.addOrUpdateTasks(std::move(symbolIndexerTask)); m_symbolIndexerTaskQueue.processEntries(); } diff --git a/tests/unit/unittest/builddependenciesstorage-test.cpp b/tests/unit/unittest/builddependenciesstorage-test.cpp index aa823704857..052ed452f09 100644 --- a/tests/unit/unittest/builddependenciesstorage-test.cpp +++ b/tests/unit/unittest/builddependenciesstorage-test.cpp @@ -70,6 +70,7 @@ protected: MockSqliteWriteStatement &updatePchCreationTimeStampStatement = storage.updatePchCreationTimeStampStatement; MockSqliteWriteStatement &deleteAllProjectPartsFilesWithProjectPartNameStatement = storage.deleteAllProjectPartsFilesWithProjectPartNameStatement; + MockSqliteReadStatement &fetchProjectPartsFilesStatement = storage.fetchProjectPartsFilesStatement; }; TEST_F(BuildDependenciesStorage, ConvertStringsToJson) @@ -232,5 +233,13 @@ TEST_F(BuildDependenciesStorage, FetchUsedMacros) ASSERT_THAT(usedMacros, result); } -} +TEST_F(BuildDependenciesStorage, FetchSources) +{ + ClangBackEnd::FilePathIds result{3, 5, 7}; + EXPECT_CALL(fetchProjectPartsFilesStatement, valuesReturnFilePathIds(_, 22)).WillOnce(Return(result)); + auto sources = storage.fetchSources(22); + + ASSERT_THAT(sources, result); +} +} // namespace diff --git a/tests/unit/unittest/mockbuilddependenciesstorage.h b/tests/unit/unittest/mockbuilddependenciesstorage.h index 46c201de55f..a4d34e481dc 100644 --- a/tests/unit/unittest/mockbuilddependenciesstorage.h +++ b/tests/unit/unittest/mockbuilddependenciesstorage.h @@ -51,5 +51,7 @@ public: ClangBackEnd::ProjectPartId(Utils::SmallStringView projectPartName)); MOCK_METHOD2(updatePchCreationTimeStamp, void(long long pchCreationTimeStamp, ClangBackEnd::ProjectPartId projectPartId)); + MOCK_CONST_METHOD1(fetchSources, + ClangBackEnd::FilePathIds(ClangBackEnd::ProjectPartId projectPartId)); }; diff --git a/tests/unit/unittest/symbolindexer-test.cpp b/tests/unit/unittest/symbolindexer-test.cpp index a03f2be5079..2db11dc5fbe 100644 --- a/tests/unit/unittest/symbolindexer-test.cpp +++ b/tests/unit/unittest/symbolindexer-test.cpp @@ -922,6 +922,21 @@ TEST_F(SymbolIndexer, DependentSourceAreUpToDate) indexer.updateProjectParts({projectPart1}); } +TEST_F(SymbolIndexer, SourcesAreWatched) +{ + using ClangBackEnd::IdPaths; + InSequence s; + FilePathIds sourcePathIds{4, 6, 8}; + + EXPECT_CALL(mockBuildDependenciesStorage, fetchSources(projectPart1.projectPartId)) + .WillOnce(Return(sourcePathIds)); + EXPECT_CALL(mockPathWatcher, + updateIdPaths(ElementsAre(AllOf(Field(&IdPaths::id, projectPart1.projectPartId), + Field(&IdPaths::filePathIds, sourcePathIds))))); + + indexer.updateProjectParts({projectPart1}); +} + TEST_F(SymbolIndexer, CallSetNotifier) { EXPECT_CALL(mockPathWatcher, setNotifier(_)); From ce40c84a38cf5b58277c8365de1f6a03640b2ec0 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 17 Jun 2019 14:34:37 +0200 Subject: [PATCH 27/35] Fix projectupdater unit test Amends 35fa8aa8029. Change-Id: Ic791959c4bce66bf9b8b1b43e60c86268c33a029 Reviewed-by: Marco Bubke --- tests/unit/unittest/projectupdater-test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/unittest/projectupdater-test.cpp b/tests/unit/unittest/projectupdater-test.cpp index 960a2564697..ea1c14dc353 100644 --- a/tests/unit/unittest/projectupdater-test.cpp +++ b/tests/unit/unittest/projectupdater-test.cpp @@ -86,7 +86,7 @@ protected: void SetUp() override { - project.rootProjectDirectoryPath.pathAppended("project"); + project.rootProjectDirectoryPath = Utils::FilePath::fromString("project"); projectPart.project = &project; projectPart.files.push_back(header1ProjectFile); projectPart.files.push_back(header2ProjectFile); From 9a85cc2fac64570e14742020519246cc6cf7b759 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Sun, 26 May 2019 21:21:19 +0300 Subject: [PATCH 28/35] Sqlite: Delete empty sources Change-Id: Iae592bc22e4781148ec1be7a3ca5746719817f1e Reviewed-by: Marco Bubke --- src/libs/sqlite/CMakeLists.txt | 6 ++-- src/libs/sqlite/sqlite-lib.pri | 3 -- src/libs/sqlite/sqlite-source.pri | 3 -- src/libs/sqlite/sqlitecolumn.cpp | 31 ----------------- src/libs/sqlite/sqlitetable.cpp | 32 ----------------- .../sqlite/sqlstatementbuilderexception.cpp | 34 ------------------- 6 files changed, 3 insertions(+), 106 deletions(-) delete mode 100644 src/libs/sqlite/sqlitecolumn.cpp delete mode 100644 src/libs/sqlite/sqlitetable.cpp delete mode 100644 src/libs/sqlite/sqlstatementbuilderexception.cpp diff --git a/src/libs/sqlite/CMakeLists.txt b/src/libs/sqlite/CMakeLists.txt index a1359feb92d..22ba4bac340 100644 --- a/src/libs/sqlite/CMakeLists.txt +++ b/src/libs/sqlite/CMakeLists.txt @@ -9,7 +9,7 @@ add_qtc_library(Sqlite ../3rdparty/sqlite/sqlite3.c createtablesqlstatementbuilder.cpp createtablesqlstatementbuilder.h sqlitebasestatement.cpp sqlitebasestatement.h - sqlitecolumn.cpp sqlitecolumn.h + sqlitecolumn.h sqlitedatabase.cpp sqlitedatabase.h sqlitedatabasebackend.cpp sqlitedatabasebackend.h sqliteexception.cpp sqliteexception.h @@ -17,11 +17,11 @@ add_qtc_library(Sqlite sqliteindex.h sqlitereadstatement.cpp sqlitereadstatement.h sqlitereadwritestatement.cpp sqlitereadwritestatement.h - sqlitetable.cpp sqlitetable.h + sqlitetable.h sqlitetransaction.h sqlitewritestatement.cpp sqlitewritestatement.h sqlstatementbuilder.cpp sqlstatementbuilder.h - sqlstatementbuilderexception.cpp sqlstatementbuilderexception.h + sqlstatementbuilderexception.h utf8string.cpp utf8string.h utf8stringvector.cpp utf8stringvector.h ) diff --git a/src/libs/sqlite/sqlite-lib.pri b/src/libs/sqlite/sqlite-lib.pri index 22e92f9fcc9..4d7f906a199 100644 --- a/src/libs/sqlite/sqlite-lib.pri +++ b/src/libs/sqlite/sqlite-lib.pri @@ -19,12 +19,9 @@ SOURCES += \ $$PWD/sqlitereadwritestatement.cpp \ $$PWD/sqlitewritestatement.cpp \ $$PWD/sqlstatementbuilder.cpp \ - $$PWD/sqlstatementbuilderexception.cpp \ $$PWD/utf8string.cpp \ $$PWD/utf8stringvector.cpp \ $$PWD/sqlitedatabase.cpp \ - $$PWD/sqlitetable.cpp \ - $$PWD/sqlitecolumn.cpp \ $$PWD/sqlitebasestatement.cpp HEADERS += \ $$PWD/createtablesqlstatementbuilder.h \ diff --git a/src/libs/sqlite/sqlite-source.pri b/src/libs/sqlite/sqlite-source.pri index b297e31da2a..57292939018 100644 --- a/src/libs/sqlite/sqlite-source.pri +++ b/src/libs/sqlite/sqlite-source.pri @@ -17,12 +17,9 @@ SOURCES += \ sqliteworkerthread.cpp \ sqlitewritestatement.cpp \ sqlstatementbuilder.cpp \ - sqlstatementbuilderexception.cpp \ utf8string.cpp \ utf8stringvector.cpp \ sqlitedatabase.cpp \ - sqlitetable.cpp \ - sqlitecolumn.cpp \ tablewriteworker.cpp \ tablewriteworkerproxy.cpp HEADERS += \ diff --git a/src/libs/sqlite/sqlitecolumn.cpp b/src/libs/sqlite/sqlitecolumn.cpp deleted file mode 100644 index 201f1fbcb9d..00000000000 --- a/src/libs/sqlite/sqlitecolumn.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "sqlitecolumn.h" - -namespace Sqlite { - - -} // namespace Sqlite diff --git a/src/libs/sqlite/sqlitetable.cpp b/src/libs/sqlite/sqlitetable.cpp deleted file mode 100644 index 99b0e95938c..00000000000 --- a/src/libs/sqlite/sqlitetable.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "sqlitetable.h" - -namespace Sqlite { - - - -} // namespace Sqlite diff --git a/src/libs/sqlite/sqlstatementbuilderexception.cpp b/src/libs/sqlite/sqlstatementbuilderexception.cpp deleted file mode 100644 index 82f5b4f7929..00000000000 --- a/src/libs/sqlite/sqlstatementbuilderexception.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "sqlstatementbuilderexception.h" - -namespace Sqlite { - - - - - -} // namespace Sqlite From caf426fddbd0b82984e3f7cb38bd6ceb7513f7da Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Sun, 26 May 2019 21:15:42 +0300 Subject: [PATCH 29/35] Clang: Delete ipcserverinterface.cpp It's empty. Change-Id: I5c6d6ec45fee028be4d6e2fa5424e954fdacdb9d Reviewed-by: Marco Bubke --- src/libs/clangsupport/CMakeLists.txt | 2 +- src/libs/clangsupport/ipcserverinterface.cpp | 31 -------------------- 2 files changed, 1 insertion(+), 32 deletions(-) delete mode 100644 src/libs/clangsupport/ipcserverinterface.cpp diff --git a/src/libs/clangsupport/CMakeLists.txt b/src/libs/clangsupport/CMakeLists.txt index f4731397c79..abe211fb933 100644 --- a/src/libs/clangsupport/CMakeLists.txt +++ b/src/libs/clangsupport/CMakeLists.txt @@ -70,7 +70,7 @@ add_qtc_library(ClangSupport ipcclientinterface.h ipcclientprovider.h ipcinterface.h - ipcserverinterface.cpp ipcserverinterface.h + ipcserverinterface.h lineprefixer.cpp lineprefixer.h messageenvelop.cpp messageenvelop.h modifiedtimechecker.h diff --git a/src/libs/clangsupport/ipcserverinterface.cpp b/src/libs/clangsupport/ipcserverinterface.cpp deleted file mode 100644 index fbc92de52ec..00000000000 --- a/src/libs/clangsupport/ipcserverinterface.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "ipcserverinterface.h" - -namespace ClangBackEnd { - - -} // namespace ClangBackEnd From 61fcdd0459b932d2b5a0404df0afa16646d4fdb0 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Mon, 17 Jun 2019 16:45:57 +0200 Subject: [PATCH 30/35] Clang build: Fix compilation with MSVC2017 Change-Id: I677614dc8f9de503131d8ac490a723c9fc5f7beb Reviewed-by: Eike Ziller --- src/tools/clangbackend/source/CMakeLists.txt | 2 +- src/tools/clangpchmanagerbackend/source/CMakeLists.txt | 2 +- src/tools/clangrefactoringbackend/source/CMakeLists.txt | 2 +- tests/auto/cplusplus/checksymbols/CMakeLists.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/tools/clangbackend/source/CMakeLists.txt b/src/tools/clangbackend/source/CMakeLists.txt index f8cf5d5de92..fe0ab54deb6 100644 --- a/src/tools/clangbackend/source/CMakeLists.txt +++ b/src/tools/clangbackend/source/CMakeLists.txt @@ -1,6 +1,6 @@ add_qtc_library(clangbackend_lib STATIC DEPENDS libclang Sqlite ClangSupport - DEFINES CLANGSUPPORT_BUILD_LIB + PUBLIC_DEFINES CLANGSUPPORT_BUILD_LIB PUBLIC_INCLUDES ${CLANG_INCLUDE_DIRS} SOURCES diff --git a/src/tools/clangpchmanagerbackend/source/CMakeLists.txt b/src/tools/clangpchmanagerbackend/source/CMakeLists.txt index aa3003c5ca7..76973c6a21d 100644 --- a/src/tools/clangpchmanagerbackend/source/CMakeLists.txt +++ b/src/tools/clangpchmanagerbackend/source/CMakeLists.txt @@ -1,7 +1,7 @@ add_qtc_library(clangpchmanagerbackend_lib STATIC DEPENDS clangrefactoringbackend_lib ClangSupport PUBLIC_DEPENDS libclang - DEFINES CLANGSUPPORT_BUILD_LIB + PUBLIC_DEFINES CLANGSUPPORT_BUILD_LIB PUBLIC_INCLUDES ${CLANG_INCLUDE_DIRS} SOURCES diff --git a/src/tools/clangrefactoringbackend/source/CMakeLists.txt b/src/tools/clangrefactoringbackend/source/CMakeLists.txt index 213ce6ffd76..5c114345a0f 100644 --- a/src/tools/clangrefactoringbackend/source/CMakeLists.txt +++ b/src/tools/clangrefactoringbackend/source/CMakeLists.txt @@ -6,7 +6,7 @@ add_qtc_library(clangrefactoringbackend_lib STATIC clangHandleCXX clangIndex clangLex clangSerialization clangTooling clangQuery ClangSupport - DEFINES CLANGSUPPORT_BUILD_LIB + PUBLIC_DEFINES CLANGSUPPORT_BUILD_LIB PUBLIC_INCLUDES ${CLANG_INCLUDE_DIRS} "../../clangpchmanagerbackend/source" diff --git a/tests/auto/cplusplus/checksymbols/CMakeLists.txt b/tests/auto/cplusplus/checksymbols/CMakeLists.txt index b46c1e8a63d..f889839ed23 100644 --- a/tests/auto/cplusplus/checksymbols/CMakeLists.txt +++ b/tests/auto/cplusplus/checksymbols/CMakeLists.txt @@ -1,4 +1,4 @@ add_qtc_test(tst_cplusplus_checksymbols - DEPENDS CppTools + DEPENDS CppTools TextEditor SOURCES tst_checksymbols.cpp ) From 7c8ba7bb51f9ea90a0b24000a2fc4e7601863c63 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 17 Jun 2019 14:59:06 +0200 Subject: [PATCH 31/35] Doc: Remove the info about language client plugin being experimental It is now a standard part of Qt Creator and enabled by default. Change-Id: Ifcd4a2138c4a96e73efe97e5075414875773add4 Reviewed-by: David Schulz --- doc/src/editors/creator-coding.qdoc | 10 +++++----- .../creator-only/creator-language-server.qdoc | 12 +++--------- doc/src/overview/creator-only/creator-overview.qdoc | 9 ++++----- .../creator-only/creator-projects-opening.qdoc | 4 ++-- 4 files changed, 14 insertions(+), 21 deletions(-) diff --git a/doc/src/editors/creator-coding.qdoc b/doc/src/editors/creator-coding.qdoc index b897961996b..11990f46185 100644 --- a/doc/src/editors/creator-coding.qdoc +++ b/doc/src/editors/creator-coding.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2018 The Qt Company Ltd. +** Copyright (C) 2019 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -93,10 +93,10 @@ \li \l{Using Language Servers} - The experimental language client provides code completion, - highlighting of the symbol under cursor, and jumping to the symbol - definition for other programming languages besides C++. In addition, - it integrates diagnostics from the language server. + The language client provides code completion, highlighting of the + symbol under cursor, and jumping to the symbol definition for other + programming languages besides C++. In addition, it integrates + diagnostics from the language server. \li \l{Editing MIME Types} diff --git a/doc/src/editors/creator-only/creator-language-server.qdoc b/doc/src/editors/creator-only/creator-language-server.qdoc index 705388802c4..9dc5d1e84ff 100644 --- a/doc/src/editors/creator-only/creator-language-server.qdoc +++ b/doc/src/editors/creator-only/creator-language-server.qdoc @@ -51,8 +51,8 @@ By providing a client for the language server protocol, \QC can support the above features for several other programming languages besides C++. - However, the experimental client does not support language servers that - require special handling. + However, the client does not support language servers that require special + handling. \section1 Adding MIME Types for Language Servers @@ -70,12 +70,6 @@ To use a language server: \list 1 - \li Enable the language client by selecting \uicontrol Help > - \uicontrol {About Plugins} > \uicontrol {Other Languages} > - \uicontrol {Language Client} (or \uicontrol {Qt Creator} > - \uicontrol {About Plugins} > \uicontrol {Other Languages} > - \uicontrol {Language Client} on \macos). - \li Restart \QC to load the language client plugin. \li Select \uicontrol Tools > \uicontrol Options > \uicontrol {Language Client} (or \uicontrol {Qt Creator} > \uicontrol Preferences > \uicontrol {Language Client} > on @@ -124,7 +118,7 @@ \section1 Reporting Issues - The experimental language service client has been mostly tested with Python. + The language service client has been mostly tested with Python. If problems arise when you try it or some other language, please select \uicontrol Help > \uicontrol {Report Bug} to report them in the Qt Bug Tracker. The reports should include \QC console output with the environment diff --git a/doc/src/overview/creator-only/creator-overview.qdoc b/doc/src/overview/creator-only/creator-overview.qdoc index 1f6f31936d1..790ed4bf0d0 100644 --- a/doc/src/overview/creator-only/creator-overview.qdoc +++ b/doc/src/overview/creator-only/creator-overview.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2018 The Qt Company Ltd. +** Copyright (C) 2019 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -79,10 +79,9 @@ languages as code, not just as plain text. This enables it to provide you with useful features, such as semantic highlighting, checking code syntax, code completion, and refactoring actions. - In addition, the experimental language server plugin provides - some of these services for other programming languages, such as - Python, for which a \e {language server} is available that - provides information about the code to IDEs. + \QC supports some of these services also for other programming + languages, such as Python, for which a \e {language server} is + available that provides information about the code to IDEs. For more information, see \l{Coding}. \row \li \inlineimage creator_buildingrunning.png diff --git a/doc/src/projects/creator-only/creator-projects-opening.qdoc b/doc/src/projects/creator-only/creator-projects-opening.qdoc index 6298c896b52..38489791501 100644 --- a/doc/src/projects/creator-only/creator-projects-opening.qdoc +++ b/doc/src/projects/creator-only/creator-projects-opening.qdoc @@ -59,8 +59,8 @@ \uicontrol Options > \uicontrol Kits. Qt for Python projects rely on the \l{Using Language Servers} - {experimental language server client} for code completion, - highlighting, and other useful features. + {language server client} for code completion, highlighting, and + other useful features. If \QC cannot find an existing build for a particular \l{glossary-buildandrun-kit}{kit}, it starts out From 7d46060af011737caa2f673d601898abcd3a4e48 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 17 Jun 2019 12:04:47 +0200 Subject: [PATCH 32/35] Fix disabled close button in designer editor tool bar It was never actually updating when switching the editor. An update was just accidentally triggered when the designer plugin updated the editor XML when switching modes, which triggered an intermediate document change signal. Get rid of the separate code paths for setting the current editor for "standalone" editor tool bars and the tool bars in editor views, which implicitly corrects the update behavior in the former case. Fixes: QTCREATORBUG-22553 Change-Id: Ieb9f4b53600e1e1b66695ec86164628025df73f8 Reviewed-by: David Schulz --- src/plugins/coreplugin/editortoolbar.cpp | 15 ++++----------- src/plugins/coreplugin/editortoolbar.h | 1 - 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/src/plugins/coreplugin/editortoolbar.cpp b/src/plugins/coreplugin/editortoolbar.cpp index 28ed8a9acc3..c23aaa49d29 100644 --- a/src/plugins/coreplugin/editortoolbar.cpp +++ b/src/plugins/coreplugin/editortoolbar.cpp @@ -298,8 +298,10 @@ void EditorToolBar::setToolbarCreationFlags(ToolbarCreationFlags flags) { d->m_isStandalone = flags & FlagsStandalone; if (d->m_isStandalone) { - connect(EditorManager::instance(), &EditorManager::currentEditorChanged, - this, &EditorToolBar::updateEditorListSelection); + connect(EditorManager::instance(), + &EditorManager::currentEditorChanged, + this, + &EditorToolBar::setCurrentEditor); disconnect(d->m_editorList, static_cast(&QComboBox::activated), this, &EditorToolBar::listSelectionActivated); @@ -330,15 +332,6 @@ void EditorToolBar::setCurrentEditor(IEditor *editor) updateDocumentStatus(document); } -void EditorToolBar::updateEditorListSelection(IEditor *newSelection) -{ - if (newSelection) { - const Utils::optional index = DocumentModel::rowOfDocument(newSelection->document()); - if (QTC_GUARD(index)) - d->m_editorList->setCurrentIndex(index.value()); - } -} - void EditorToolBar::changeActiveEditor(int row) { EditorManager::activateEditorForEntry(DocumentModel::entryAtRow(row)); diff --git a/src/plugins/coreplugin/editortoolbar.h b/src/plugins/coreplugin/editortoolbar.h index b8d7fad468e..0d82e58303a 100644 --- a/src/plugins/coreplugin/editortoolbar.h +++ b/src/plugins/coreplugin/editortoolbar.h @@ -105,7 +105,6 @@ private: void updateActionShortcuts(); void updateDocumentStatus(IDocument *document); - void updateEditorListSelection(IEditor *newSelection); void fillListContextMenu(QMenu *menu); void updateToolBar(QWidget *toolBar); From 5bcc70b34deb1dd590cca0c115511f3c6fa9f763 Mon Sep 17 00:00:00 2001 From: Michl Voznesensky Date: Sun, 28 Oct 2018 22:49:06 +0300 Subject: [PATCH 33/35] Fix bug for with redirect to general landing page Qt bug tracker. Now the redirection goes to the page creating the bug Fixes: QTCREATORBUG-18734 Change-Id: I49847edce7da6a993ded3a9538334279965b6eb4 Reviewed-by: Eike Ziller --- src/plugins/help/helpplugin.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index 118efadd811..ee6261ee3b8 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -293,7 +293,7 @@ HelpPluginPrivate::HelpPluginPrivate() cmd = ActionManager::registerAction(action, "Help.ReportBug"); ActionManager::actionContainer(Core::Constants::M_HELP)->addAction(cmd, Core::Constants::G_HELP_SUPPORT); connect(action, &QAction::triggered, this, [] { - QDesktopServices::openUrl(QUrl("https://bugreports.qt.io")); + QDesktopServices::openUrl(QUrl("https://bugreports.qt.io/secure/CreateIssue.jspa?pid=10512")); }); action = new QAction(HelpPlugin::tr("System Information..."), this); From 174b6f7e659f6667ea8621f2d57d3bf67fedcdbf Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 18 Jun 2019 11:02:00 +0200 Subject: [PATCH 34/35] CMake build: Adapt to changes Change-Id: Ia9cccd8068248ceacb2e4b1d4e182dc009d65497 Reviewed-by: Tobias Hunger --- src/libs/clangsupport/CMakeLists.txt | 1 - src/tools/clangrefactoringbackend/source/CMakeLists.txt | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/clangsupport/CMakeLists.txt b/src/libs/clangsupport/CMakeLists.txt index abe211fb933..84cdbaf8b9b 100644 --- a/src/libs/clangsupport/CMakeLists.txt +++ b/src/libs/clangsupport/CMakeLists.txt @@ -93,7 +93,6 @@ add_qtc_library(ClangSupport projectpartcontainer.cpp projectpartcontainer.h projectpartid.h projectpartpch.cpp projectpartpch.h - projectpartpchproviderinterface.h projectpartsstorage.h projectpartsstorageinterface.h readmessageblock.cpp readmessageblock.h diff --git a/src/tools/clangrefactoringbackend/source/CMakeLists.txt b/src/tools/clangrefactoringbackend/source/CMakeLists.txt index 5c114345a0f..d43472fd60b 100644 --- a/src/tools/clangrefactoringbackend/source/CMakeLists.txt +++ b/src/tools/clangrefactoringbackend/source/CMakeLists.txt @@ -20,6 +20,7 @@ add_qtc_library(clangrefactoringbackend_lib STATIC collectsymbolsaction.cpp collectsymbolsaction.h filestatus.h filestatuscache.cpp filestatuscache.h + filestatuspreprocessorcallbacks.cpp filestatuspreprocessorcallbacks.h findcursorusr.h findlocationsofusrs.h findusrforcursoraction.cpp findusrforcursoraction.h From a2cfa434683552f63699a70e9de2295a12f41eaa Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 17 Jun 2019 17:51:55 +0200 Subject: [PATCH 35/35] Fix expansion of %DATE% in license template If the format contains '/', that must be escaped to avoid the expander to interpret that as regexp style replacement. Task-number: QTCREATORBUG-22440 Change-Id: Iaa6c0ae0aa74a055a30b3c0413e325c497f9310f Reviewed-by: Tobias Hunger --- src/plugins/cpptools/cppfilesettingspage.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/plugins/cpptools/cppfilesettingspage.cpp b/src/plugins/cpptools/cppfilesettingspage.cpp index 187f5d5913e..5ee5ef22cfa 100644 --- a/src/plugins/cpptools/cppfilesettingspage.cpp +++ b/src/plugins/cpptools/cppfilesettingspage.cpp @@ -169,6 +169,7 @@ static bool keyWordReplacement(const QString &keyWord, const QChar ypsilon = QLatin1Char('y'); if (format.count(ypsilon) == 2) format.insert(format.indexOf(ypsilon), QString(2, ypsilon)); + format.replace('/', "\\/"); } *value = QString::fromLatin1("%{CurrentDate:") + format + QLatin1Char('}'); return true; @@ -193,7 +194,6 @@ static void parseLicenseTemplatePlaceholders(QString *t) { int pos = 0; const QChar placeHolder = QLatin1Char('%'); - bool isCompatibilityStyle = false; do { const int placeHolderPos = t->indexOf(placeHolder, pos); if (placeHolderPos == -1) @@ -208,7 +208,6 @@ static void parseLicenseTemplatePlaceholders(QString *t) const QString keyWord = t->mid(placeHolderPos, endPlaceHolderPos + 1 - placeHolderPos); QString replacement; if (keyWordReplacement(keyWord, &replacement)) { - isCompatibilityStyle = true; t->replace(placeHolderPos, keyWord.size(), replacement); pos = placeHolderPos + replacement.size(); } else { @@ -218,8 +217,6 @@ static void parseLicenseTemplatePlaceholders(QString *t) } } while (pos < t->size()); - if (isCompatibilityStyle) - t->replace(QLatin1Char('\\'), QLatin1String("\\\\")); } // Convenience that returns the formatted license template.