diff --git a/doc/images/qtcreator-build-issues.png b/doc/images/qtcreator-build-issues.png index 9404a88523a..230572237e9 100644 Binary files a/doc/images/qtcreator-build-issues.png and b/doc/images/qtcreator-build-issues.png differ diff --git a/doc/images/qtcreator-cmakeexecutable.png b/doc/images/qtcreator-cmakeexecutable.png index d7d1b7fd85b..8b328b0fb97 100644 Binary files a/doc/images/qtcreator-cmakeexecutable.png and b/doc/images/qtcreator-cmakeexecutable.png differ diff --git a/doc/images/qtcreator-desktopdevice-button.png b/doc/images/qtcreator-desktopdevice-button.png new file mode 100644 index 00000000000..a7ad611f7c3 Binary files /dev/null and b/doc/images/qtcreator-desktopdevice-button.png differ diff --git a/doc/images/qtcreator-kit-selector.png b/doc/images/qtcreator-kit-selector.png index 072fcc98ea1..ecab33391f7 100644 Binary files a/doc/images/qtcreator-kit-selector.png and b/doc/images/qtcreator-kit-selector.png differ diff --git a/doc/images/qtcreator-kits.png b/doc/images/qtcreator-kits.png index 2d9a3123642..82dd2df34c1 100644 Binary files a/doc/images/qtcreator-kits.png and b/doc/images/qtcreator-kits.png differ diff --git a/doc/images/qtcreator-options-build-run-debuggers.png b/doc/images/qtcreator-options-build-run-debuggers.png index 6520f53768c..b249ddbbeeb 100644 Binary files a/doc/images/qtcreator-options-build-run-debuggers.png and b/doc/images/qtcreator-options-build-run-debuggers.png differ diff --git a/doc/images/qtcreator-options-qbs.png b/doc/images/qtcreator-options-qbs.png index 40149a37e0e..6641902f1c0 100644 Binary files a/doc/images/qtcreator-options-qbs.png and b/doc/images/qtcreator-options-qbs.png differ diff --git a/doc/images/qtcreator-qt4-qtversions-add.png b/doc/images/qtcreator-qt4-qtversions-add.png index 3b35920b2e8..6b292a697d1 100644 Binary files a/doc/images/qtcreator-qt4-qtversions-add.png and b/doc/images/qtcreator-qt4-qtversions-add.png differ diff --git a/doc/images/qtcreator-toolchains.png b/doc/images/qtcreator-toolchains.png index 0b573f034a7..91a6dbc7d72 100644 Binary files a/doc/images/qtcreator-toolchains.png and b/doc/images/qtcreator-toolchains.png differ diff --git a/doc/src/cmake/creator-projects-cmake.qdoc b/doc/src/cmake/creator-projects-cmake.qdoc index 85b28cb0950..2a590df8c32 100644 --- a/doc/src/cmake/creator-projects-cmake.qdoc +++ b/doc/src/cmake/creator-projects-cmake.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2018 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -72,6 +72,9 @@ \li In the \uicontrol Path field, specify the path to the CMake executable. + \li Select the \uicontrol {Auto-create build directories} check box to + automatically create build directories for CMake projects. + \li Select \uicontrol Apply to save your changes. \endlist @@ -83,7 +86,7 @@ is. Select the \uicontrol Kits tab to add the CMake tool to a build and run kit. - The kit also specifies the CMake Generator that is used for producing + The kit also specifies the CMake generator that is used for producing project files for \QC and the configuration variables that are used: \image qtcreator-kits.png diff --git a/doc/src/editors/creator-clang-codemodel.qdoc b/doc/src/editors/creator-clang-codemodel.qdoc index 001a7c8f565..92e786e518c 100644 --- a/doc/src/editors/creator-clang-codemodel.qdoc +++ b/doc/src/editors/creator-clang-codemodel.qdoc @@ -95,6 +95,7 @@ \li Diagnostics \li Clang-Tidy checks \li Clazy checks + \li Outline of symbols \li Tooltips \li Renaming of local symbols diff --git a/doc/src/editors/creator-editors.qdoc b/doc/src/editors/creator-editors.qdoc index 1b841015b0b..21e5506f937 100644 --- a/doc/src/editors/creator-editors.qdoc +++ b/doc/src/editors/creator-editors.qdoc @@ -1268,6 +1268,7 @@ \li \c :substitute substitutes an expression in a range \li \c :'<,'>!cmd filters through an external command (for example, sorts the lines in a file with \c :%!sort) + \li \c :sor[t][!] \li \c :.!cmd inserts the standard output of an external command \li \c :read \li \c :yank, \c :delete, \c :change diff --git a/doc/src/howto/creator-ui.qdoc b/doc/src/howto/creator-ui.qdoc index 15152256094..f436ae54eb7 100644 --- a/doc/src/howto/creator-ui.qdoc +++ b/doc/src/howto/creator-ui.qdoc @@ -403,6 +403,10 @@ \li \uicontrol {Build System} - Errors and warnings encountered during a build. + \li \uicontrol {Clang Code Model} - + \l {Parsing C++ Files with the Clang Code Model} + {Errors and warnings from the current editor}. + \li \uicontrol Compile - Selected output from the compiler. Open the \uicontrol {Compile Output} pane for more detailed information. @@ -422,6 +426,8 @@ by \l{Showing Task List Files in Issues Pane} {code scanning and analysis tools}. + \li \uicontrol Python - Runtime errors and exceptions of Python scripts. + \li \uicontrol QML - Errors in QML syntax. \li \uicontrol {QML Analysis} - Results of the JavaScript diff --git a/doc/src/howto/qtcreator-faq.qdoc b/doc/src/howto/qtcreator-faq.qdoc index 6d04e7a8c3c..3bd14807ad4 100644 --- a/doc/src/howto/qtcreator-faq.qdoc +++ b/doc/src/howto/qtcreator-faq.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2018 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -39,72 +39,6 @@ \section1 General Questions - \b {\QC only shows a blank window, a dialog complaining about missing OpenGL support, or crashes on startup. What's going wrong?} - - Some parts of \QC use Qt Quick 2, which relies on OpenGL API for - drawing. The most prominent use of Qt Quick 2 is in the Welcome mode, but it's - also used for the \QMLD, and the QML Profiler. - - Unfortunately the use of OpenGL can cause problems, especially in remote setups - and with outdated drivers. You can quickly check whether this is your problem by: - - \list - - \li Launching \QC with Welcome mode disabled ( \c{-noload Welcome} on - command line). - - \li Checking the console or the Windows debugger log for OpenGL-related error messages. - - \endlist - - The fixes and workarounds differ, depending on your setup. As a last resort you - can disable the affected plugins. - - \e{Virtual Machines} - - Try to enable \e{3D acceleration} in your virtual machine's settings. For VirtualBox, - also make sure you have installed the Guest Addons, including experimental - \e{Direct3D support}. - - \e{Windows} - - Check whether \QC has been compiled with OpenGL/Desktop, or ANGLE as - a backend. The official binaries are always built with ANGLE (a library that - maps OpenGL ES API to DirectX). - - \list - - \li ANGLE backend: This requires a Windows version newer than Windows XP. If you - have problems, try updating your graphics drivers or update your - DirectX version. Run \c dxdiag.exe to check whether \e{Direct3D Acceleration} - is indeed enabled. - - \li OpenGL backend: Make sure your graphics driver supports OpenGL 2.1 or newer. - Try to update your graphics driver. - - \endlist - - \e{Unix} - - Run \c glxgears for a quick check whether OpenGL works in general. Check output of - \c glxinfo to get more details like the OpenGL driver and renderer (search for 'OpenGL' - in the application's output). - - If you are using the Mesa driver, you can force OpenGL to be rendered in software - by setting the \c LIBGL_ALWAYS_SOFTWARE environment variable. - - \e{Disabling plugins} - - You can disable the \QC plugins, at the expense of losing functionality: - - \list - - \li Launch \QC from command line, with - \c {-noload Welcome -noload QmlProfiler -noload QuickDesigner} arguments. - - \li Disable the plugins permanently by selecting \uicontrol Help > \uicontrol{About Plugins}. - - \endlist \b {How do I reset all \QC settings?} @@ -143,6 +77,89 @@ \include widgets/creator-faq-qtdesigner.qdocinc qt designer faq + \section1 QML and Qt Quick Questions + + \b {Why is there a red line below my QML import, even though I have the module?} + + By default, \QC looks in the QML import path of Qt for QML modules. + Sometimes, it does not get it right and you need to tell it where the + modules are by specifying the \c{QML_IMPORT_PATH} in the \c{.pro} file of + your application. + + This also enables code completion of QML code and removes error messages. + + The following example illustrates how to specify the import path so that + it works when switching between build and run kits for different target + platforms: + + \code + TEMPNAME = $${QMAKE_QMAKE} + MY_QTPATH = $$dirname(TEMPNAME) + QML_IMPORT_PATH += $$MY_QTPATH/../qml + message("my QML Import Path: "$$QML_IMPORT_PATH) + \endcode + + For more information about how to set the import path when using CMake, see + \l {Importing QML Modules}. + + \b {What should I do when \QC complains about missing OpenGL support?} + + Some parts of \QC, such as \QMLD and QML Profiler, use Qt Quick 2, which + relies on OpenGL API for drawing. Unfortunately, the use of OpenGL can cause + problems, especially in remote setups and with outdated drivers. In these + cases, \QC displays OpenGL-related error messages on the console or records + them in the Windows debugger log. + + The fixes and workarounds differ, depending on your setup. As a last resort, + you can disable the affected plugins. + + \e{Virtual Machines} + + Try to enable \e{3D acceleration} in your virtual machine's settings. For + VirtualBox, also make sure you have installed the Guest Addons, including + experimental \e{Direct3D support}. + + \e{Windows} + + Check whether \QC has been compiled with OpenGL/Desktop, or ANGLE as + a backend. The official binaries are always built with ANGLE (a library that + maps OpenGL ES API to DirectX). + + \list + + \li ANGLE backend: This requires a Windows version newer than Windows XP. + If you have problems, try updating your graphics drivers or update + your DirectX version. Run \c dxdiag.exe to check whether + \e{Direct3D Acceleration} is indeed enabled. + + \li OpenGL backend: Make sure your graphics driver supports OpenGL 2.1 or + newer. Try to update your graphics driver. + + \endlist + + \e{Unix} + + Run \c glxgears for a quick check whether OpenGL works in general. Check the + output of \c glxinfo to get more details like the OpenGL driver and renderer + (search for \e OpenGL in the application's output). + + If you are using the Mesa driver, you can force OpenGL to be rendered in + software by setting the \c LIBGL_ALWAYS_SOFTWARE environment variable. + + \e{Disabling plugins} + + You can disable the \QC plugins, at the expense of losing functionality: + + \list + + \li Launch \QC from command line, with the + \c {-noload QmlProfiler -noload QuickDesigner} arguments. + + \li Disable the plugins permanently by selecting \uicontrol Help > + \uicontrol{About Plugins}. + + \endlist + \section1 Help Questions \b {The Qt API Reference Documentation is missing and context help does diff --git a/doc/src/projects/creator-projects-building.qdoc b/doc/src/projects/creator-projects-building.qdoc index c737f8b8e88..c8ab421a01a 100644 --- a/doc/src/projects/creator-projects-building.qdoc +++ b/doc/src/projects/creator-projects-building.qdoc @@ -67,6 +67,10 @@ \endlist + While the application is being built, the \uicontrol Build button changes to + a \uicontrol {Cancel Build} button (3). To cancel the build, select the + button or press \key {Alt+Backspace}. + For more information on the options you have, see \l{Specifying Build Settings}. diff --git a/doc/src/projects/creator-projects-targets.qdoc b/doc/src/projects/creator-projects-targets.qdoc index 963b8ca562f..20af2a2f278 100644 --- a/doc/src/projects/creator-projects-targets.qdoc +++ b/doc/src/projects/creator-projects-targets.qdoc @@ -74,7 +74,15 @@ To clone the selected kit, select \uicontrol Clone. - \li In the \uicontrol Name column, double-click the kit name to change it. + \li In the \uicontrol Name column, enter a name for the kit. + + \li Select the \inlineimage qtcreator-desktopdevice-button.png + button to select an image to use as an icon for the kit. + + \li In the \uicontrol {File system name} field, enter a name for the kit + to use as a part of directory names. This value is used for the + \e CurrentKit:FileSystemName variable, which determines the name of + the shadow build directory, for example. \li In the \uicontrol{Device type} field, select the type of the device. @@ -101,6 +109,11 @@ the \uicontrol {Edit Environment Changes} dialog. For more information about how to add and remove variable values, see \l{Batch Editing}. + \li Select the \uicontrol {Force UTF-8 MSVC compiler output} check box + to either switch the language of MSVC to English or to keep the + language setting and just force UTF-8 output, depending on the + MSVC compiler used. + \li In the \uicontrol Debugger field, select the debugger to debug the project on the target platform. \QC automatically detects available debuggers and displays a suitable debugger in the field. You can diff --git a/src/libs/clangsupport/cmbalivemessage.cpp b/src/libs/clangsupport/alivemessage.cpp similarity index 96% rename from src/libs/clangsupport/cmbalivemessage.cpp rename to src/libs/clangsupport/alivemessage.cpp index 72a4d37bea6..99392fc0fde 100644 --- a/src/libs/clangsupport/cmbalivemessage.cpp +++ b/src/libs/clangsupport/alivemessage.cpp @@ -23,7 +23,7 @@ ** ****************************************************************************/ -#include "cmbalivemessage.h" +#include "alivemessage.h" #include @@ -34,4 +34,4 @@ QDebug operator<<(QDebug debug, const AliveMessage &/*message*/) return debug.nospace() << "AliveMessage()"; } -} +} // namespace ClangBackEnd diff --git a/src/libs/clangsupport/cmbalivemessage.h b/src/libs/clangsupport/alivemessage.h similarity index 100% rename from src/libs/clangsupport/cmbalivemessage.h rename to src/libs/clangsupport/alivemessage.h diff --git a/src/libs/clangsupport/documentannotationschangedmessage.cpp b/src/libs/clangsupport/annotationsmessage.cpp similarity index 89% rename from src/libs/clangsupport/documentannotationschangedmessage.cpp rename to src/libs/clangsupport/annotationsmessage.cpp index 90344e24435..65349f6801e 100644 --- a/src/libs/clangsupport/documentannotationschangedmessage.cpp +++ b/src/libs/clangsupport/annotationsmessage.cpp @@ -23,15 +23,15 @@ ** ****************************************************************************/ -#include "documentannotationschangedmessage.h" +#include "annotationsmessage.h" #include namespace ClangBackEnd { -QDebug operator<<(QDebug debug, const DocumentAnnotationsChangedMessage &message) +QDebug operator<<(QDebug debug, const AnnotationsMessage &message) { - debug.nospace() << "DocumentAnnotationsChangedMessage(" + debug.nospace() << "AnnotationsMessage(" << message.fileContainer << ", " << message.diagnostics.size() << ", " << !message.firstHeaderErrorDiagnostic.text.isEmpty() diff --git a/src/libs/clangsupport/documentannotationschangedmessage.h b/src/libs/clangsupport/annotationsmessage.h similarity index 68% rename from src/libs/clangsupport/documentannotationschangedmessage.h rename to src/libs/clangsupport/annotationsmessage.h index b5006cb2267..c3a19a82b4f 100644 --- a/src/libs/clangsupport/documentannotationschangedmessage.h +++ b/src/libs/clangsupport/annotationsmessage.h @@ -35,32 +35,32 @@ namespace ClangBackEnd { -class CLANGSUPPORT_EXPORT DocumentAnnotationsChangedMessage +class CLANGSUPPORT_EXPORT AnnotationsMessage { public: - DocumentAnnotationsChangedMessage() = default; + AnnotationsMessage() = default; // For pure token infos update - DocumentAnnotationsChangedMessage(const FileContainer &fileContainer, + AnnotationsMessage(const FileContainer &fileContainer, const QVector &tokenInfos) : fileContainer(fileContainer), tokenInfos(tokenInfos), onlyTokenInfos(true) { } - DocumentAnnotationsChangedMessage(const FileContainer &fileContainer, - const QVector &diagnostics, - const DiagnosticContainer &firstHeaderErrorDiagnostic, - const QVector &tokenInfos, - const QVector &skippedPreprocessorRanges) - : fileContainer(fileContainer), - tokenInfos(tokenInfos), - diagnostics(diagnostics), - firstHeaderErrorDiagnostic(firstHeaderErrorDiagnostic), - skippedPreprocessorRanges(skippedPreprocessorRanges) + AnnotationsMessage(const FileContainer &fileContainer, + const QVector &diagnostics, + const DiagnosticContainer &firstHeaderErrorDiagnostic, + const QVector &tokenInfos, + const QVector &skippedPreprocessorRanges) + : fileContainer(fileContainer) + , tokenInfos(tokenInfos) + , diagnostics(diagnostics) + , firstHeaderErrorDiagnostic(firstHeaderErrorDiagnostic) + , skippedPreprocessorRanges(skippedPreprocessorRanges) { } - friend QDataStream &operator<<(QDataStream &out, const DocumentAnnotationsChangedMessage &message) + friend QDataStream &operator<<(QDataStream &out, const AnnotationsMessage &message) { out << message.onlyTokenInfos; out << message.fileContainer; @@ -74,7 +74,7 @@ public: return out; } - friend QDataStream &operator>>(QDataStream &in, DocumentAnnotationsChangedMessage &message) + friend QDataStream &operator>>(QDataStream &in, AnnotationsMessage &message) { in >> message.onlyTokenInfos; in >> message.fileContainer; @@ -88,8 +88,7 @@ public: return in; } - friend bool operator==(const DocumentAnnotationsChangedMessage &first, - const DocumentAnnotationsChangedMessage &second) + friend bool operator==(const AnnotationsMessage &first, const AnnotationsMessage &second) { return first.fileContainer == second.fileContainer && first.diagnostics == second.diagnostics @@ -107,7 +106,7 @@ public: bool onlyTokenInfos = false; }; -CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const DocumentAnnotationsChangedMessage &message); +CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const AnnotationsMessage &message); -DECLARE_MESSAGE(DocumentAnnotationsChangedMessage) +DECLARE_MESSAGE(AnnotationsMessage) } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/clangcodemodelclientinterface.cpp b/src/libs/clangsupport/clangcodemodelclientinterface.cpp index 492ea7896fe..5093308fa20 100644 --- a/src/libs/clangsupport/clangcodemodelclientinterface.cpp +++ b/src/libs/clangsupport/clangcodemodelclientinterface.cpp @@ -41,11 +41,11 @@ void ClangCodeModelClientInterface::dispatch(const MessageEnvelop &messageEnvelo case MessageType::EchoMessage: echo(messageEnvelop.message()); break; - case MessageType::CodeCompletedMessage: - codeCompleted(messageEnvelop.message()); + case MessageType::CompletionsMessage: + completions(messageEnvelop.message()); break; - case MessageType::DocumentAnnotationsChangedMessage: - documentAnnotationsChanged(messageEnvelop.message()); + case MessageType::AnnotationsMessage: + annotations(messageEnvelop.message()); break; case MessageType::ReferencesMessage: references(messageEnvelop.message()); diff --git a/src/libs/clangsupport/clangcodemodelclientinterface.h b/src/libs/clangsupport/clangcodemodelclientinterface.h index 915bc8bf1fe..04b68ce0f50 100644 --- a/src/libs/clangsupport/clangcodemodelclientinterface.h +++ b/src/libs/clangsupport/clangcodemodelclientinterface.h @@ -31,25 +31,25 @@ namespace ClangBackEnd { class ClangCodeModelServerInterface; -class CodeCompletedMessage; -class CompleteCodeMessage; -class DocumentAnnotationsChangedMessage; +class AnnotationsMessage; +class CompletionsMessage; +class DocumentVisibilityChangedMessage; +class DocumentsChangedMessage; +class DocumentsClosedMessage; +class DocumentsOpenedMessage; class EchoMessage; -class ReferencesMessage; class FollowSymbolMessage; -class RegisterProjectPartsForEditorMessage; -class RegisterTranslationUnitForEditorMessage; -class RegisterUnsavedFilesForEditorMessage; -class RequestDocumentAnnotationsMessage; -class RequestReferencesMessage; +class ProjectPartsRemovedMessage; +class ProjectPartsUpdatedMessage; +class ReferencesMessage; +class RequestAnnotationsMessage; +class RequestCompletionsMessage; class RequestFollowSymbolMessage; +class RequestReferencesMessage; class RequestToolTipMessage; class ToolTipMessage; -class UnregisterProjectPartsForEditorMessage; -class UnregisterTranslationUnitsForEditorMessage; -class UnregisterUnsavedFilesForEditorMessage; -class UpdateTranslationUnitsForEditorMessage; -class UpdateVisibleTranslationUnitsMessage; +class UnsavedFilesRemovedMessage; +class UnsavedFilesUpdatedMessage; class CLANGSUPPORT_EXPORT ClangCodeModelClientInterface : public IpcClientInterface { @@ -58,8 +58,8 @@ public: virtual void alive() = 0; virtual void echo(const EchoMessage &message) = 0; - virtual void codeCompleted(const CodeCompletedMessage &message) = 0; - virtual void documentAnnotationsChanged(const DocumentAnnotationsChangedMessage &message) = 0; + virtual void completions(const CompletionsMessage &message) = 0; + virtual void annotations(const AnnotationsMessage &message) = 0; virtual void references(const ReferencesMessage &message) = 0; virtual void followSymbol(const FollowSymbolMessage &message) = 0; virtual void tooltip(const ToolTipMessage &message) = 0; diff --git a/src/libs/clangsupport/clangcodemodelclientmessages.h b/src/libs/clangsupport/clangcodemodelclientmessages.h index 2903cda2079..e73f4b99af1 100644 --- a/src/libs/clangsupport/clangcodemodelclientmessages.h +++ b/src/libs/clangsupport/clangcodemodelclientmessages.h @@ -25,10 +25,10 @@ #pragma once -#include "cmbalivemessage.h" -#include "cmbcodecompletedmessage.h" -#include "cmbechomessage.h" -#include "documentannotationschangedmessage.h" +#include "alivemessage.h" +#include "completionsmessage.h" +#include "echomessage.h" +#include "annotationsmessage.h" #include "referencesmessage.h" #include "followsymbolmessage.h" #include "tooltipmessage.h" diff --git a/src/libs/clangsupport/clangcodemodelclientproxy.cpp b/src/libs/clangsupport/clangcodemodelclientproxy.cpp index fc75a226ed5..538677e6c1c 100644 --- a/src/libs/clangsupport/clangcodemodelclientproxy.cpp +++ b/src/libs/clangsupport/clangcodemodelclientproxy.cpp @@ -75,12 +75,12 @@ void ClangCodeModelClientProxy::echo(const EchoMessage &message) m_writeMessageBlock.write(message); } -void ClangCodeModelClientProxy::codeCompleted(const CodeCompletedMessage &message) +void ClangCodeModelClientProxy::completions(const CompletionsMessage &message) { m_writeMessageBlock.write(message); } -void ClangCodeModelClientProxy::documentAnnotationsChanged(const DocumentAnnotationsChangedMessage &message) +void ClangCodeModelClientProxy::annotations(const AnnotationsMessage &message) { m_writeMessageBlock.write(message); } diff --git a/src/libs/clangsupport/clangcodemodelclientproxy.h b/src/libs/clangsupport/clangcodemodelclientproxy.h index 58b87a05d8b..480cbe646e1 100644 --- a/src/libs/clangsupport/clangcodemodelclientproxy.h +++ b/src/libs/clangsupport/clangcodemodelclientproxy.h @@ -53,8 +53,8 @@ public: void alive() override; void echo(const EchoMessage &message) override; - void codeCompleted(const CodeCompletedMessage &message) override; - void documentAnnotationsChanged(const DocumentAnnotationsChangedMessage &message) override; + void completions(const CompletionsMessage &message) override; + void annotations(const AnnotationsMessage &message) override; void references(const ReferencesMessage &message) override; void followSymbol(const FollowSymbolMessage &message) override; void tooltip(const ToolTipMessage &message) override; diff --git a/src/libs/clangsupport/clangcodemodelserverinterface.cpp b/src/libs/clangsupport/clangcodemodelserverinterface.cpp index d50e97367d5..364cec41325 100644 --- a/src/libs/clangsupport/clangcodemodelserverinterface.cpp +++ b/src/libs/clangsupport/clangcodemodelserverinterface.cpp @@ -38,32 +38,35 @@ void ClangCodeModelServerInterface::dispatch(const MessageEnvelop &messageEnvelo case MessageType::EndMessage: end(); break; - case MessageType::RegisterTranslationUnitForEditorMessage: - registerTranslationUnitsForEditor(messageEnvelop.message()); + case MessageType::DocumentsOpenedMessage: + documentsOpened(messageEnvelop.message()); break; - case MessageType::UpdateTranslationUnitsForEditorMessage: - updateTranslationUnitsForEditor(messageEnvelop.message()); + case MessageType::DocumentsChangedMessage: + documentsChanged(messageEnvelop.message()); break; - case MessageType::UnregisterTranslationUnitsForEditorMessage: - unregisterTranslationUnitsForEditor(messageEnvelop.message()); + case MessageType::DocumentsClosedMessage: + documentsClosed(messageEnvelop.message()); break; - case MessageType::RegisterProjectPartsForEditorMessage: - registerProjectPartsForEditor(messageEnvelop.message()); + case MessageType::DocumentVisibilityChangedMessage: + documentVisibilityChanged(messageEnvelop.message()); break; - case MessageType::UnregisterProjectPartsForEditorMessage: - unregisterProjectPartsForEditor(messageEnvelop.message()); + case MessageType::ProjectPartsUpdatedMessage: + projectPartsUpdated(messageEnvelop.message()); break; - case MessageType::RegisterUnsavedFilesForEditorMessage: - registerUnsavedFilesForEditor(messageEnvelop.message()); + case MessageType::ProjectPartsRemovedMessage: + projectPartsRemoved(messageEnvelop.message()); break; - case MessageType::UnregisterUnsavedFilesForEditorMessage: - unregisterUnsavedFilesForEditor(messageEnvelop.message()); + case MessageType::UnsavedFilesUpdatedMessage: + unsavedFilesUpdated(messageEnvelop.message()); break; - case MessageType::CompleteCodeMessage: - completeCode(messageEnvelop.message()); + case MessageType::UnsavedFilesRemovedMessage: + unsavedFilesRemoved(messageEnvelop.message()); break; - case MessageType::RequestDocumentAnnotationsMessage: - requestDocumentAnnotations(messageEnvelop.message()); + case MessageType::RequestCompletionsMessage: + requestCompletions(messageEnvelop.message()); + break; + case MessageType::RequestAnnotationsMessage: + requestAnnotations(messageEnvelop.message()); break; case MessageType::RequestReferencesMessage: requestReferences(messageEnvelop.message()); @@ -74,9 +77,6 @@ void ClangCodeModelServerInterface::dispatch(const MessageEnvelop &messageEnvelo case MessageType::RequestToolTipMessage: requestToolTip(messageEnvelop.message()); break; - case MessageType::UpdateVisibleTranslationUnitsMessage: - updateVisibleTranslationUnits(messageEnvelop.message()); - break; default: qWarning() << "Unknown ClangCodeModelServerMessage"; } diff --git a/src/libs/clangsupport/clangcodemodelserverinterface.h b/src/libs/clangsupport/clangcodemodelserverinterface.h index ffbeffaeb38..6cac4aea5fb 100644 --- a/src/libs/clangsupport/clangcodemodelserverinterface.h +++ b/src/libs/clangsupport/clangcodemodelserverinterface.h @@ -41,19 +41,23 @@ public: void dispatch(const MessageEnvelop &messageEnvelop) override; virtual void end() = 0; - virtual void registerTranslationUnitsForEditor(const RegisterTranslationUnitForEditorMessage &message) = 0; - virtual void updateTranslationUnitsForEditor(const UpdateTranslationUnitsForEditorMessage &message) = 0; - virtual void unregisterTranslationUnitsForEditor(const UnregisterTranslationUnitsForEditorMessage &message) = 0; - virtual void registerProjectPartsForEditor(const RegisterProjectPartsForEditorMessage &message) = 0; - virtual void unregisterProjectPartsForEditor(const UnregisterProjectPartsForEditorMessage &message) = 0; - virtual void registerUnsavedFilesForEditor(const RegisterUnsavedFilesForEditorMessage &message) = 0; - virtual void unregisterUnsavedFilesForEditor(const UnregisterUnsavedFilesForEditorMessage &message) = 0; - virtual void completeCode(const CompleteCodeMessage &message) = 0; - virtual void requestDocumentAnnotations(const RequestDocumentAnnotationsMessage &message) = 0; + + virtual void documentsOpened(const DocumentsOpenedMessage &message) = 0; + virtual void documentsChanged(const DocumentsChangedMessage &message) = 0; + virtual void documentsClosed(const DocumentsClosedMessage &message) = 0; + virtual void documentVisibilityChanged(const DocumentVisibilityChangedMessage &message) = 0; + + virtual void projectPartsUpdated(const ProjectPartsUpdatedMessage &message) = 0; + virtual void projectPartsRemoved(const ProjectPartsRemovedMessage &message) = 0; + + virtual void unsavedFilesUpdated(const UnsavedFilesUpdatedMessage &message) = 0; + virtual void unsavedFilesRemoved(const UnsavedFilesRemovedMessage &message) = 0; + + virtual void requestCompletions(const RequestCompletionsMessage &message) = 0; + virtual void requestAnnotations(const RequestAnnotationsMessage &message) = 0; virtual void requestReferences(const RequestReferencesMessage &message) = 0; virtual void requestFollowSymbol(const RequestFollowSymbolMessage &message) = 0; virtual void requestToolTip(const RequestToolTipMessage &message) = 0; - virtual void updateVisibleTranslationUnits(const UpdateVisibleTranslationUnitsMessage &message) = 0; }; } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/clangcodemodelservermessages.h b/src/libs/clangsupport/clangcodemodelservermessages.h index 0e577b08ddd..ab3b5c4b4f4 100644 --- a/src/libs/clangsupport/clangcodemodelservermessages.h +++ b/src/libs/clangsupport/clangcodemodelservermessages.h @@ -25,18 +25,22 @@ #pragma once -#include "cmbechomessage.h" -#include "cmbcompletecodemessage.h" -#include "cmbendmessage.h" -#include "cmbregisterprojectsforeditormessage.h" -#include "cmbregistertranslationunitsforeditormessage.h" -#include "cmbunregisterprojectsforeditormessage.h" -#include "cmbunregistertranslationunitsforeditormessage.h" -#include "registerunsavedfilesforeditormessage.h" -#include "requestdocumentannotations.h" -#include "requestreferencesmessage.h" +#include "echomessage.h" +#include "endmessage.h" + +#include "documentsopenedmessage.h" +#include "documentsclosedmessage.h" +#include "documentschangedmessage.h" +#include "documentvisibilitychangedmessage.h" + +#include "projectpartsupdatedmessage.h" +#include "projectpartsremovedmessage.h" + +#include "unsavedfilesupdatedmessage.h" +#include "unsavedfilesremovedmessage.h" + +#include "requestannotationsmessage.h" +#include "requestcompletionsmessage.h" #include "requestfollowsymbolmessage.h" +#include "requestreferencesmessage.h" #include "requesttooltipmessage.h" -#include "unregisterunsavedfilesforeditormessage.h" -#include "updatetranslationunitsforeditormessage.h" -#include "updatevisibletranslationunitsmessage.h" diff --git a/src/libs/clangsupport/clangcodemodelserverproxy.cpp b/src/libs/clangsupport/clangcodemodelserverproxy.cpp index 23a80284802..b5d309d346c 100644 --- a/src/libs/clangsupport/clangcodemodelserverproxy.cpp +++ b/src/libs/clangsupport/clangcodemodelserverproxy.cpp @@ -31,7 +31,8 @@ namespace ClangBackEnd { -ClangCodeModelServerProxy::ClangCodeModelServerProxy(ClangCodeModelClientInterface *client, QIODevice *ioDevice) +ClangCodeModelServerProxy::ClangCodeModelServerProxy(ClangCodeModelClientInterface *client, + QIODevice *ioDevice) : BaseServerProxy(client, ioDevice) { } @@ -41,47 +42,47 @@ void ClangCodeModelServerProxy::end() m_writeMessageBlock.write(EndMessage()); } -void ClangCodeModelServerProxy::registerTranslationUnitsForEditor(const RegisterTranslationUnitForEditorMessage &message) +void ClangCodeModelServerProxy::documentsOpened(const DocumentsOpenedMessage &message) { m_writeMessageBlock.write(message); } -void ClangCodeModelServerProxy::updateTranslationUnitsForEditor(const ClangBackEnd::UpdateTranslationUnitsForEditorMessage &message) +void ClangCodeModelServerProxy::documentsChanged(const DocumentsChangedMessage &message) { m_writeMessageBlock.write(message); } -void ClangCodeModelServerProxy::unregisterTranslationUnitsForEditor(const UnregisterTranslationUnitsForEditorMessage &message) +void ClangCodeModelServerProxy::documentsClosed(const DocumentsClosedMessage &message) { m_writeMessageBlock.write(message); } -void ClangCodeModelServerProxy::registerProjectPartsForEditor(const RegisterProjectPartsForEditorMessage &message) +void ClangCodeModelServerProxy::projectPartsUpdated(const ProjectPartsUpdatedMessage &message) { m_writeMessageBlock.write(message); } -void ClangCodeModelServerProxy::unregisterProjectPartsForEditor(const UnregisterProjectPartsForEditorMessage &message) +void ClangCodeModelServerProxy::projectPartsRemoved(const ProjectPartsRemovedMessage &message) { m_writeMessageBlock.write(message); } -void ClangBackEnd::ClangCodeModelServerProxy::registerUnsavedFilesForEditor(const ClangBackEnd::RegisterUnsavedFilesForEditorMessage &message) +void ClangCodeModelServerProxy::unsavedFilesUpdated(const UnsavedFilesUpdatedMessage &message) { m_writeMessageBlock.write(message); } -void ClangBackEnd::ClangCodeModelServerProxy::unregisterUnsavedFilesForEditor(const ClangBackEnd::UnregisterUnsavedFilesForEditorMessage &message) +void ClangCodeModelServerProxy::unsavedFilesRemoved(const UnsavedFilesRemovedMessage &message) { m_writeMessageBlock.write(message); } -void ClangCodeModelServerProxy::completeCode(const CompleteCodeMessage &message) +void ClangCodeModelServerProxy::requestCompletions(const RequestCompletionsMessage &message) { m_writeMessageBlock.write(message); } -void ClangCodeModelServerProxy::requestDocumentAnnotations(const RequestDocumentAnnotationsMessage &message) +void ClangCodeModelServerProxy::requestAnnotations(const RequestAnnotationsMessage &message) { m_writeMessageBlock.write(message); } @@ -101,7 +102,8 @@ void ClangCodeModelServerProxy::requestToolTip(const RequestToolTipMessage &mess m_writeMessageBlock.write(message); } -void ClangCodeModelServerProxy::updateVisibleTranslationUnits(const UpdateVisibleTranslationUnitsMessage &message) +void ClangCodeModelServerProxy::documentVisibilityChanged( + const DocumentVisibilityChangedMessage &message) { m_writeMessageBlock.write(message); } diff --git a/src/libs/clangsupport/clangcodemodelserverproxy.h b/src/libs/clangsupport/clangcodemodelserverproxy.h index 62ea90eebe2..fe574fccd75 100644 --- a/src/libs/clangsupport/clangcodemodelserverproxy.h +++ b/src/libs/clangsupport/clangcodemodelserverproxy.h @@ -49,19 +49,23 @@ public: ClangCodeModelServerProxy(ClangCodeModelClientInterface *client, QIODevice *ioDevice); void end() override; - void registerTranslationUnitsForEditor(const RegisterTranslationUnitForEditorMessage &message) override; - void updateTranslationUnitsForEditor(const UpdateTranslationUnitsForEditorMessage &message) override; - void unregisterTranslationUnitsForEditor(const UnregisterTranslationUnitsForEditorMessage &message) override; - void registerProjectPartsForEditor(const RegisterProjectPartsForEditorMessage &message) override; - void unregisterProjectPartsForEditor(const UnregisterProjectPartsForEditorMessage &message) override; - void registerUnsavedFilesForEditor(const RegisterUnsavedFilesForEditorMessage &message) override; - void unregisterUnsavedFilesForEditor(const UnregisterUnsavedFilesForEditorMessage &message) override; - void completeCode(const CompleteCodeMessage &message) override; - void requestDocumentAnnotations(const RequestDocumentAnnotationsMessage &message) override; + + void documentsOpened(const DocumentsOpenedMessage &message) override; + void documentsChanged(const DocumentsChangedMessage &message) override; + void documentsClosed(const DocumentsClosedMessage &message) override; + void documentVisibilityChanged(const DocumentVisibilityChangedMessage &message) override; + + void projectPartsUpdated(const ProjectPartsUpdatedMessage &message) override; + void projectPartsRemoved(const ProjectPartsRemovedMessage &message) override; + + void unsavedFilesUpdated(const UnsavedFilesUpdatedMessage &message) override; + void unsavedFilesRemoved(const UnsavedFilesRemovedMessage &message) override; + + void requestCompletions(const RequestCompletionsMessage &message) override; + void requestAnnotations(const RequestAnnotationsMessage &message) override; void requestReferences(const RequestReferencesMessage &message) override; void requestFollowSymbol(const RequestFollowSymbolMessage &message) override; void requestToolTip(const RequestToolTipMessage &message) override; - void updateVisibleTranslationUnits(const UpdateVisibleTranslationUnitsMessage &message) override; }; } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/clangrefactoringclientmessages.h b/src/libs/clangsupport/clangrefactoringclientmessages.h index 7b90453540a..18c070695a9 100644 --- a/src/libs/clangsupport/clangrefactoringclientmessages.h +++ b/src/libs/clangsupport/clangrefactoringclientmessages.h @@ -28,4 +28,4 @@ #include "sourcelocationsforrenamingmessage.h" #include "sourcerangesanddiagnosticsforquerymessage.h" #include "sourcerangesforquerymessage.h" -#include "cmbalivemessage.h" +#include "alivemessage.h" diff --git a/src/libs/clangsupport/clangrefactoringservermessages.h b/src/libs/clangsupport/clangrefactoringservermessages.h index 1f7866444b1..cdcc309c2d8 100644 --- a/src/libs/clangsupport/clangrefactoringservermessages.h +++ b/src/libs/clangsupport/clangrefactoringservermessages.h @@ -26,7 +26,7 @@ #pragma once #include "cancelmessage.h" -#include "cmbendmessage.h" +#include "endmessage.h" #include "requestsourcelocationforrenamingmessage.h" #include "requestsourcerangesanddiagnosticsforquerymessage.h" #include "requestsourcerangesforquerymessage.h" diff --git a/src/libs/clangsupport/clangsupport-lib.pri b/src/libs/clangsupport/clangsupport-lib.pri index 501e9fbfb94..857bc39ddd0 100644 --- a/src/libs/clangsupport/clangsupport-lib.pri +++ b/src/libs/clangsupport/clangsupport-lib.pri @@ -16,21 +16,21 @@ SOURCES += \ $$PWD/clangcodemodelconnectionclient.cpp \ $$PWD/clangcodemodelserverinterface.cpp \ $$PWD/clangcodemodelserverproxy.cpp \ - $$PWD/cmbalivemessage.cpp \ - $$PWD/cmbcodecompletedmessage.cpp \ - $$PWD/cmbcompletecodemessage.cpp \ - $$PWD/cmbechomessage.cpp \ - $$PWD/cmbendmessage.cpp \ - $$PWD/cmbregisterprojectsforeditormessage.cpp \ - $$PWD/cmbregistertranslationunitsforeditormessage.cpp \ - $$PWD/cmbunregisterprojectsforeditormessage.cpp \ - $$PWD/cmbunregistertranslationunitsforeditormessage.cpp \ + $$PWD/alivemessage.cpp \ + $$PWD/completionsmessage.cpp \ + $$PWD/requestcompletionsmessage.cpp \ + $$PWD/echomessage.cpp \ + $$PWD/endmessage.cpp \ + $$PWD/projectpartsupdatedmessage.cpp \ + $$PWD/documentsopenedmessage.cpp \ + $$PWD/projectpartsremovedmessage.cpp \ + $$PWD/documentsclosedmessage.cpp \ $$PWD/codecompletionchunk.cpp \ $$PWD/codecompletion.cpp \ $$PWD/connectionclient.cpp \ $$PWD/connectionserver.cpp \ $$PWD/diagnosticcontainer.cpp \ - $$PWD/documentannotationschangedmessage.cpp \ + $$PWD/annotationsmessage.cpp \ $$PWD/dynamicastmatcherdiagnosticcontainer.cpp \ $$PWD/dynamicastmatcherdiagnosticcontextcontainer.cpp \ $$PWD/dynamicastmatcherdiagnosticmessagecontainer.cpp \ @@ -55,9 +55,9 @@ SOURCES += \ $$PWD/refactoringserverinterface.cpp \ $$PWD/refactoringserverproxy.cpp \ $$PWD/referencesmessage.cpp \ - $$PWD/registerunsavedfilesforeditormessage.cpp \ + $$PWD/unsavedfilesupdatedmessage.cpp \ $$PWD/removeprojectpartsmessage.cpp \ - $$PWD/requestdocumentannotations.cpp \ + $$PWD/requestannotationsmessage.cpp \ $$PWD/requestfollowsymbolmessage.cpp \ $$PWD/requestreferencesmessage.cpp \ $$PWD/requestsourcelocationforrenamingmessage.cpp \ @@ -80,10 +80,10 @@ SOURCES += \ $$PWD/tokeninfocontainer.cpp \ $$PWD/tooltipmessage.cpp \ $$PWD/tooltipinfo.cpp \ - $$PWD/unregisterunsavedfilesforeditormessage.cpp \ + $$PWD/unsavedfilesremovedmessage.cpp \ $$PWD/updateprojectpartsmessage.cpp \ - $$PWD/updatetranslationunitsforeditormessage.cpp \ - $$PWD/updatevisibletranslationunitsmessage.cpp \ + $$PWD/documentschangedmessage.cpp \ + $$PWD/documentvisibilitychangedmessage.cpp \ $$PWD/writemessageblock.cpp \ $$PWD/filepathcaching.cpp \ $$PWD/filepathid.cpp \ @@ -106,21 +106,21 @@ HEADERS += \ $$PWD/clangrefactoringclientmessages.h \ $$PWD/clangrefactoringmessages.h \ $$PWD/clangrefactoringservermessages.h \ - $$PWD/cmbalivemessage.h \ - $$PWD/cmbcodecompletedmessage.h \ - $$PWD/cmbcompletecodemessage.h \ - $$PWD/cmbechomessage.h \ - $$PWD/cmbendmessage.h \ - $$PWD/cmbregisterprojectsforeditormessage.h \ - $$PWD/cmbregistertranslationunitsforeditormessage.h \ - $$PWD/cmbunregisterprojectsforeditormessage.h \ - $$PWD/cmbunregistertranslationunitsforeditormessage.h \ + $$PWD/alivemessage.h \ + $$PWD/completionsmessage.h \ + $$PWD/requestcompletionsmessage.h \ + $$PWD/echomessage.h \ + $$PWD/endmessage.h \ + $$PWD/projectpartsupdatedmessage.h \ + $$PWD/documentsopenedmessage.h \ + $$PWD/projectpartsremovedmessage.h \ + $$PWD/documentsclosedmessage.h \ $$PWD/codecompletionchunk.h \ $$PWD/codecompletion.h \ $$PWD/connectionclient.h \ $$PWD/connectionserver.h \ $$PWD/diagnosticcontainer.h \ - $$PWD/documentannotationschangedmessage.h \ + $$PWD/annotationsmessage.h \ $$PWD/dynamicastmatcherdiagnosticcontainer.h \ $$PWD/dynamicastmatcherdiagnosticcontextcontainer.h \ $$PWD/dynamicastmatcherdiagnosticmessagecontainer.h \ @@ -149,9 +149,9 @@ HEADERS += \ $$PWD/refactoringserverinterface.h \ $$PWD/refactoringserverproxy.h \ $$PWD/referencesmessage.h \ - $$PWD/registerunsavedfilesforeditormessage.h \ + $$PWD/unsavedfilesupdatedmessage.h \ $$PWD/removeprojectpartsmessage.h \ - $$PWD/requestdocumentannotations.h \ + $$PWD/requestannotationsmessage.h \ $$PWD/requestfollowsymbolmessage.h \ $$PWD/requestreferencesmessage.h \ $$PWD/requestsourcelocationforrenamingmessage.h \ @@ -177,10 +177,10 @@ HEADERS += \ $$PWD/tokeninfocontainer.h \ $$PWD/tooltipmessage.h \ $$PWD/tooltipinfo.h \ - $$PWD/unregisterunsavedfilesforeditormessage.h \ + $$PWD/unsavedfilesremovedmessage.h \ $$PWD/updateprojectpartsmessage.h \ - $$PWD/updatetranslationunitsforeditormessage.h \ - $$PWD/updatevisibletranslationunitsmessage.h \ + $$PWD/documentschangedmessage.h \ + $$PWD/documentvisibilitychangedmessage.h \ $$PWD/writemessageblock.h \ $$PWD/ipcclientprovider.h \ $$PWD/requestsourcerangesforquerymessage.h \ diff --git a/src/libs/clangsupport/clangsupport_global.h b/src/libs/clangsupport/clangsupport_global.h index 8c5b5f57b80..def7cea41c0 100644 --- a/src/libs/clangsupport/clangsupport_global.h +++ b/src/libs/clangsupport/clangsupport_global.h @@ -138,18 +138,19 @@ enum class MessageType : quint8 { EchoMessage, EndMessage, - RegisterTranslationUnitForEditorMessage, - UpdateTranslationUnitsForEditorMessage, - UnregisterTranslationUnitsForEditorMessage, + DocumentsOpenedMessage, + DocumentsChangedMessage, + DocumentsClosedMessage, + DocumentVisibilityChangedMessage, - RegisterUnsavedFilesForEditorMessage, - UnregisterUnsavedFilesForEditorMessage, + UnsavedFilesUpdatedMessage, + UnsavedFilesRemovedMessage, - RegisterProjectPartsForEditorMessage, - UnregisterProjectPartsForEditorMessage, + ProjectPartsUpdatedMessage, + ProjectPartsRemovedMessage, - RequestDocumentAnnotationsMessage, - DocumentAnnotationsChangedMessage, + RequestAnnotationsMessage, + AnnotationsMessage, RequestReferencesMessage, ReferencesMessage, @@ -160,10 +161,8 @@ enum class MessageType : quint8 { RequestToolTipMessage, ToolTipMessage, - UpdateVisibleTranslationUnitsMessage, - - CompleteCodeMessage, - CodeCompletedMessage, + RequestCompletionsMessage, + CompletionsMessage, SourceLocationsForRenamingMessage, RequestSourceLocationsForRenamingMessage, diff --git a/src/libs/clangsupport/cmbcodecompletedmessage.cpp b/src/libs/clangsupport/completionsmessage.cpp similarity index 92% rename from src/libs/clangsupport/cmbcodecompletedmessage.cpp rename to src/libs/clangsupport/completionsmessage.cpp index ca10cf15f1a..b6324f6a647 100644 --- a/src/libs/clangsupport/cmbcodecompletedmessage.cpp +++ b/src/libs/clangsupport/completionsmessage.cpp @@ -23,7 +23,7 @@ ** ****************************************************************************/ -#include "cmbcodecompletedmessage.h" +#include "completionsmessage.h" #include @@ -40,9 +40,9 @@ static const char *completionCorrectionToText(CompletionCorrection correction) } #undef RETURN_TEXT_FOR_CASE -QDebug operator<<(QDebug debug, const CodeCompletedMessage &message) +QDebug operator<<(QDebug debug, const CompletionsMessage &message) { - debug.nospace() << "CodeCompletedMessage("; + debug.nospace() << "CompletionsMessage("; debug.nospace() << message.codeCompletions << ", " << completionCorrectionToText(message.neededCorrection) << ", " diff --git a/src/libs/clangsupport/cmbcodecompletedmessage.h b/src/libs/clangsupport/completionsmessage.h similarity index 73% rename from src/libs/clangsupport/cmbcodecompletedmessage.h rename to src/libs/clangsupport/completionsmessage.h index e3b74e9d798..b77710a93b0 100644 --- a/src/libs/clangsupport/cmbcodecompletedmessage.h +++ b/src/libs/clangsupport/completionsmessage.h @@ -33,20 +33,20 @@ namespace ClangBackEnd { -class CodeCompletedMessage +class CompletionsMessage { public: - CodeCompletedMessage() = default; - CodeCompletedMessage(const CodeCompletions &codeCompletions, - CompletionCorrection neededCorrection, - quint64 ticketNumber) - : codeCompletions(codeCompletions), - ticketNumber(ticketNumber), - neededCorrection(neededCorrection) + CompletionsMessage() = default; + CompletionsMessage(const CodeCompletions &codeCompletions, + CompletionCorrection neededCorrection, + quint64 ticketNumber) + : codeCompletions(codeCompletions) + , ticketNumber(ticketNumber) + , neededCorrection(neededCorrection) { } - friend QDataStream &operator<<(QDataStream &out, const CodeCompletedMessage &message) + friend QDataStream &operator<<(QDataStream &out, const CompletionsMessage &message) { out << message.codeCompletions; out << static_cast(message.neededCorrection); @@ -55,7 +55,7 @@ public: return out; } - friend QDataStream &operator>>(QDataStream &in, CodeCompletedMessage &message) + friend QDataStream &operator>>(QDataStream &in, CompletionsMessage &message) { quint32 neededCorrection; @@ -68,7 +68,7 @@ public: return in; } - friend bool operator==(const CodeCompletedMessage &first, const CodeCompletedMessage &second) + friend bool operator==(const CompletionsMessage &first, const CompletionsMessage &second) { return first.ticketNumber == second.ticketNumber && first.neededCorrection == second.neededCorrection @@ -81,7 +81,7 @@ public: CompletionCorrection neededCorrection = CompletionCorrection::NoCorrection; }; -CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const CodeCompletedMessage &message); +CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const CompletionsMessage &message); -DECLARE_MESSAGE(CodeCompletedMessage) +DECLARE_MESSAGE(CompletionsMessage) } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/registerunsavedfilesforeditormessage.cpp b/src/libs/clangsupport/documentschangedmessage.cpp similarity index 87% rename from src/libs/clangsupport/registerunsavedfilesforeditormessage.cpp rename to src/libs/clangsupport/documentschangedmessage.cpp index 1daa1812864..41512d8081a 100644 --- a/src/libs/clangsupport/registerunsavedfilesforeditormessage.cpp +++ b/src/libs/clangsupport/documentschangedmessage.cpp @@ -23,15 +23,15 @@ ** ****************************************************************************/ -#include "registerunsavedfilesforeditormessage.h" +#include "documentschangedmessage.h" #include namespace ClangBackEnd { -QDebug operator<<(QDebug debug, const RegisterUnsavedFilesForEditorMessage &message) +QDebug operator<<(QDebug debug, const DocumentsChangedMessage &message) { - debug.nospace() << "RegisterUnsavedFilesForEditorMessage("; + debug.nospace() << "DocumentsChangedMessage("; for (const FileContainer &fileContainer : message.fileContainers) debug.nospace() << fileContainer<< ", "; diff --git a/src/libs/clangsupport/registerunsavedfilesforeditormessage.h b/src/libs/clangsupport/documentschangedmessage.h similarity index 70% rename from src/libs/clangsupport/registerunsavedfilesforeditormessage.h rename to src/libs/clangsupport/documentschangedmessage.h index b3a5e8ee08d..3d3f6138e8c 100644 --- a/src/libs/clangsupport/registerunsavedfilesforeditormessage.h +++ b/src/libs/clangsupport/documentschangedmessage.h @@ -31,30 +31,31 @@ namespace ClangBackEnd { -class RegisterUnsavedFilesForEditorMessage +class DocumentsChangedMessage { public: - RegisterUnsavedFilesForEditorMessage() = default; - RegisterUnsavedFilesForEditorMessage(const QVector &fileContainers) + DocumentsChangedMessage() = default; + DocumentsChangedMessage(const QVector &fileContainers) : fileContainers(fileContainers) { } - friend QDataStream &operator<<(QDataStream &out, const RegisterUnsavedFilesForEditorMessage &message) + friend QDataStream &operator<<(QDataStream &out, const DocumentsChangedMessage &message) { out << message.fileContainers; return out; } - friend QDataStream &operator>>(QDataStream &in, RegisterUnsavedFilesForEditorMessage &message) + friend QDataStream &operator>>(QDataStream &in, DocumentsChangedMessage &message) { in >> message.fileContainers; return in; } - friend bool operator==(const RegisterUnsavedFilesForEditorMessage &first, const RegisterUnsavedFilesForEditorMessage &second) + friend bool operator==(const DocumentsChangedMessage &first, + const DocumentsChangedMessage &second) { return first.fileContainers == second.fileContainers; } @@ -63,7 +64,7 @@ public: QVector fileContainers; }; -CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const RegisterUnsavedFilesForEditorMessage &message); +CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const DocumentsChangedMessage &message); -DECLARE_MESSAGE(RegisterUnsavedFilesForEditorMessage); +DECLARE_MESSAGE(DocumentsChangedMessage) } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/cmbunregistertranslationunitsforeditormessage.cpp b/src/libs/clangsupport/documentsclosedmessage.cpp similarity index 86% rename from src/libs/clangsupport/cmbunregistertranslationunitsforeditormessage.cpp rename to src/libs/clangsupport/documentsclosedmessage.cpp index 42b6fa35244..7c23586b836 100644 --- a/src/libs/clangsupport/cmbunregistertranslationunitsforeditormessage.cpp +++ b/src/libs/clangsupport/documentsclosedmessage.cpp @@ -23,15 +23,15 @@ ** ****************************************************************************/ -#include "cmbunregistertranslationunitsforeditormessage.h" +#include "documentsclosedmessage.h" #include namespace ClangBackEnd { -QDebug operator<<(QDebug debug, const UnregisterTranslationUnitsForEditorMessage &message) +QDebug operator<<(QDebug debug, const DocumentsClosedMessage &message) { - debug.nospace() << "UnregisterTranslationUnitsForEditorMessage("; + debug.nospace() << "DocumentsClosedMessage("; for (const FileContainer &fileContainer : message.fileContainers) debug.nospace() << fileContainer << ", "; diff --git a/src/libs/clangsupport/updatetranslationunitsforeditormessage.h b/src/libs/clangsupport/documentsclosedmessage.h similarity index 70% rename from src/libs/clangsupport/updatetranslationunitsforeditormessage.h rename to src/libs/clangsupport/documentsclosedmessage.h index 72ce67622f9..458a78fa8c9 100644 --- a/src/libs/clangsupport/updatetranslationunitsforeditormessage.h +++ b/src/libs/clangsupport/documentsclosedmessage.h @@ -25,36 +25,38 @@ #pragma once +#include "clangsupport_global.h" + #include "filecontainer.h" #include namespace ClangBackEnd { -class UpdateTranslationUnitsForEditorMessage +class DocumentsClosedMessage { public: - UpdateTranslationUnitsForEditorMessage() = default; - UpdateTranslationUnitsForEditorMessage(const QVector &fileContainers) + DocumentsClosedMessage() = default; + DocumentsClosedMessage(const QVector &fileContainers) : fileContainers(fileContainers) { } - friend QDataStream &operator<<(QDataStream &out, const UpdateTranslationUnitsForEditorMessage &message) + friend QDataStream &operator<<(QDataStream &out, const DocumentsClosedMessage &message) { out << message.fileContainers; return out; } - friend QDataStream &operator>>(QDataStream &in, UpdateTranslationUnitsForEditorMessage &message) + friend QDataStream &operator>>(QDataStream &in, DocumentsClosedMessage &message) { in >> message.fileContainers; return in; } - friend bool operator==(const UpdateTranslationUnitsForEditorMessage &first, const UpdateTranslationUnitsForEditorMessage &second) + friend bool operator==(const DocumentsClosedMessage &first, const DocumentsClosedMessage &second) { return first.fileContainers == second.fileContainers; } @@ -63,7 +65,7 @@ public: QVector fileContainers; }; -CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const UpdateTranslationUnitsForEditorMessage &message); +CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const DocumentsClosedMessage &message); -DECLARE_MESSAGE(UpdateTranslationUnitsForEditorMessage) +DECLARE_MESSAGE(DocumentsClosedMessage); } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/cmbregistertranslationunitsforeditormessage.cpp b/src/libs/clangsupport/documentsopenedmessage.cpp similarity index 88% rename from src/libs/clangsupport/cmbregistertranslationunitsforeditormessage.cpp rename to src/libs/clangsupport/documentsopenedmessage.cpp index e0fa5d43d74..647899b3fe1 100644 --- a/src/libs/clangsupport/cmbregistertranslationunitsforeditormessage.cpp +++ b/src/libs/clangsupport/documentsopenedmessage.cpp @@ -23,15 +23,15 @@ ** ****************************************************************************/ -#include "cmbregistertranslationunitsforeditormessage.h" +#include "documentsopenedmessage.h" #include namespace ClangBackEnd { -QDebug operator<<(QDebug debug, const RegisterTranslationUnitForEditorMessage &message) +QDebug operator<<(QDebug debug, const DocumentsOpenedMessage &message) { - debug.nospace() << "RegisterTranslationUnitForEditorMessage("; + debug.nospace() << "DocumentsOpenedMessage("; for (const FileContainer &fileContainer : message.fileContainers) debug.nospace() << fileContainer<< ", "; diff --git a/src/libs/clangsupport/cmbregistertranslationunitsforeditormessage.h b/src/libs/clangsupport/documentsopenedmessage.h similarity index 66% rename from src/libs/clangsupport/cmbregistertranslationunitsforeditormessage.h rename to src/libs/clangsupport/documentsopenedmessage.h index 6ec1ebcd9fd..d56596ef7b8 100644 --- a/src/libs/clangsupport/cmbregistertranslationunitsforeditormessage.h +++ b/src/libs/clangsupport/documentsopenedmessage.h @@ -32,20 +32,20 @@ namespace ClangBackEnd { -class RegisterTranslationUnitForEditorMessage +class DocumentsOpenedMessage { public: - RegisterTranslationUnitForEditorMessage() = default; - RegisterTranslationUnitForEditorMessage(const QVector &fileContainers, - const Utf8String ¤tEditorFilePath, - const Utf8StringVector &visibleEditorFilePaths) - : fileContainers(fileContainers), - currentEditorFilePath(currentEditorFilePath), - visibleEditorFilePaths(visibleEditorFilePaths) + DocumentsOpenedMessage() = default; + DocumentsOpenedMessage(const QVector &fileContainers, + const Utf8String ¤tEditorFilePath, + const Utf8StringVector &visibleEditorFilePaths) + : fileContainers(fileContainers) + , currentEditorFilePath(currentEditorFilePath) + , visibleEditorFilePaths(visibleEditorFilePaths) { } - friend QDataStream &operator<<(QDataStream &out, const RegisterTranslationUnitForEditorMessage &message) + friend QDataStream &operator<<(QDataStream &out, const DocumentsOpenedMessage &message) { out << message.fileContainers; out << message.currentEditorFilePath; @@ -53,7 +53,7 @@ public: return out; } - friend QDataStream &operator>>(QDataStream &in, RegisterTranslationUnitForEditorMessage &message) + friend QDataStream &operator>>(QDataStream &in, DocumentsOpenedMessage &message) { in >> message.fileContainers; in >> message.currentEditorFilePath; @@ -62,7 +62,7 @@ public: return in; } - friend bool operator==(const RegisterTranslationUnitForEditorMessage &first, const RegisterTranslationUnitForEditorMessage &second) + friend bool operator==(const DocumentsOpenedMessage &first, const DocumentsOpenedMessage &second) { return first.fileContainers == second.fileContainers && first.currentEditorFilePath == second.currentEditorFilePath @@ -75,7 +75,7 @@ public: Utf8StringVector visibleEditorFilePaths; }; -CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const RegisterTranslationUnitForEditorMessage &message); +CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const DocumentsOpenedMessage &message); -DECLARE_MESSAGE(RegisterTranslationUnitForEditorMessage); +DECLARE_MESSAGE(DocumentsOpenedMessage); } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/updatevisibletranslationunitsmessage.cpp b/src/libs/clangsupport/documentvisibilitychangedmessage.cpp similarity index 88% rename from src/libs/clangsupport/updatevisibletranslationunitsmessage.cpp rename to src/libs/clangsupport/documentvisibilitychangedmessage.cpp index e0826a756be..f82efe65818 100644 --- a/src/libs/clangsupport/updatevisibletranslationunitsmessage.cpp +++ b/src/libs/clangsupport/documentvisibilitychangedmessage.cpp @@ -23,15 +23,15 @@ ** ****************************************************************************/ -#include "updatevisibletranslationunitsmessage.h" +#include "documentvisibilitychangedmessage.h" #include namespace ClangBackEnd { -QDebug operator<<(QDebug debug, const UpdateVisibleTranslationUnitsMessage &message) +QDebug operator<<(QDebug debug, const DocumentVisibilityChangedMessage &message) { - debug.nospace() << "UpdateVisibleTranslationUnitsMessage("; + debug.nospace() << "DocumentVisibilityChangedMessage("; debug.nospace() << message.currentEditorFilePath << ", "; diff --git a/src/libs/clangsupport/updatevisibletranslationunitsmessage.h b/src/libs/clangsupport/documentvisibilitychangedmessage.h similarity index 68% rename from src/libs/clangsupport/updatevisibletranslationunitsmessage.h rename to src/libs/clangsupport/documentvisibilitychangedmessage.h index e51706276d2..cb8b0f2679e 100644 --- a/src/libs/clangsupport/updatevisibletranslationunitsmessage.h +++ b/src/libs/clangsupport/documentvisibilitychangedmessage.h @@ -33,18 +33,18 @@ namespace ClangBackEnd { -class UpdateVisibleTranslationUnitsMessage +class DocumentVisibilityChangedMessage { public: - UpdateVisibleTranslationUnitsMessage() = default; - UpdateVisibleTranslationUnitsMessage(const Utf8String ¤tEditorFilePath, - const Utf8StringVector &visibleEditorFilePaths) - : currentEditorFilePath(currentEditorFilePath), - visibleEditorFilePaths(visibleEditorFilePaths) + DocumentVisibilityChangedMessage() = default; + DocumentVisibilityChangedMessage(const Utf8String ¤tEditorFilePath, + const Utf8StringVector &visibleEditorFilePaths) + : currentEditorFilePath(currentEditorFilePath) + , visibleEditorFilePaths(visibleEditorFilePaths) { } - friend QDataStream &operator<<(QDataStream &out, const UpdateVisibleTranslationUnitsMessage &message) + friend QDataStream &operator<<(QDataStream &out, const DocumentVisibilityChangedMessage &message) { out << message.currentEditorFilePath; out << message.visibleEditorFilePaths; @@ -52,7 +52,7 @@ public: return out; } - friend QDataStream &operator>>(QDataStream &in, UpdateVisibleTranslationUnitsMessage &message) + friend QDataStream &operator>>(QDataStream &in, DocumentVisibilityChangedMessage &message) { in >> message.currentEditorFilePath; in >> message.visibleEditorFilePaths; @@ -60,7 +60,8 @@ public: return in; } - friend bool operator==(const UpdateVisibleTranslationUnitsMessage &first, const UpdateVisibleTranslationUnitsMessage &second) + friend bool operator==(const DocumentVisibilityChangedMessage &first, + const DocumentVisibilityChangedMessage &second) { return first.currentEditorFilePath == second.currentEditorFilePath && first.visibleEditorFilePaths == second.visibleEditorFilePaths; @@ -71,7 +72,7 @@ public: Utf8StringVector visibleEditorFilePaths; }; -CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const UpdateVisibleTranslationUnitsMessage &message); +CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const DocumentVisibilityChangedMessage &message); -DECLARE_MESSAGE(UpdateVisibleTranslationUnitsMessage) +DECLARE_MESSAGE(DocumentVisibilityChangedMessage) } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/cmbechomessage.cpp b/src/libs/clangsupport/echomessage.cpp similarity index 98% rename from src/libs/clangsupport/cmbechomessage.cpp rename to src/libs/clangsupport/echomessage.cpp index 4d221737ea8..a8842b537b5 100644 --- a/src/libs/clangsupport/cmbechomessage.cpp +++ b/src/libs/clangsupport/echomessage.cpp @@ -23,7 +23,7 @@ ** ****************************************************************************/ -#include "cmbechomessage.h" +#include "echomessage.h" #include diff --git a/src/libs/clangsupport/cmbechomessage.h b/src/libs/clangsupport/echomessage.h similarity index 100% rename from src/libs/clangsupport/cmbechomessage.h rename to src/libs/clangsupport/echomessage.h diff --git a/src/libs/clangsupport/cmbendmessage.cpp b/src/libs/clangsupport/endmessage.cpp similarity index 96% rename from src/libs/clangsupport/cmbendmessage.cpp rename to src/libs/clangsupport/endmessage.cpp index 7dbc49e41ed..23132d456a4 100644 --- a/src/libs/clangsupport/cmbendmessage.cpp +++ b/src/libs/clangsupport/endmessage.cpp @@ -23,7 +23,7 @@ ** ****************************************************************************/ -#include "cmbendmessage.h" +#include "endmessage.h" #include @@ -34,4 +34,4 @@ QDebug operator<<(QDebug debug, const EndMessage &/*message*/) return debug.nospace() << "EndMessage()"; } -} +} // namespace ClangBackEnd diff --git a/src/libs/clangsupport/cmbendmessage.h b/src/libs/clangsupport/endmessage.h similarity index 100% rename from src/libs/clangsupport/cmbendmessage.h rename to src/libs/clangsupport/endmessage.h diff --git a/src/libs/clangsupport/followsymbolmessage.cpp b/src/libs/clangsupport/followsymbolmessage.cpp index 93a37b16a0a..22e77ee6d41 100644 --- a/src/libs/clangsupport/followsymbolmessage.cpp +++ b/src/libs/clangsupport/followsymbolmessage.cpp @@ -29,12 +29,23 @@ namespace ClangBackEnd { +QDebug operator<<(QDebug debug, const FollowSymbolResult &result) +{ + debug.nospace() << "FollowSymbolResult(" + << result.range + << ", " << result.isPureDeclarationForUsage; + + debug.nospace() << ")"; + + return debug; +} + QDebug operator<<(QDebug debug, const FollowSymbolMessage &message) { debug.nospace() << "FollowSymbolMessage(" << message.fileContainer << ", " << message.ticketNumber - << ", " << message.sourceRange; + << ", " << message.result; debug.nospace() << ")"; diff --git a/src/libs/clangsupport/followsymbolmessage.h b/src/libs/clangsupport/followsymbolmessage.h index 80b62628fb3..ec113825aeb 100644 --- a/src/libs/clangsupport/followsymbolmessage.h +++ b/src/libs/clangsupport/followsymbolmessage.h @@ -33,15 +33,53 @@ namespace ClangBackEnd { +class FollowSymbolResult +{ +public: + FollowSymbolResult() = default; + FollowSymbolResult(SourceRangeContainer range) + : range(std::move(range)) + {} + FollowSymbolResult(SourceRangeContainer range, bool isPureDeclarationForUsage) + : range(std::move(range)) + , isPureDeclarationForUsage(isPureDeclarationForUsage) + {} + + friend QDataStream &operator<<(QDataStream &out, const FollowSymbolResult &container) + { + out << container.range; + out << container.isPureDeclarationForUsage; + + return out; + } + + friend QDataStream &operator>>(QDataStream &in, FollowSymbolResult &container) + { + in >> container.range; + in >> container.isPureDeclarationForUsage; + + return in; + } + + friend bool operator==(const FollowSymbolResult &first, const FollowSymbolResult &second) + { + return first.range == second.range + && first.isPureDeclarationForUsage == second.isPureDeclarationForUsage; + } + + SourceRangeContainer range; + bool isPureDeclarationForUsage = false; +}; + class FollowSymbolMessage { public: FollowSymbolMessage() = default; FollowSymbolMessage(const FileContainer &fileContainer, - const SourceRangeContainer &range, + const FollowSymbolResult &result, quint64 ticketNumber) : fileContainer(fileContainer) - , sourceRange(range) + , result(result) , ticketNumber(ticketNumber) { } @@ -49,7 +87,7 @@ public: friend QDataStream &operator<<(QDataStream &out, const FollowSymbolMessage &message) { out << message.fileContainer; - out << message.sourceRange; + out << message.result; out << message.ticketNumber; return out; } @@ -57,7 +95,7 @@ public: friend QDataStream &operator>>(QDataStream &in, FollowSymbolMessage &message) { in >> message.fileContainer; - in >> message.sourceRange; + in >> message.result; in >> message.ticketNumber; return in; } @@ -66,15 +104,16 @@ public: { return first.ticketNumber == second.ticketNumber && first.fileContainer == second.fileContainer - && first.sourceRange == second.sourceRange; + && first.result == second.result; } public: FileContainer fileContainer; - SourceRangeContainer sourceRange; + FollowSymbolResult result; quint64 ticketNumber = 0; }; +CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const FollowSymbolResult &result); CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const FollowSymbolMessage &message); DECLARE_MESSAGE(FollowSymbolMessage); diff --git a/src/libs/clangsupport/messageenvelop.cpp b/src/libs/clangsupport/messageenvelop.cpp index 134616a5b93..b4da3d87587 100644 --- a/src/libs/clangsupport/messageenvelop.cpp +++ b/src/libs/clangsupport/messageenvelop.cpp @@ -38,32 +38,35 @@ QDebug operator<<(QDebug debug, const MessageEnvelop &messageEnvelop) case MessageType::EndMessage: qDebug() << "EndMessage()"; break; - case MessageType::RegisterTranslationUnitForEditorMessage: - qDebug() << messageEnvelop.message(); + case MessageType::DocumentsOpenedMessage: + qDebug() << messageEnvelop.message(); break; - case MessageType::UpdateTranslationUnitsForEditorMessage: - qDebug() << messageEnvelop.message(); + case MessageType::DocumentsChangedMessage: + qDebug() << messageEnvelop.message(); break; - case MessageType::UnregisterTranslationUnitsForEditorMessage: - qDebug() << messageEnvelop.message(); + case MessageType::DocumentsClosedMessage: + qDebug() << messageEnvelop.message(); break; - case MessageType::RegisterProjectPartsForEditorMessage: - qDebug() << messageEnvelop.message(); + case MessageType::DocumentVisibilityChangedMessage: + qDebug() << messageEnvelop.message(); break; - case MessageType::UnregisterProjectPartsForEditorMessage: - qDebug() << messageEnvelop.message(); + case MessageType::ProjectPartsUpdatedMessage: + qDebug() << messageEnvelop.message(); break; - case MessageType::RegisterUnsavedFilesForEditorMessage: - qDebug() << messageEnvelop.message(); + case MessageType::ProjectPartsRemovedMessage: + qDebug() << messageEnvelop.message(); break; - case MessageType::UnregisterUnsavedFilesForEditorMessage: - qDebug() << messageEnvelop.message(); + case MessageType::UnsavedFilesUpdatedMessage: + qDebug() << messageEnvelop.message(); break; - case MessageType::CompleteCodeMessage: - qDebug() << messageEnvelop.message(); + case MessageType::UnsavedFilesRemovedMessage: + qDebug() << messageEnvelop.message(); break; - case MessageType::RequestDocumentAnnotationsMessage: - qDebug() << messageEnvelop.message(); + case MessageType::RequestCompletionsMessage: + qDebug() << messageEnvelop.message(); + break; + case MessageType::RequestAnnotationsMessage: + qDebug() << messageEnvelop.message(); break; case MessageType::RequestReferencesMessage: qDebug() << messageEnvelop.message(); @@ -71,17 +74,14 @@ QDebug operator<<(QDebug debug, const MessageEnvelop &messageEnvelop) case MessageType::RequestToolTipMessage: qDebug() << messageEnvelop.message(); break; - case MessageType::UpdateVisibleTranslationUnitsMessage: - qDebug() << messageEnvelop.message(); - break; case MessageType::AliveMessage: qDebug() << "AliveMessage()"; break; case MessageType::EchoMessage: qDebug() << messageEnvelop.message(); break; - case MessageType::CodeCompletedMessage: - qDebug() << messageEnvelop.message(); + case MessageType::CompletionsMessage: + qDebug() << messageEnvelop.message(); break; case MessageType::ReferencesMessage: qDebug() << messageEnvelop.message(); @@ -89,8 +89,8 @@ QDebug operator<<(QDebug debug, const MessageEnvelop &messageEnvelop) case MessageType::ToolTipMessage: qDebug() << messageEnvelop.message(); break; - case MessageType::DocumentAnnotationsChangedMessage: - qDebug() << messageEnvelop.message(); + case MessageType::AnnotationsMessage: + qDebug() << messageEnvelop.message(); break; default: qWarning() << "Unknown Message"; diff --git a/src/libs/clangsupport/pchmanagerclientproxy.cpp b/src/libs/clangsupport/pchmanagerclientproxy.cpp index ad583113bba..6a216ef6361 100644 --- a/src/libs/clangsupport/pchmanagerclientproxy.cpp +++ b/src/libs/clangsupport/pchmanagerclientproxy.cpp @@ -25,7 +25,7 @@ #include "pchmanagerclientproxy.h" -#include "cmbalivemessage.h" +#include "alivemessage.h" #include "messageenvelop.h" #include "pchmanagerserverinterface.h" #include "precompiledheadersupdatedmessage.h" diff --git a/src/libs/clangsupport/pchmanagerserverproxy.cpp b/src/libs/clangsupport/pchmanagerserverproxy.cpp index 079c8890d94..fbf4866542a 100644 --- a/src/libs/clangsupport/pchmanagerserverproxy.cpp +++ b/src/libs/clangsupport/pchmanagerserverproxy.cpp @@ -25,7 +25,7 @@ #include "pchmanagerserverproxy.h" -#include "cmbendmessage.h" +#include "endmessage.h" #include "messageenvelop.h" #include "pchmanagerclientinterface.h" #include "removeprojectpartsmessage.h" diff --git a/src/libs/clangsupport/cmbunregisterprojectsforeditormessage.cpp b/src/libs/clangsupport/projectpartsremovedmessage.cpp similarity index 87% rename from src/libs/clangsupport/cmbunregisterprojectsforeditormessage.cpp rename to src/libs/clangsupport/projectpartsremovedmessage.cpp index 8d109051d6e..8c727fbc4bd 100644 --- a/src/libs/clangsupport/cmbunregisterprojectsforeditormessage.cpp +++ b/src/libs/clangsupport/projectpartsremovedmessage.cpp @@ -23,15 +23,15 @@ ** ****************************************************************************/ -#include "cmbunregisterprojectsforeditormessage.h" +#include "projectpartsremovedmessage.h" #include namespace ClangBackEnd { -QDebug operator<<(QDebug debug, const UnregisterProjectPartsForEditorMessage &message) +QDebug operator<<(QDebug debug, const ProjectPartsRemovedMessage &message) { - debug.nospace() << "UnregisterProjectPartsForEditorMessage("; + debug.nospace() << "ProjectPartsRemovedMessage("; for (const Utf8String &fileNames_ : message.projectPartIds) debug.nospace() << fileNames_ << ", "; diff --git a/src/libs/clangsupport/cmbunregisterprojectsforeditormessage.h b/src/libs/clangsupport/projectpartsremovedmessage.h similarity index 70% rename from src/libs/clangsupport/cmbunregisterprojectsforeditormessage.h rename to src/libs/clangsupport/projectpartsremovedmessage.h index eaace726b84..754298aa0d8 100644 --- a/src/libs/clangsupport/cmbunregisterprojectsforeditormessage.h +++ b/src/libs/clangsupport/projectpartsremovedmessage.h @@ -33,30 +33,31 @@ namespace ClangBackEnd { -class CLANGSUPPORT_EXPORT UnregisterProjectPartsForEditorMessage +class CLANGSUPPORT_EXPORT ProjectPartsRemovedMessage { public: - UnregisterProjectPartsForEditorMessage() = default; - UnregisterProjectPartsForEditorMessage(const Utf8StringVector &projectPartIds) + ProjectPartsRemovedMessage() = default; + ProjectPartsRemovedMessage(const Utf8StringVector &projectPartIds) : projectPartIds(projectPartIds) { } - friend QDataStream &operator<<(QDataStream &out, const UnregisterProjectPartsForEditorMessage &message) + friend QDataStream &operator<<(QDataStream &out, const ProjectPartsRemovedMessage &message) { out << message.projectPartIds; return out; } - friend QDataStream &operator>>(QDataStream &in, UnregisterProjectPartsForEditorMessage &message) + friend QDataStream &operator>>(QDataStream &in, ProjectPartsRemovedMessage &message) { in >> message.projectPartIds; return in; } - friend bool operator==(const UnregisterProjectPartsForEditorMessage &first, const UnregisterProjectPartsForEditorMessage &second) + friend bool operator==(const ProjectPartsRemovedMessage &first, + const ProjectPartsRemovedMessage &second) { return first.projectPartIds == second.projectPartIds; } @@ -65,7 +66,7 @@ public: Utf8StringVector projectPartIds; }; -CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const UnregisterProjectPartsForEditorMessage &message); +CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const ProjectPartsRemovedMessage &message); -DECLARE_MESSAGE(UnregisterProjectPartsForEditorMessage); +DECLARE_MESSAGE(ProjectPartsRemovedMessage); } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/cmbregisterprojectsforeditormessage.cpp b/src/libs/clangsupport/projectpartsupdatedmessage.cpp similarity index 88% rename from src/libs/clangsupport/cmbregisterprojectsforeditormessage.cpp rename to src/libs/clangsupport/projectpartsupdatedmessage.cpp index 8a57c6e8d7b..7550ea81546 100644 --- a/src/libs/clangsupport/cmbregisterprojectsforeditormessage.cpp +++ b/src/libs/clangsupport/projectpartsupdatedmessage.cpp @@ -23,15 +23,15 @@ ** ****************************************************************************/ -#include "cmbregisterprojectsforeditormessage.h" +#include "projectpartsupdatedmessage.h" #include namespace ClangBackEnd { -QDebug operator<<(QDebug debug, const RegisterProjectPartsForEditorMessage &message) +QDebug operator<<(QDebug debug, const ProjectPartsUpdatedMessage &message) { - debug.nospace() << "RegisterProjectPartsForEditorMessage("; + debug.nospace() << "ProjectPartsUpdatedMessage("; for (const ProjectPartContainer &projectContainer : message.projectContainers) debug.nospace() << projectContainer<< ", "; diff --git a/src/libs/clangsupport/cmbregisterprojectsforeditormessage.h b/src/libs/clangsupport/projectpartsupdatedmessage.h similarity index 71% rename from src/libs/clangsupport/cmbregisterprojectsforeditormessage.h rename to src/libs/clangsupport/projectpartsupdatedmessage.h index fe22127c446..07981a6eb62 100644 --- a/src/libs/clangsupport/cmbregisterprojectsforeditormessage.h +++ b/src/libs/clangsupport/projectpartsupdatedmessage.h @@ -32,30 +32,31 @@ namespace ClangBackEnd { -class RegisterProjectPartsForEditorMessage +class ProjectPartsUpdatedMessage { public: - RegisterProjectPartsForEditorMessage() = default; - RegisterProjectPartsForEditorMessage(const QVector &projectContainers) + ProjectPartsUpdatedMessage() = default; + ProjectPartsUpdatedMessage(const QVector &projectContainers) : projectContainers(projectContainers) { } - friend QDataStream &operator<<(QDataStream &out, const RegisterProjectPartsForEditorMessage &message) + friend QDataStream &operator<<(QDataStream &out, const ProjectPartsUpdatedMessage &message) { out << message.projectContainers; return out; } - friend QDataStream &operator>>(QDataStream &in, RegisterProjectPartsForEditorMessage &message) + friend QDataStream &operator>>(QDataStream &in, ProjectPartsUpdatedMessage &message) { in >> message.projectContainers; return in; } - friend bool operator==(const RegisterProjectPartsForEditorMessage &first, const RegisterProjectPartsForEditorMessage &second) + friend bool operator==(const ProjectPartsUpdatedMessage &first, + const ProjectPartsUpdatedMessage &second) { return first.projectContainers == second.projectContainers; } @@ -64,7 +65,7 @@ public: QVector projectContainers; }; -CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const RegisterProjectPartsForEditorMessage &message); +CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const ProjectPartsUpdatedMessage &message); -DECLARE_MESSAGE(RegisterProjectPartsForEditorMessage); +DECLARE_MESSAGE(ProjectPartsUpdatedMessage); } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/refactoringclientproxy.cpp b/src/libs/clangsupport/refactoringclientproxy.cpp index 576489aa250..28195122bcb 100644 --- a/src/libs/clangsupport/refactoringclientproxy.cpp +++ b/src/libs/clangsupport/refactoringclientproxy.cpp @@ -25,7 +25,7 @@ #include "refactoringclientproxy.h" -#include "cmbalivemessage.h" +#include "alivemessage.h" #include "messageenvelop.h" #include "refactoringserverinterface.h" #include "clangrefactoringclientmessages.h" diff --git a/src/libs/clangsupport/requestdocumentannotations.cpp b/src/libs/clangsupport/requestannotationsmessage.cpp similarity index 88% rename from src/libs/clangsupport/requestdocumentannotations.cpp rename to src/libs/clangsupport/requestannotationsmessage.cpp index 83265a8fcc0..45392f92677 100644 --- a/src/libs/clangsupport/requestdocumentannotations.cpp +++ b/src/libs/clangsupport/requestannotationsmessage.cpp @@ -23,15 +23,15 @@ ** ****************************************************************************/ -#include "requestdocumentannotations.h" +#include "requestannotationsmessage.h" #include namespace ClangBackEnd { -QDebug operator<<(QDebug debug, const RequestDocumentAnnotationsMessage &message) +QDebug operator<<(QDebug debug, const RequestAnnotationsMessage &message) { - debug.nospace() << "RequestDocumentAnnotationsMessage(" + debug.nospace() << "RequestAnnotationsMessage(" << message.fileContainer << ")"; diff --git a/src/libs/clangsupport/requestdocumentannotations.h b/src/libs/clangsupport/requestannotationsmessage.h similarity index 77% rename from src/libs/clangsupport/requestdocumentannotations.h rename to src/libs/clangsupport/requestannotationsmessage.h index 395f66ae4af..24be10d1245 100644 --- a/src/libs/clangsupport/requestdocumentannotations.h +++ b/src/libs/clangsupport/requestannotationsmessage.h @@ -29,30 +29,31 @@ namespace ClangBackEnd { -class RequestDocumentAnnotationsMessage +class RequestAnnotationsMessage { public: - RequestDocumentAnnotationsMessage() = default; - RequestDocumentAnnotationsMessage(const FileContainer &fileContainer) + RequestAnnotationsMessage() = default; + RequestAnnotationsMessage(const FileContainer &fileContainer) : fileContainer(fileContainer) { } - friend QDataStream &operator<<(QDataStream &out, const RequestDocumentAnnotationsMessage &message) + friend QDataStream &operator<<(QDataStream &out, const RequestAnnotationsMessage &message) { out << message.fileContainer; return out; } - friend QDataStream &operator>>(QDataStream &in, RequestDocumentAnnotationsMessage &message) + friend QDataStream &operator>>(QDataStream &in, RequestAnnotationsMessage &message) { in >> message.fileContainer; return in; } - friend bool operator==(const RequestDocumentAnnotationsMessage &first, const RequestDocumentAnnotationsMessage &second) + friend bool operator==(const RequestAnnotationsMessage &first, + const RequestAnnotationsMessage &second) { return first.fileContainer == second.fileContainer; } @@ -61,7 +62,7 @@ public: FileContainer fileContainer; }; -CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const RequestDocumentAnnotationsMessage &message); +CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const RequestAnnotationsMessage &message); -DECLARE_MESSAGE(RequestDocumentAnnotationsMessage); +DECLARE_MESSAGE(RequestAnnotationsMessage); } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/cmbcompletecodemessage.cpp b/src/libs/clangsupport/requestcompletionsmessage.cpp similarity index 88% rename from src/libs/clangsupport/cmbcompletecodemessage.cpp rename to src/libs/clangsupport/requestcompletionsmessage.cpp index a99c6d64bdf..bb2fdcb9825 100644 --- a/src/libs/clangsupport/cmbcompletecodemessage.cpp +++ b/src/libs/clangsupport/requestcompletionsmessage.cpp @@ -23,17 +23,17 @@ ** ****************************************************************************/ -#include "cmbcompletecodemessage.h" +#include "requestcompletionsmessage.h" #include namespace ClangBackEnd { -quint64 CompleteCodeMessage::ticketCounter = 0; +quint64 RequestCompletionsMessage::ticketCounter = 0; -QDebug operator<<(QDebug debug, const CompleteCodeMessage &message) +QDebug operator<<(QDebug debug, const RequestCompletionsMessage &message) { - debug.nospace() << "CompleteCodeMessage("; + debug.nospace() << "RequestCompletionsMessage("; debug.nospace() << message.filePath << ", "; debug.nospace() << message.line << ", "; diff --git a/src/libs/clangsupport/cmbcompletecodemessage.h b/src/libs/clangsupport/requestcompletionsmessage.h similarity index 70% rename from src/libs/clangsupport/cmbcompletecodemessage.h rename to src/libs/clangsupport/requestcompletionsmessage.h index d32287fa934..ff87d920a81 100644 --- a/src/libs/clangsupport/cmbcompletecodemessage.h +++ b/src/libs/clangsupport/requestcompletionsmessage.h @@ -33,27 +33,27 @@ namespace ClangBackEnd { -class CompleteCodeMessage +class RequestCompletionsMessage { public: - CompleteCodeMessage() = default; - CompleteCodeMessage(const Utf8String &filePath, - quint32 line, - quint32 column, - const Utf8String &projectPartId, - qint32 funcNameStartLine = -1, - qint32 funcNameStartColumn = -1) - : filePath(filePath), - projectPartId(projectPartId), - ticketNumber(++ticketCounter), - line(line), - column(column), - funcNameStartLine(funcNameStartLine), - funcNameStartColumn(funcNameStartColumn) + RequestCompletionsMessage() = default; + RequestCompletionsMessage(const Utf8String &filePath, + quint32 line, + quint32 column, + const Utf8String &projectPartId, + qint32 funcNameStartLine = -1, + qint32 funcNameStartColumn = -1) + : filePath(filePath) + , projectPartId(projectPartId) + , ticketNumber(++ticketCounter) + , line(line) + , column(column) + , funcNameStartLine(funcNameStartLine) + , funcNameStartColumn(funcNameStartColumn) { } - friend QDataStream &operator<<(QDataStream &out, const CompleteCodeMessage &message) + friend QDataStream &operator<<(QDataStream &out, const RequestCompletionsMessage &message) { out << message.filePath; out << message.projectPartId; @@ -66,7 +66,7 @@ public: return out; } - friend QDataStream &operator>>(QDataStream &in, CompleteCodeMessage &message) + friend QDataStream &operator>>(QDataStream &in, RequestCompletionsMessage &message) { in >> message.filePath; in >> message.projectPartId; @@ -79,7 +79,8 @@ public: return in; } - friend bool operator==(const CompleteCodeMessage &first, const CompleteCodeMessage &second) + friend bool operator==(const RequestCompletionsMessage &first, + const RequestCompletionsMessage &second) { return first.ticketNumber == second.ticketNumber && first.filePath == second.filePath @@ -101,7 +102,7 @@ public: qint32 funcNameStartColumn = -1; }; -CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const CompleteCodeMessage &message); +CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const RequestCompletionsMessage &message); -DECLARE_MESSAGE(CompleteCodeMessage); +DECLARE_MESSAGE(RequestCompletionsMessage); } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/updatetranslationunitsforeditormessage.cpp b/src/libs/clangsupport/unsavedfilesremovedmessage.cpp similarity index 87% rename from src/libs/clangsupport/updatetranslationunitsforeditormessage.cpp rename to src/libs/clangsupport/unsavedfilesremovedmessage.cpp index 9c05cb43e7e..8da5ca1c1b9 100644 --- a/src/libs/clangsupport/updatetranslationunitsforeditormessage.cpp +++ b/src/libs/clangsupport/unsavedfilesremovedmessage.cpp @@ -23,15 +23,15 @@ ** ****************************************************************************/ -#include "updatetranslationunitsforeditormessage.h" +#include "unsavedfilesremovedmessage.h" #include namespace ClangBackEnd { -QDebug operator<<(QDebug debug, const UpdateTranslationUnitsForEditorMessage &message) +QDebug operator<<(QDebug debug, const UnsavedFilesRemovedMessage &message) { - debug.nospace() << "UpdateTranslationUnitsForEditorMessage("; + debug.nospace() << "UnsavedFilesRemovedMessage("; for (const FileContainer &fileContainer : message.fileContainers) debug.nospace() << fileContainer<< ", "; diff --git a/src/libs/clangsupport/unregisterunsavedfilesforeditormessage.h b/src/libs/clangsupport/unsavedfilesremovedmessage.h similarity index 70% rename from src/libs/clangsupport/unregisterunsavedfilesforeditormessage.h rename to src/libs/clangsupport/unsavedfilesremovedmessage.h index 92b6c13bf10..58714b407f2 100644 --- a/src/libs/clangsupport/unregisterunsavedfilesforeditormessage.h +++ b/src/libs/clangsupport/unsavedfilesremovedmessage.h @@ -31,30 +31,31 @@ namespace ClangBackEnd { -class UnregisterUnsavedFilesForEditorMessage +class UnsavedFilesRemovedMessage { public: - UnregisterUnsavedFilesForEditorMessage() = default; - UnregisterUnsavedFilesForEditorMessage(const QVector &fileContainers) + UnsavedFilesRemovedMessage() = default; + UnsavedFilesRemovedMessage(const QVector &fileContainers) : fileContainers(fileContainers) { } - friend QDataStream &operator<<(QDataStream &out, const UnregisterUnsavedFilesForEditorMessage &message) + friend QDataStream &operator<<(QDataStream &out, const UnsavedFilesRemovedMessage &message) { out << message.fileContainers; return out; } - friend QDataStream &operator>>(QDataStream &in, UnregisterUnsavedFilesForEditorMessage &message) + friend QDataStream &operator>>(QDataStream &in, UnsavedFilesRemovedMessage &message) { in >> message.fileContainers; return in; } - friend bool operator==(const UnregisterUnsavedFilesForEditorMessage &first, const UnregisterUnsavedFilesForEditorMessage &second) + friend bool operator==(const UnsavedFilesRemovedMessage &first, + const UnsavedFilesRemovedMessage &second) { return first.fileContainers == second.fileContainers; } @@ -63,7 +64,7 @@ public: QVector fileContainers; }; -CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const UnregisterUnsavedFilesForEditorMessage &message); +CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const UnsavedFilesRemovedMessage &message); -DECLARE_MESSAGE(UnregisterUnsavedFilesForEditorMessage) +DECLARE_MESSAGE(UnsavedFilesRemovedMessage) } // namespace ClangBackEnd diff --git a/src/libs/clangsupport/unregisterunsavedfilesforeditormessage.cpp b/src/libs/clangsupport/unsavedfilesupdatedmessage.cpp similarity index 87% rename from src/libs/clangsupport/unregisterunsavedfilesforeditormessage.cpp rename to src/libs/clangsupport/unsavedfilesupdatedmessage.cpp index cb1d3ed3b97..80000a65664 100644 --- a/src/libs/clangsupport/unregisterunsavedfilesforeditormessage.cpp +++ b/src/libs/clangsupport/unsavedfilesupdatedmessage.cpp @@ -23,15 +23,15 @@ ** ****************************************************************************/ -#include "unregisterunsavedfilesforeditormessage.h" +#include "unsavedfilesupdatedmessage.h" #include namespace ClangBackEnd { -QDebug operator<<(QDebug debug, const UnregisterUnsavedFilesForEditorMessage &message) +QDebug operator<<(QDebug debug, const UnsavedFilesUpdatedMessage &message) { - debug.nospace() << "UnregisterUnsavedFilesForEditorMessage("; + debug.nospace() << "UnsavedFilesUpdatedMessage("; for (const FileContainer &fileContainer : message.fileContainers) debug.nospace() << fileContainer<< ", "; diff --git a/src/libs/clangsupport/cmbunregistertranslationunitsforeditormessage.h b/src/libs/clangsupport/unsavedfilesupdatedmessage.h similarity index 68% rename from src/libs/clangsupport/cmbunregistertranslationunitsforeditormessage.h rename to src/libs/clangsupport/unsavedfilesupdatedmessage.h index bdf91dac4e6..5d796f7ae00 100644 --- a/src/libs/clangsupport/cmbunregistertranslationunitsforeditormessage.h +++ b/src/libs/clangsupport/unsavedfilesupdatedmessage.h @@ -25,38 +25,37 @@ #pragma once -#include "clangsupport_global.h" - #include "filecontainer.h" #include namespace ClangBackEnd { -class UnregisterTranslationUnitsForEditorMessage +class UnsavedFilesUpdatedMessage { public: - UnregisterTranslationUnitsForEditorMessage() = default; - UnregisterTranslationUnitsForEditorMessage(const QVector &fileContainers) + UnsavedFilesUpdatedMessage() = default; + UnsavedFilesUpdatedMessage(const QVector &fileContainers) : fileContainers(fileContainers) { } - friend QDataStream &operator<<(QDataStream &out, const UnregisterTranslationUnitsForEditorMessage &message) + friend QDataStream &operator<<(QDataStream &out, const UnsavedFilesUpdatedMessage &message) { out << message.fileContainers; return out; } - friend QDataStream &operator>>(QDataStream &in, UnregisterTranslationUnitsForEditorMessage &message) + friend QDataStream &operator>>(QDataStream &in, UnsavedFilesUpdatedMessage &message) { in >> message.fileContainers; return in; } - friend bool operator==(const UnregisterTranslationUnitsForEditorMessage &first, const UnregisterTranslationUnitsForEditorMessage &second) + friend bool operator==(const UnsavedFilesUpdatedMessage &first, + const UnsavedFilesUpdatedMessage &second) { return first.fileContainers == second.fileContainers; } @@ -65,7 +64,7 @@ public: QVector fileContainers; }; -CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const UnregisterTranslationUnitsForEditorMessage &message); +CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const UnsavedFilesUpdatedMessage &message); -DECLARE_MESSAGE(UnregisterTranslationUnitsForEditorMessage); +DECLARE_MESSAGE(UnsavedFilesUpdatedMessage); } // namespace ClangBackEnd diff --git a/src/libs/qmldebug/qmldebugconnectionmanager.cpp b/src/libs/qmldebug/qmldebugconnectionmanager.cpp index a13cb0f3ccc..2901e21d9d0 100644 --- a/src/libs/qmldebug/qmldebugconnectionmanager.cpp +++ b/src/libs/qmldebug/qmldebugconnectionmanager.cpp @@ -71,6 +71,11 @@ void QmlDebugConnectionManager::disconnectFromServer() stopConnectionTimer(); } +bool QmlDebugConnectionManager::isConnecting() const +{ + return m_connectionTimer.isActive(); +} + static quint16 port16(const QUrl &url) { const int port32 = url.port(); diff --git a/src/libs/qmldebug/qmldebugconnectionmanager.h b/src/libs/qmldebug/qmldebugconnectionmanager.h index b1b731c4bc6..2bab6b082c0 100644 --- a/src/libs/qmldebug/qmldebugconnectionmanager.h +++ b/src/libs/qmldebug/qmldebugconnectionmanager.h @@ -44,6 +44,7 @@ public: void connectToServer(const QUrl &server); void disconnectFromServer(); + bool isConnecting() const; bool isConnected() const; void setRetryParams(int interval, int maxAttempts); diff --git a/src/libs/tracing/qml/Detail.qml b/src/libs/tracing/qml/Detail.qml index a1cbe86f10b..a8ba0244c85 100644 --- a/src/libs/tracing/qml/Detail.qml +++ b/src/libs/tracing/qml/Detail.qml @@ -30,6 +30,6 @@ TimelineText { property int valueWidth: 170 property int labelWidth: implicitWidth font.bold: isLabel - elide: Text.ElideRight + elide: isLabel ? Text.ElideNone : Text.ElideRight width: isLabel ? labelWidth : valueWidth } diff --git a/src/libs/tracing/qml/RangeDetails.qml b/src/libs/tracing/qml/RangeDetails.qml index 22d5811f489..ccb86a5c3ce 100644 --- a/src/libs/tracing/qml/RangeDetails.qml +++ b/src/libs/tracing/qml/RangeDetails.qml @@ -23,7 +23,7 @@ ** ****************************************************************************/ -import QtQuick 2.1 +import QtQuick 2.9 import TimelineTheme 1.0 Item { @@ -153,7 +153,9 @@ Item { spacing: innerMargin columns: 2 - property int minimumWidth: { + + property int minimumWidth: minimumInnerWidth + onPositioningComplete: { // max(width of longest label * 2, minimumInnerWidth) var result = minimumInnerWidth; for (var i = 0; i < children.length; ++i) { @@ -161,10 +163,10 @@ Item { result = Math.max(children[i].implicitWidth * 2 + innerMargin, result); } - return result + 2 * outerMargin; + minimumWidth = result + 2 * outerMargin; } - property int labelWidth: (minimumWidth - innerMargin) / 2 - outerMargin + property int labelWidth: Math.ceil((minimumWidth - innerMargin) / 2) - outerMargin property int valueWidth: dragHandle.x - labelWidth - innerMargin - outerMargin onMinimumWidthChanged: { diff --git a/src/libs/tracing/timelinetracefile.cpp b/src/libs/tracing/timelinetracefile.cpp index 858cddbb9d8..52fc962360f 100644 --- a/src/libs/tracing/timelinetracefile.cpp +++ b/src/libs/tracing/timelinetracefile.cpp @@ -67,6 +67,11 @@ void TimelineTraceFile::fail(const QString &message) m_future.cancel(); } +void TimelineTraceFile::finish() +{ + m_future.reportFinished(); +} + bool TimelineTraceFile::isCanceled() const { return m_future.isCanceled(); diff --git a/src/libs/tracing/timelinetracefile.h b/src/libs/tracing/timelinetracefile.h index 4c1a255ba7c..6be162f28a4 100644 --- a/src/libs/tracing/timelinetracefile.h +++ b/src/libs/tracing/timelinetracefile.h @@ -64,7 +64,9 @@ public: virtual void save(QIODevice *device) = 0; virtual void load(QIODevice *device) = 0; + void fail(const QString &message); + void finish(); void setTraceStart(qint64 traceStart) { m_traceStart = traceStart; } qint64 traceStart() const { return m_traceStart; } diff --git a/src/libs/tracing/timelinetracemanager.cpp b/src/libs/tracing/timelinetracemanager.cpp index 61b9e6257fd..9504d7d60ad 100644 --- a/src/libs/tracing/timelinetracemanager.cpp +++ b/src/libs/tracing/timelinetracemanager.cpp @@ -357,7 +357,6 @@ void TimelineTraceManager::clearEventStorage() d->reset(); if (d->notesModel) d->notesModel->clear(); - setVisibleFeatures(0); setRecordedFeatures(0); d->eventStorage->clear(); } @@ -385,7 +384,6 @@ void TimelineTraceManager::restrictByFilter(TraceEventFilter filter) d->notesModel->stash(); d->reset(); - setVisibleFeatures(0); QFutureInterface future; replayEvents(filter(std::bind(&TimelineTraceManagerPrivate::dispatch, d, diff --git a/src/libs/utils/linecolumn.h b/src/libs/utils/linecolumn.h index 003ba3ef342..1be72c281de 100644 --- a/src/libs/utils/linecolumn.h +++ b/src/libs/utils/linecolumn.h @@ -51,6 +51,11 @@ public: return first.isValid() && first.line == second.line && first.column == second.column; } + friend bool operator!=(LineColumn first, LineColumn second) + { + return !(first == second); + } + public: int line = -1; int column = -1; diff --git a/src/libs/utils/runextensions.h b/src/libs/utils/runextensions.h index 49752234630..14cf5e49223 100644 --- a/src/libs/utils/runextensions.h +++ b/src/libs/utils/runextensions.h @@ -26,6 +26,7 @@ #pragma once #include "functiontraits.h" +#include "optional.h" #include "utils_global.h" #include @@ -57,6 +58,9 @@ struct hasCallOperator }; namespace Utils { + +using StackSizeInBytes = Utils::optional; + namespace Internal { /* @@ -388,6 +392,34 @@ private: QRunnable *m_runnable; }; +template::type> +QFuture runAsync_internal(QThreadPool *pool, + StackSizeInBytes stackSize, + QThread::Priority priority, + Function &&function, + Args &&... args) +{ + Q_ASSERT(!(pool && stackSize)); // stack size cannot be changed once a thread is started + auto job = new Internal::AsyncJob + (std::forward(function), std::forward(args)...); + job->setThreadPriority(priority); + QFuture future = job->future(); + if (pool) { + job->setThreadPool(pool); + pool->start(job); + } else { + auto thread = new Internal::RunnableThread(job); + if (stackSize) + thread->setStackSize(stackSize.value()); + thread->moveToThread(qApp->thread()); // make sure thread gets deleteLater on main thread + QObject::connect(thread, &QThread::finished, thread, &QObject::deleteLater); + thread->start(priority); + } + return future; +} + } // Internal /*! @@ -418,20 +450,11 @@ template runAsync(QThreadPool *pool, QThread::Priority priority, Function &&function, Args&&... args) { - auto job = new Internal::AsyncJob - (std::forward(function), std::forward(args)...); - job->setThreadPriority(priority); - QFuture future = job->future(); - if (pool) { - job->setThreadPool(pool); - pool->start(job); - } else { - auto thread = new Internal::RunnableThread(job); - thread->moveToThread(qApp->thread()); // make sure thread gets deleteLater on main thread - QObject::connect(thread, &QThread::finished, thread, &QObject::deleteLater); - thread->start(priority); - } - return future; + return Internal::runAsync_internal(pool, + StackSizeInBytes(), + priority, + std::forward(function), + std::forward(args)...); } /*! @@ -448,6 +471,47 @@ runAsync(QThread::Priority priority, Function &&function, Args&&... args) std::forward(function), std::forward(args)...); } +/*! + Runs \a function with \a args in a new thread with given thread \a stackSize and + thread priority QThread::InheritPriority . + \sa runAsync(QThreadPool*,QThread::Priority,Function&&,Args&&...) + \sa QThread::Priority + \sa QThread::setStackSize +*/ +template::type> +QFuture runAsync(Utils::StackSizeInBytes stackSize, Function &&function, Args &&... args) +{ + return Internal::runAsync_internal(static_cast(nullptr), + stackSize, + QThread::InheritPriority, + std::forward(function), + std::forward(args)...); +} + +/*! + Runs \a function with \a args in a new thread with given thread \a stackSize and + given thread \a priority. + \sa runAsync(QThreadPool*,QThread::Priority,Function&&,Args&&...) + \sa QThread::Priority + \sa QThread::setStackSize +*/ +template::type> +QFuture runAsync(Utils::StackSizeInBytes stackSize, + QThread::Priority priority, + Function &&function, + Args &&... args) +{ + return Internal::runAsync_internal(static_cast(nullptr), + stackSize, + priority, + std::forward(function), + std::forward(args)...); +} + /*! Runs \a function with \a args in a new thread with thread priority QThread::InheritPriority. \sa runAsync(QThreadPool*,QThread::Priority,Function&&,Args&&...) diff --git a/src/plugins/android/androidrunconfiguration.cpp b/src/plugins/android/androidrunconfiguration.cpp index ac1a6858bec..65505992fa6 100644 --- a/src/plugins/android/androidrunconfiguration.cpp +++ b/src/plugins/android/androidrunconfiguration.cpp @@ -115,6 +115,7 @@ AndroidRunConfiguration::AndroidRunConfiguration(Target *target, Core::Id id) amStartArgsAspect->setSettingsKey("Android.AmStartArgsKey"); amStartArgsAspect->setLabelText(tr("Activity manager start options:")); amStartArgsAspect->setDisplayStyle(BaseStringAspect::LineEditDisplay); + amStartArgsAspect->setHistoryCompleter("Android.AmStartArgs.History"); addExtraAspect(amStartArgsAspect); auto preStartShellCmdAspect = new BaseStringListAspect(this); diff --git a/src/plugins/android/androidrunnerworker.cpp b/src/plugins/android/androidrunnerworker.cpp index 62eedaa4c39..39ab1a25326 100644 --- a/src/plugins/android/androidrunnerworker.cpp +++ b/src/plugins/android/androidrunnerworker.cpp @@ -422,7 +422,7 @@ void AndroidRunnerWorker::asyncStartHelper() runAdb(removeForward); if (!runAdb({"forward", port, port})) { emit remoteProcessFinished(tr("Failed to forward QML debugging ports. Reason: %1.") - .arg(m_lastRunAdbError)); + .arg(m_lastRunAdbError) + "\n" + m_lastRunAdbRawOutput); return; } m_afterFinishAdbCommands.push_back(removeForward.join(' ')); diff --git a/src/plugins/autotest/testconfiguration.cpp b/src/plugins/autotest/testconfiguration.cpp index 95e6fb73886..5217ece730c 100644 --- a/src/plugins/autotest/testconfiguration.cpp +++ b/src/plugins/autotest/testconfiguration.cpp @@ -193,15 +193,12 @@ void TestConfiguration::completeTestInformation(TestRunMode runMode) // not the best approach - but depending on the build system and whether the executables // are going to get installed or not we have to soften the condition... const QString currentExecutable = ensureExeEnding(runnable.executable); - const QString currentBST = runConfig->buildKey() + '|'; + const QString currentBST = runConfig->buildKey(); qCDebug(LOG) << " CurrentExecutable" << currentExecutable; qCDebug(LOG) << " BST of RunConfig" << currentBST; - const bool isQbs = runConfig->id().toString().startsWith("Qbs.RunConfiguration:"); // BAD! if ((localExecutable == currentExecutable) || (deployedExecutable == currentExecutable) - || (isQbs && Utils::anyOf(buildSystemTargets, [currentBST] (const QString &b) { - return b.startsWith(currentBST); - }))) { + || (buildSystemTargets.contains(currentBST))) { qCDebug(LOG) << " Using this RunConfig."; m_origRunConfig = runConfig; m_runnable = runnable; @@ -240,7 +237,7 @@ void TestConfiguration::completeTestInformation(TestRunMode runMode) } if (m_displayName.isEmpty()) // happens e.g. when guessing the TestConfiguration or error - m_displayName = (*buildSystemTargets.begin()).split('|').first(); + m_displayName = (*buildSystemTargets.begin()); } /** diff --git a/src/plugins/clangcodemodel/clangbackendcommunicator.cpp b/src/plugins/clangcodemodel/clangbackendcommunicator.cpp index f0beb302b7d..8bdea6917fc 100644 --- a/src/plugins/clangcodemodel/clangbackendcommunicator.cpp +++ b/src/plugins/clangcodemodel/clangbackendcommunicator.cpp @@ -74,19 +74,23 @@ class DummyBackendSender : public ClangBackEnd::ClangCodeModelServerInterface { public: void end() override {} - void registerTranslationUnitsForEditor(const RegisterTranslationUnitForEditorMessage &) override {} - void updateTranslationUnitsForEditor(const UpdateTranslationUnitsForEditorMessage &) override {} - void unregisterTranslationUnitsForEditor(const UnregisterTranslationUnitsForEditorMessage &) override {} - void registerProjectPartsForEditor(const RegisterProjectPartsForEditorMessage &) override {} - void unregisterProjectPartsForEditor(const UnregisterProjectPartsForEditorMessage &) override {} - void registerUnsavedFilesForEditor(const RegisterUnsavedFilesForEditorMessage &) override {} - void unregisterUnsavedFilesForEditor(const UnregisterUnsavedFilesForEditorMessage &) override {} - void completeCode(const CompleteCodeMessage &) override {} - void requestDocumentAnnotations(const RequestDocumentAnnotationsMessage &) override {} + + void documentsOpened(const DocumentsOpenedMessage &) override {} + void documentsChanged(const DocumentsChangedMessage &) override {} + void documentsClosed(const DocumentsClosedMessage &) override {} + void documentVisibilityChanged(const DocumentVisibilityChangedMessage &) override {} + + void projectPartsUpdated(const ProjectPartsUpdatedMessage &) override {} + void projectPartsRemoved(const ProjectPartsRemovedMessage &) override {} + + void unsavedFilesUpdated(const UnsavedFilesUpdatedMessage &) override {} + void unsavedFilesRemoved(const UnsavedFilesRemovedMessage &) override {} + + void requestCompletions(const RequestCompletionsMessage &) override {} + void requestAnnotations(const RequestAnnotationsMessage &) override {} void requestReferences(const RequestReferencesMessage &) override {} void requestFollowSymbol(const RequestFollowSymbolMessage &) override {} void requestToolTip(const RequestToolTipMessage &) override {} - void updateVisibleTranslationUnits(const UpdateVisibleTranslationUnitsMessage &) override {} }; BackendCommunicator::BackendCommunicator() @@ -161,12 +165,12 @@ static QVector toProjectPartContainers( return projectPartContainers; } -void BackendCommunicator::registerFallbackProjectPart() +void BackendCommunicator::projectPartsUpdatedForFallback() { const auto projectPart = CppTools::CppModelManager::instance()->fallbackProjectPart(); const auto projectPartContainer = toProjectPartContainer(projectPart); - registerProjectPartsForEditor({projectPartContainer}); + projectPartsUpdated({projectPartContainer}); } namespace { @@ -232,36 +236,36 @@ Utf8StringVector visibleCppEditorDocumentsFilePaths() } -void BackendCommunicator::updateTranslationUnitVisiblity() +void BackendCommunicator::documentVisibilityChanged() { - updateTranslationUnitVisiblity(currentCppEditorDocumentFilePath(), visibleCppEditorDocumentsFilePaths()); + documentVisibilityChanged(currentCppEditorDocumentFilePath(), visibleCppEditorDocumentsFilePaths()); } bool BackendCommunicator::isNotWaitingForCompletion() const { - return !m_receiver.isExpectingCodeCompletedMessage(); + return !m_receiver.isExpectingCompletionsMessage(); } -void BackendCommunicator::updateTranslationUnitVisiblity(const Utf8String ¤tEditorFilePath, - const Utf8StringVector &visibleEditorsFilePaths) +void BackendCommunicator::documentVisibilityChanged(const Utf8String ¤tEditorFilePath, + const Utf8StringVector &visibleEditorsFilePaths) { - const UpdateVisibleTranslationUnitsMessage message(currentEditorFilePath, visibleEditorsFilePaths); - m_sender->updateVisibleTranslationUnits(message); + const DocumentVisibilityChangedMessage message(currentEditorFilePath, visibleEditorsFilePaths); + m_sender->documentVisibilityChanged(message); } -void BackendCommunicator::registerCurrentProjectParts() +void BackendCommunicator::projectPartsUpdatedForCurrentProjects() { using namespace CppTools; const QList projectInfos = CppModelManager::instance()->projectInfos(); foreach (const ProjectInfo &projectInfo, projectInfos) - registerProjectsParts(projectInfo.projectParts()); + projectPartsUpdated(projectInfo.projectParts()); } void BackendCommunicator::restoreCppEditorDocuments() { resetCppEditorDocumentProcessors(); - registerVisibleCppEditorDocumentAndMarkInvisibleDirty(); + CppTools::CppModelManager::instance()->updateCppEditorDocuments(); } void BackendCommunicator::resetCppEditorDocumentProcessors() @@ -273,12 +277,7 @@ void BackendCommunicator::resetCppEditorDocumentProcessors() cppEditorDocument->resetProcessor(); } -void BackendCommunicator::registerVisibleCppEditorDocumentAndMarkInvisibleDirty() -{ - CppTools::CppModelManager::instance()->updateCppEditorDocuments(); -} - -void BackendCommunicator::registerCurrentCodeModelUiHeaders() +void BackendCommunicator::unsavedFilesUpdatedForUiHeaders() { using namespace CppTools; @@ -286,53 +285,55 @@ void BackendCommunicator::registerCurrentCodeModelUiHeaders() foreach (const AbstractEditorSupport *es, editorSupports) { const QString mappedPath = ModelManagerSupportClang::instance()->dummyUiHeaderOnDiskPath(es->fileName()); - updateUnsavedFile(mappedPath, es->contents(), es->revision()); + unsavedFilesUpdated(mappedPath, es->contents(), es->revision()); } } -void BackendCommunicator::registerProjectsParts(const QVector projectParts) +void BackendCommunicator::projectPartsUpdated(const QVector projectParts) { const auto projectPartContainers = toProjectPartContainers(projectParts); - registerProjectPartsForEditor(projectPartContainers); + projectPartsUpdated(projectPartContainers); } -void BackendCommunicator::updateTranslationUnitFromCppEditorDocument(const QString &filePath) +void BackendCommunicator::documentsChangedFromCppEditorDocument(const QString &filePath) { const CppTools::CppEditorDocumentHandle *document = ClangCodeModel::Utils::cppDocument(filePath); - updateTranslationUnit(filePath, document->contents(), document->revision()); + documentsChanged(filePath, document->contents(), document->revision()); } -void BackendCommunicator::updateUnsavedFileFromCppEditorDocument(const QString &filePath) +void BackendCommunicator::unsavedFielsUpdatedFromCppEditorDocument(const QString &filePath) { const CppTools::CppEditorDocumentHandle *document = ClangCodeModel::Utils::cppDocument(filePath); - updateUnsavedFile(filePath, document->contents(), document->revision()); + unsavedFilesUpdated(filePath, document->contents(), document->revision()); } -void BackendCommunicator::updateTranslationUnit(const QString &filePath, - const QByteArray &contents, - uint documentRevision) +void BackendCommunicator::documentsChanged(const QString &filePath, + const QByteArray &contents, + uint documentRevision) { const bool hasUnsavedContent = true; - updateTranslationUnitsForEditor({{filePath, - Utf8String(), - Utf8String::fromByteArray(contents), - hasUnsavedContent, - documentRevision}}); + documentsChanged({{filePath, + Utf8String(), + Utf8String::fromByteArray(contents), + hasUnsavedContent, + documentRevision}}); } -void BackendCommunicator::updateUnsavedFile(const QString &filePath, const QByteArray &contents, uint documentRevision) +void BackendCommunicator::unsavedFilesUpdated(const QString &filePath, + const QByteArray &contents, + uint documentRevision) { const bool hasUnsavedContent = true; // TODO: Send new only if changed - registerUnsavedFilesForEditor({{filePath, - Utf8String(), - Utf8String::fromByteArray(contents), - hasUnsavedContent, - documentRevision}}); + unsavedFilesUpdated({{filePath, + Utf8String(), + Utf8String::fromByteArray(contents), + hasUnsavedContent, + documentRevision}}); } static bool documentHasChanged(const QString &filePath, uint revision) @@ -349,19 +350,19 @@ static void setLastSentDocumentRevision(const QString &filePath, uint revision) document->sendTracker().setLastSentRevision(int(revision)); } -void BackendCommunicator::updateTranslationUnitWithRevisionCheck(const FileContainer &fileContainer) +void BackendCommunicator::documentsChangedWithRevisionCheck(const FileContainer &fileContainer) { if (documentHasChanged(fileContainer.filePath, fileContainer.documentRevision)) { - updateTranslationUnitsForEditor({fileContainer}); + documentsChanged({fileContainer}); setLastSentDocumentRevision(fileContainer.filePath, fileContainer.documentRevision); } } -void BackendCommunicator::requestDocumentAnnotations(const FileContainer &fileContainer) +void BackendCommunicator::requestAnnotations(const FileContainer &fileContainer) { - const RequestDocumentAnnotationsMessage message(fileContainer); - m_sender->requestDocumentAnnotations(message); + const RequestAnnotationsMessage message(fileContainer); + m_sender->requestAnnotations(message); } QFuture BackendCommunicator::requestReferences( @@ -401,24 +402,22 @@ QFuture BackendCommunicator::requestFollowSymbol( quint32 line, quint32 column) { - const RequestFollowSymbolMessage message(curFileContainer, - line, - column); + const RequestFollowSymbolMessage message(curFileContainer, line, column); m_sender->requestFollowSymbol(message); return m_receiver.addExpectedRequestFollowSymbolMessage(message.ticketNumber); } -void BackendCommunicator::updateTranslationUnitWithRevisionCheck(Core::IDocument *document) +void BackendCommunicator::documentsChangedWithRevisionCheck(Core::IDocument *document) { const auto textDocument = qobject_cast(document); const auto filePath = textDocument->filePath().toString(); const QString projectPartId = CppTools::CppToolsBridge::projectPartIdForFile(filePath); - updateTranslationUnitWithRevisionCheck(FileContainer(filePath, - projectPartId, - Utf8StringVector(), - textDocument->document()->revision())); + documentsChangedWithRevisionCheck(FileContainer(filePath, + projectPartId, + Utf8StringVector(), + textDocument->document()->revision())); } void BackendCommunicator::updateChangeContentStartPosition(const QString &filePath, int position) @@ -427,23 +426,23 @@ void BackendCommunicator::updateChangeContentStartPosition(const QString &filePa document->sendTracker().applyContentChange(position); } -void BackendCommunicator::updateTranslationUnitIfNotCurrentDocument(Core::IDocument *document) +void BackendCommunicator::documentsChangedIfNotCurrentDocument(Core::IDocument *document) { QTC_ASSERT(document, return); if (Core::EditorManager::currentDocument() != document) - updateTranslationUnit(document); + documentsChanged(document); } -void BackendCommunicator::updateTranslationUnit(Core::IDocument *document) +void BackendCommunicator::documentsChanged(Core::IDocument *document) { - updateTranslationUnitFromCppEditorDocument(document->filePath().toString()); + documentsChangedFromCppEditorDocument(document->filePath().toString()); } -void BackendCommunicator::updateUnsavedFile(Core::IDocument *document) +void BackendCommunicator::unsavedFilesUpdated(Core::IDocument *document) { QTC_ASSERT(document, return); - updateUnsavedFileFromCppEditorDocument(document->filePath().toString()); + unsavedFielsUpdatedFromCppEditorDocument(document->filePath().toString()); } void BackendCommunicator::onConnectedToBackend() @@ -511,70 +510,74 @@ void BackendCommunicator::logError(const QString &text) void BackendCommunicator::initializeBackendWithCurrentData() { - registerFallbackProjectPart(); - registerCurrentProjectParts(); - registerCurrentCodeModelUiHeaders(); + projectPartsUpdatedForFallback(); + projectPartsUpdatedForCurrentProjects(); + unsavedFilesUpdatedForUiHeaders(); restoreCppEditorDocuments(); - updateTranslationUnitVisiblity(); + documentVisibilityChanged(); } -void BackendCommunicator::registerTranslationUnitsForEditor(const FileContainers &fileContainers) +void BackendCommunicator::documentsOpened(const FileContainers &fileContainers) { - const RegisterTranslationUnitForEditorMessage message(fileContainers, - currentCppEditorDocumentFilePath(), - visibleCppEditorDocumentsFilePaths()); - m_sender->registerTranslationUnitsForEditor(message); + const DocumentsOpenedMessage message(fileContainers, + currentCppEditorDocumentFilePath(), + visibleCppEditorDocumentsFilePaths()); + m_sender->documentsOpened(message); } -void BackendCommunicator::updateTranslationUnitsForEditor(const FileContainers &fileContainers) +void BackendCommunicator::documentsChanged(const FileContainers &fileContainers) { - const UpdateTranslationUnitsForEditorMessage message(fileContainers); - m_sender->updateTranslationUnitsForEditor(message); + const DocumentsChangedMessage message(fileContainers); + m_sender->documentsChanged(message); } -void BackendCommunicator::unregisterTranslationUnitsForEditor(const FileContainers &fileContainers) +void BackendCommunicator::documentsClosed(const FileContainers &fileContainers) { - const UnregisterTranslationUnitsForEditorMessage message(fileContainers); - m_sender->unregisterTranslationUnitsForEditor(message); + const DocumentsClosedMessage message(fileContainers); + m_sender->documentsClosed(message); } -void BackendCommunicator::registerProjectPartsForEditor( +void BackendCommunicator::projectPartsUpdated( const ProjectPartContainers &projectPartContainers) { - const RegisterProjectPartsForEditorMessage message(projectPartContainers); - m_sender->registerProjectPartsForEditor(message); + const ProjectPartsUpdatedMessage message(projectPartContainers); + m_sender->projectPartsUpdated(message); } -void BackendCommunicator::unregisterProjectPartsForEditor(const QStringList &projectPartIds) +void BackendCommunicator::projectPartsRemoved(const QStringList &projectPartIds) { - const UnregisterProjectPartsForEditorMessage message((Utf8StringVector(projectPartIds))); - m_sender->unregisterProjectPartsForEditor(message); + const ProjectPartsRemovedMessage message((Utf8StringVector(projectPartIds))); + m_sender->projectPartsRemoved(message); } -void BackendCommunicator::registerUnsavedFilesForEditor(const FileContainers &fileContainers) +void BackendCommunicator::unsavedFilesUpdated(const FileContainers &fileContainers) { - const RegisterUnsavedFilesForEditorMessage message(fileContainers); - m_sender->registerUnsavedFilesForEditor(message); + const UnsavedFilesUpdatedMessage message(fileContainers); + m_sender->unsavedFilesUpdated(message); } -void BackendCommunicator::unregisterUnsavedFilesForEditor(const FileContainers &fileContainers) +void BackendCommunicator::unsavedFilesRemoved(const FileContainers &fileContainers) { - const UnregisterUnsavedFilesForEditorMessage message(fileContainers); - m_sender->unregisterUnsavedFilesForEditor(message); + const UnsavedFilesRemovedMessage message(fileContainers); + m_sender->unsavedFilesRemoved(message); } -void BackendCommunicator::completeCode(ClangCompletionAssistProcessor *assistProcessor, - const QString &filePath, - quint32 line, - quint32 column, - const QString &projectFilePath, - qint32 funcNameStartLine, - qint32 funcNameStartColumn) +void BackendCommunicator::requestCompletions(ClangCompletionAssistProcessor *assistProcessor, + const QString &filePath, + quint32 line, + quint32 column, + const QString &projectFilePath, + qint32 funcNameStartLine, + qint32 funcNameStartColumn) { - const CompleteCodeMessage message(filePath, line, column, projectFilePath, funcNameStartLine, - funcNameStartColumn); - m_sender->completeCode(message); - m_receiver.addExpectedCodeCompletedMessage(message.ticketNumber, assistProcessor); + const RequestCompletionsMessage message(filePath, + line, + column, + projectFilePath, + funcNameStartLine, + funcNameStartColumn); + m_sender->requestCompletions(message); + m_receiver.addExpectedCompletionsMessage(message.ticketNumber, assistProcessor); } } // namespace Internal diff --git a/src/plugins/clangcodemodel/clangbackendcommunicator.h b/src/plugins/clangcodemodel/clangbackendcommunicator.h index 941126c7c71..568a68f0979 100644 --- a/src/plugins/clangcodemodel/clangbackendcommunicator.h +++ b/src/plugins/clangcodemodel/clangbackendcommunicator.h @@ -63,14 +63,40 @@ public: BackendCommunicator(); ~BackendCommunicator(); - void registerTranslationUnitsForEditor(const FileContainers &fileContainers); - void updateTranslationUnitsForEditor(const FileContainers &fileContainers); - void unregisterTranslationUnitsForEditor(const FileContainers &fileContainers); - void registerProjectPartsForEditor(const ProjectPartContainers &projectPartContainers); - void unregisterProjectPartsForEditor(const QStringList &projectPartIds); - void registerUnsavedFilesForEditor(const FileContainers &fileContainers); - void unregisterUnsavedFilesForEditor(const FileContainers &fileContainers); - void requestDocumentAnnotations(const ClangBackEnd::FileContainer &fileContainer); + void documentsOpened(const FileContainers &fileContainers); + void documentsChanged(Core::IDocument *document); + void documentsChanged(const QString &filePath, + const QByteArray &contents, + uint documentRevision); + void documentsChanged(const FileContainers &fileContainers); + void documentsChangedFromCppEditorDocument(const QString &filePath); + void documentsChangedIfNotCurrentDocument(Core::IDocument *document); + void documentsChangedWithRevisionCheck(const ClangBackEnd::FileContainer &fileContainer); + void documentsChangedWithRevisionCheck(Core::IDocument *document); + void documentsClosed(const FileContainers &fileContainers); + void documentVisibilityChanged(); + + void projectPartsUpdated(const QVector projectParts); + void projectPartsUpdated(const ProjectPartContainers &projectPartContainers); + void projectPartsUpdatedForFallback(); + void projectPartsRemoved(const QStringList &projectPartIds); + + void unsavedFilesUpdated(Core::IDocument *document); + void unsavedFilesUpdated(const QString &filePath, + const QByteArray &contents, + uint documentRevision); + void unsavedFilesUpdated(const FileContainers &fileContainers); + void unsavedFielsUpdatedFromCppEditorDocument(const QString &filePath); + void unsavedFilesRemoved(const FileContainers &fileContainers); + + void requestCompletions(ClangCompletionAssistProcessor *assistProcessor, + const QString &filePath, + quint32 line, + quint32 column, + const QString &projectFilePath, + qint32 funcNameStartLine = -1, + qint32 funcNameStartColumn = -1); + void requestAnnotations(const ClangBackEnd::FileContainer &fileContainer); QFuture requestReferences( const FileContainer &fileContainer, quint32 line, @@ -86,39 +112,17 @@ public: QFuture requestFollowSymbol(const FileContainer &curFileContainer, quint32 line, quint32 column); - void completeCode(ClangCompletionAssistProcessor *assistProcessor, const QString &filePath, - quint32 line, - quint32 column, - const QString &projectFilePath, - qint32 funcNameStartLine = -1, - qint32 funcNameStartColumn = -1); - void registerProjectsParts(const QVector projectParts); - - void updateTranslationUnitIfNotCurrentDocument(Core::IDocument *document); - void updateTranslationUnit(Core::IDocument *document); - void updateUnsavedFile(Core::IDocument *document); - void updateTranslationUnitFromCppEditorDocument(const QString &filePath); - void updateUnsavedFileFromCppEditorDocument(const QString &filePath); - void updateTranslationUnit(const QString &filePath, const QByteArray &contents, uint documentRevision); - void updateUnsavedFile(const QString &filePath, const QByteArray &contents, uint documentRevision); - void updateTranslationUnitWithRevisionCheck(const ClangBackEnd::FileContainer &fileContainer); - void updateTranslationUnitWithRevisionCheck(Core::IDocument *document); void updateChangeContentStartPosition(const QString &filePath, int position); - - void registerFallbackProjectPart(); - void updateTranslationUnitVisiblity(); - bool isNotWaitingForCompletion() const; private: void initializeBackend(); void initializeBackendWithCurrentData(); - void registerCurrentProjectParts(); + void projectPartsUpdatedForCurrentProjects(); void restoreCppEditorDocuments(); void resetCppEditorDocumentProcessors(); - void registerVisibleCppEditorDocumentAndMarkInvisibleDirty(); - void registerCurrentCodeModelUiHeaders(); + void unsavedFilesUpdatedForUiHeaders(); void setupDummySender(); @@ -131,8 +135,8 @@ private: void logStartTimeOut(); void logError(const QString &text); - void updateTranslationUnitVisiblity(const Utf8String ¤tEditorFilePath, - const Utf8StringVector &visibleEditorsFilePaths); + void documentVisibilityChanged(const Utf8String ¤tEditorFilePath, + const Utf8StringVector &visibleEditorsFilePaths); private: BackendReceiver m_receiver; diff --git a/src/plugins/clangcodemodel/clangbackendreceiver.cpp b/src/plugins/clangcodemodel/clangbackendreceiver.cpp index 6cb6bafea12..2a2792b921d 100644 --- a/src/plugins/clangcodemodel/clangbackendreceiver.cpp +++ b/src/plugins/clangcodemodel/clangbackendreceiver.cpp @@ -77,7 +77,7 @@ void BackendReceiver::setAliveHandler(const BackendReceiver::AliveHandler &handl m_aliveHandler = handler; } -void BackendReceiver::addExpectedCodeCompletedMessage( +void BackendReceiver::addExpectedCompletionsMessage( quint64 ticket, ClangCompletionAssistProcessor *processor) { @@ -138,7 +138,7 @@ QFuture BackendReceiver::addExpectedToolTipMessage(quint6 return futureInterface.future(); } -bool BackendReceiver::isExpectingCodeCompletedMessage() const +bool BackendReceiver::isExpectingCompletionsMessage() const { return !m_assistProcessorsTable.isEmpty(); } @@ -180,9 +180,9 @@ void BackendReceiver::echo(const EchoMessage &message) qCDebugIpc() << message; } -void BackendReceiver::codeCompleted(const CodeCompletedMessage &message) +void BackendReceiver::completions(const CompletionsMessage &message) { - qCDebugIpc() << "CodeCompletedMessage with" << message.codeCompletions.size() + qCDebugIpc() << "CompletionsMessage with" << message.codeCompletions.size() << "items"; const quint64 ticket = message.ticketNumber; @@ -193,9 +193,9 @@ void BackendReceiver::codeCompleted(const CodeCompletedMessage &message) } } -void BackendReceiver::documentAnnotationsChanged(const DocumentAnnotationsChangedMessage &message) +void BackendReceiver::annotations(const AnnotationsMessage &message) { - qCDebugIpc() << "DocumentAnnotationsChangedMessage with" + qCDebugIpc() << "AnnotationsMessage with" << message.diagnostics.size() << "diagnostics" << message.tokenInfos.size() << "highlighting marks" << message.skippedPreprocessorRanges.size() << "skipped preprocessor ranges"; @@ -255,7 +255,7 @@ static CppTools::SymbolInfo toSymbolInfo(const FollowSymbolMessage &message) { CppTools::SymbolInfo result; - const SourceRangeContainer &range = message.sourceRange; + const SourceRangeContainer &range = message.result.range; const SourceLocationContainer &start = range.start; const SourceLocationContainer &end = range.end; @@ -265,6 +265,8 @@ CppTools::SymbolInfo toSymbolInfo(const FollowSymbolMessage &message) result.endColumn = static_cast(end.column); result.fileName = start.filePath; + result.isPureDeclarationForUsage = message.result.isPureDeclarationForUsage; + return result; } @@ -354,7 +356,7 @@ void BackendReceiver::tooltip(const ToolTipMessage &message) void BackendReceiver::followSymbol(const ClangBackEnd::FollowSymbolMessage &message) { qCDebugIpc() << "FollowSymbolMessage with" - << message.sourceRange << "range"; + << message.result; const quint64 ticket = message.ticketNumber; QFutureInterface futureInterface = m_followTable.take(ticket); diff --git a/src/plugins/clangcodemodel/clangbackendreceiver.h b/src/plugins/clangcodemodel/clangbackendreceiver.h index c3d6fb3bbf3..f02541d3119 100644 --- a/src/plugins/clangcodemodel/clangbackendreceiver.h +++ b/src/plugins/clangcodemodel/clangbackendreceiver.h @@ -51,7 +51,7 @@ public: using AliveHandler = std::function; void setAliveHandler(const AliveHandler &handler); - void addExpectedCodeCompletedMessage(quint64 ticket, ClangCompletionAssistProcessor *processor); + void addExpectedCompletionsMessage(quint64 ticket, ClangCompletionAssistProcessor *processor); void deleteProcessorsOfEditorWidget(TextEditor::TextEditorWidget *textEditorWidget); QFuture @@ -60,16 +60,16 @@ public: = CppTools::SemanticInfo::LocalUseMap()); QFuture addExpectedRequestFollowSymbolMessage(quint64 ticket); QFuture addExpectedToolTipMessage(quint64 ticket); - bool isExpectingCodeCompletedMessage() const; + bool isExpectingCompletionsMessage() const; void reset(); private: void alive() override; void echo(const ClangBackEnd::EchoMessage &message) override; - void codeCompleted(const ClangBackEnd::CodeCompletedMessage &message) override; + void completions(const ClangBackEnd::CompletionsMessage &message) override; - void documentAnnotationsChanged(const ClangBackEnd::DocumentAnnotationsChangedMessage &message) override; + void annotations(const ClangBackEnd::AnnotationsMessage &message) override; void references(const ClangBackEnd::ReferencesMessage &message) override; void tooltip(const ClangBackEnd::ToolTipMessage &message) override; void followSymbol(const ClangBackEnd::FollowSymbolMessage &message) override; diff --git a/src/plugins/clangcodemodel/clangbackendsender.cpp b/src/plugins/clangcodemodel/clangbackendsender.cpp index 4dee88e576d..a99852bfc43 100644 --- a/src/plugins/clangcodemodel/clangbackendsender.cpp +++ b/src/plugins/clangcodemodel/clangbackendsender.cpp @@ -50,67 +50,67 @@ void BackendSender::end() m_connection->sendEndMessage(); } -void BackendSender::registerTranslationUnitsForEditor(const RegisterTranslationUnitForEditorMessage &message) +void BackendSender::documentsOpened(const DocumentsOpenedMessage &message) { QTC_CHECK(m_connection->isConnected()); qCDebugIpc() << message; - m_connection->serverProxy().registerTranslationUnitsForEditor(message); + m_connection->serverProxy().documentsOpened(message); } -void BackendSender::updateTranslationUnitsForEditor(const UpdateTranslationUnitsForEditorMessage &message) +void BackendSender::documentsChanged(const DocumentsChangedMessage &message) { QTC_CHECK(m_connection->isConnected()); qCDebugIpc() << message; - m_connection->serverProxy().updateTranslationUnitsForEditor(message); + m_connection->serverProxy().documentsChanged(message); } -void BackendSender::unregisterTranslationUnitsForEditor(const UnregisterTranslationUnitsForEditorMessage &message) +void BackendSender::documentsClosed(const DocumentsClosedMessage &message) { QTC_CHECK(m_connection->isConnected()); qCDebugIpc() << message; - m_connection->serverProxy().unregisterTranslationUnitsForEditor(message); + m_connection->serverProxy().documentsClosed(message); } -void BackendSender::registerProjectPartsForEditor(const RegisterProjectPartsForEditorMessage &message) +void BackendSender::projectPartsUpdated(const ProjectPartsUpdatedMessage &message) { QTC_CHECK(m_connection->isConnected()); qCDebugIpc() << message; - m_connection->serverProxy().registerProjectPartsForEditor(message); + m_connection->serverProxy().projectPartsUpdated(message); } -void BackendSender::unregisterProjectPartsForEditor(const UnregisterProjectPartsForEditorMessage &message) +void BackendSender::projectPartsRemoved(const ProjectPartsRemovedMessage &message) { QTC_CHECK(m_connection->isConnected()); qCDebugIpc() << message; - m_connection->serverProxy().unregisterProjectPartsForEditor(message); + m_connection->serverProxy().projectPartsRemoved(message); } -void BackendSender::registerUnsavedFilesForEditor(const RegisterUnsavedFilesForEditorMessage &message) +void BackendSender::unsavedFilesUpdated(const UnsavedFilesUpdatedMessage &message) { QTC_CHECK(m_connection->isConnected()); qCDebugIpc() << message; - m_connection->serverProxy().registerUnsavedFilesForEditor(message); + m_connection->serverProxy().unsavedFilesUpdated(message); } -void BackendSender::unregisterUnsavedFilesForEditor(const UnregisterUnsavedFilesForEditorMessage &message) +void BackendSender::unsavedFilesRemoved(const UnsavedFilesRemovedMessage &message) { QTC_CHECK(m_connection->isConnected()); qCDebugIpc() << message; - m_connection->serverProxy().unregisterUnsavedFilesForEditor(message); + m_connection->serverProxy().unsavedFilesRemoved(message); } -void BackendSender::completeCode(const CompleteCodeMessage &message) +void BackendSender::requestCompletions(const RequestCompletionsMessage &message) { QTC_CHECK(m_connection->isConnected()); qCDebugIpc() << message; - m_connection->serverProxy().completeCode(message); + m_connection->serverProxy().requestCompletions(message); } -void BackendSender::requestDocumentAnnotations(const RequestDocumentAnnotationsMessage &message) +void BackendSender::requestAnnotations(const RequestAnnotationsMessage &message) { QTC_CHECK(m_connection->isConnected()); qCDebugIpc() << message; - m_connection->serverProxy().requestDocumentAnnotations(message); + m_connection->serverProxy().requestAnnotations(message); } void BackendSender::requestReferences(const RequestReferencesMessage &message) @@ -134,11 +134,11 @@ void BackendSender::requestFollowSymbol(const RequestFollowSymbolMessage &messag m_connection->serverProxy().requestFollowSymbol(message); } -void BackendSender::updateVisibleTranslationUnits(const UpdateVisibleTranslationUnitsMessage &message) +void BackendSender::documentVisibilityChanged(const DocumentVisibilityChangedMessage &message) { QTC_CHECK(m_connection->isConnected()); qCDebugIpc() << message; - m_connection->serverProxy().updateVisibleTranslationUnits(message); + m_connection->serverProxy().documentVisibilityChanged(message); } } // namespace Internal diff --git a/src/plugins/clangcodemodel/clangbackendsender.h b/src/plugins/clangcodemodel/clangbackendsender.h index 16776f7f105..86cd7d20b5e 100644 --- a/src/plugins/clangcodemodel/clangbackendsender.h +++ b/src/plugins/clangcodemodel/clangbackendsender.h @@ -38,19 +38,23 @@ public: BackendSender(ClangBackEnd::ClangCodeModelConnectionClient *connectionClient); void end() override; - void registerTranslationUnitsForEditor(const ClangBackEnd::RegisterTranslationUnitForEditorMessage &message) override; - void updateTranslationUnitsForEditor(const ClangBackEnd::UpdateTranslationUnitsForEditorMessage &message) override; - void unregisterTranslationUnitsForEditor(const ClangBackEnd::UnregisterTranslationUnitsForEditorMessage &message) override; - void registerProjectPartsForEditor(const ClangBackEnd::RegisterProjectPartsForEditorMessage &message) override; - void unregisterProjectPartsForEditor(const ClangBackEnd::UnregisterProjectPartsForEditorMessage &message) override; - void registerUnsavedFilesForEditor(const ClangBackEnd::RegisterUnsavedFilesForEditorMessage &message) override; - void unregisterUnsavedFilesForEditor(const ClangBackEnd::UnregisterUnsavedFilesForEditorMessage &message) override; - void completeCode(const ClangBackEnd::CompleteCodeMessage &message) override; - void requestDocumentAnnotations(const ClangBackEnd::RequestDocumentAnnotationsMessage &message) override; + + void documentsOpened(const ClangBackEnd::DocumentsOpenedMessage &message) override; + void documentsChanged(const ClangBackEnd::DocumentsChangedMessage &message) override; + void documentsClosed(const ClangBackEnd::DocumentsClosedMessage &message) override; + void documentVisibilityChanged(const ClangBackEnd::DocumentVisibilityChangedMessage &message) override; + + void projectPartsUpdated(const ClangBackEnd::ProjectPartsUpdatedMessage &message) override; + void projectPartsRemoved(const ClangBackEnd::ProjectPartsRemovedMessage &message) override; + + void unsavedFilesUpdated(const ClangBackEnd::UnsavedFilesUpdatedMessage &message) override; + void unsavedFilesRemoved(const ClangBackEnd::UnsavedFilesRemovedMessage &message) override; + + void requestCompletions(const ClangBackEnd::RequestCompletionsMessage &message) override; + void requestAnnotations(const ClangBackEnd::RequestAnnotationsMessage &message) override; void requestReferences(const ClangBackEnd::RequestReferencesMessage &message) override; void requestToolTip(const ClangBackEnd::RequestToolTipMessage &message) override; void requestFollowSymbol(const ClangBackEnd::RequestFollowSymbolMessage &message) override; - void updateVisibleTranslationUnits(const ClangBackEnd::UpdateVisibleTranslationUnitsMessage &message) override; private: ClangBackEnd::ClangCodeModelConnectionClient *m_connection = nullptr; diff --git a/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp b/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp index 4cae74725cc..974b2d3e86a 100644 --- a/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp +++ b/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp @@ -494,11 +494,11 @@ void ClangCompletionAssistProcessor::sendFileContent(const QByteArray &customFil const UnsavedFileContentInfo info = unsavedFileContent(customFileContent); BackendCommunicator &communicator = m_interface->communicator(); - communicator.updateTranslationUnitsForEditor({{m_interface->fileName(), - Utf8String(), - Utf8String::fromByteArray(info.unsavedContent), - info.isDocumentModified, - uint(m_interface->textDocument()->revision())}}); + communicator.documentsChanged({{m_interface->fileName(), + Utf8String(), + Utf8String::fromByteArray(info.unsavedContent), + info.isDocumentModified, + uint(m_interface->textDocument()->revision())}}); } namespace { bool shouldSendDocumentForCompletion(const QString &filePath, @@ -577,9 +577,13 @@ bool ClangCompletionAssistProcessor::sendCompletionRequest(int position, const Position cursorPosition = extractLineColumn(position); const Position functionNameStart = extractLineColumn(functionNameStartPosition); const QString projectPartId = CppTools::CppToolsBridge::projectPartIdForFile(filePath); - communicator.completeCode(this, filePath, uint(cursorPosition.line), - uint(cursorPosition.column), projectPartId, - functionNameStart.line, functionNameStart.column); + communicator.requestCompletions(this, + filePath, + uint(cursorPosition.line), + uint(cursorPosition.column), + projectPartId, + functionNameStart.line, + functionNameStart.column); setLastCompletionPosition(filePath, position); return true; } diff --git a/src/plugins/clangcodemodel/clangdiagnostictooltipwidget.cpp b/src/plugins/clangcodemodel/clangdiagnostictooltipwidget.cpp index 5f254f96868..24b9506fc28 100644 --- a/src/plugins/clangcodemodel/clangdiagnostictooltipwidget.cpp +++ b/src/plugins/clangcodemodel/clangdiagnostictooltipwidget.cpp @@ -28,6 +28,8 @@ #include +#include + #include #include @@ -46,14 +48,8 @@ namespace { // CLANG-UPGRADE-CHECK: Checks/update URLs. // -// For tidy, upgrade the version in the URL. Note that we cannot use the macro -// CLANG_VERSION here because it might denote a version that was not yet -// released (e.g. 6.0.1, but only 6.0.0 was released). -// -// For clazy, once it gets dedicated documentation pages for released versions, +// Once it gets dedicated documentation pages for released versions, // use them instead of pointing to master, as checks might vanish. -const char TIDY_DOCUMENTATION_URL_TEMPLATE[] - = "https://releases.llvm.org/6.0.0/tools/clang/tools/extra/docs/clang-tidy/checks/%1.html"; const char CLAZY_DOCUMENTATION_URL_TEMPLATE[] = "https://github.com/KDE/clazy/blob/master/docs/checks/README-%1.md"; @@ -283,7 +279,7 @@ private: return QString(); // Clang-Tidy - return QString::fromUtf8(TIDY_DOCUMENTATION_URL_TEMPLATE).arg(option); + return QString::fromUtf8(CppTools::Constants::TIDY_DOCUMENTATION_URL_TEMPLATE).arg(option); } static QString maybeClickableOption(const Utf8String &option) diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp index 91bbbc5f0f6..a9f421d9d59 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp +++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp @@ -88,7 +88,7 @@ ClangEditorDocumentProcessor::ClangEditorDocumentProcessor( m_updateTranslationUnitTimer.setSingleShot(true); m_updateTranslationUnitTimer.setInterval(350); connect(&m_updateTranslationUnitTimer, &QTimer::timeout, - this, &ClangEditorDocumentProcessor::updateTranslationUnitIfProjectPartExists); + this, &ClangEditorDocumentProcessor::updateBackendDocumentIfProjectPartExists); connect(m_parser.data(), &ClangEditorDocumentParser::projectPartInfoUpdated, this, &BaseEditorDocumentProcessor::projectPartInfoUpdated); @@ -109,7 +109,7 @@ ClangEditorDocumentProcessor::~ClangEditorDocumentProcessor() m_parserWatcher.waitForFinished(); if (m_projectPart) - unregisterTranslationUnitForEditor(); + closeBackendDocument(); } void ClangEditorDocumentProcessor::runImpl( @@ -143,7 +143,7 @@ void ClangEditorDocumentProcessor::semanticRehighlight() m_semanticHighlighter.updateFormatMapFromFontSettings(); if (m_projectPart) - requestDocumentAnnotations(m_projectPart->id()); + requestAnnotationsFromBackend(m_projectPart->id()); } CppTools::SemanticInfo ClangEditorDocumentProcessor::recalculateSemanticInfo() @@ -427,12 +427,12 @@ static bool isProjectPartLoadedOrIsFallback(CppTools::ProjectPart::Ptr projectPa && (projectPart->id().isEmpty() || ClangCodeModel::Utils::isProjectPartLoaded(projectPart)); } -void ClangEditorDocumentProcessor::updateProjectPartAndTranslationUnitForEditor() +void ClangEditorDocumentProcessor::updateBackendProjectPartAndDocument() { const CppTools::ProjectPart::Ptr projectPart = m_parser->projectPartInfo().projectPart; if (isProjectPartLoadedOrIsFallback(projectPart)) { - registerTranslationUnitForEditor(*projectPart.data()); + updateBackendDocument(*projectPart.data()); m_projectPart = projectPart; m_isProjectFile = m_parser->projectPartInfo().hints @@ -445,7 +445,7 @@ void ClangEditorDocumentProcessor::onParserFinished() if (revision() != m_parserRevision) return; - updateProjectPartAndTranslationUnitForEditor(); + updateBackendProjectPartAndDocument(); } namespace { @@ -592,7 +592,7 @@ private: }; } // namespace -void ClangEditorDocumentProcessor::registerTranslationUnitForEditor( +void ClangEditorDocumentProcessor::updateBackendDocument( CppTools::ProjectPart &projectPart) { // On registration we send the document content immediately as an unsaved @@ -611,32 +611,31 @@ void ClangEditorDocumentProcessor::registerTranslationUnitForEditor( const FileOptionsBuilder fileOptions(filePath(), projectPart); m_diagnosticConfigId = fileOptions.diagnosticConfigId(); - m_communicator.registerTranslationUnitsForEditor( + m_communicator.documentsOpened( {fileContainerWithOptionsAndDocumentContent(projectPart, fileOptions.options())}); ClangCodeModel::Utils::setLastSentDocumentRevision(filePath(), revision()); } -void ClangEditorDocumentProcessor::unregisterTranslationUnitForEditor() +void ClangEditorDocumentProcessor::closeBackendDocument() { QTC_ASSERT(m_projectPart, return); - m_communicator.unregisterTranslationUnitsForEditor( - {ClangBackEnd::FileContainer(filePath(), m_projectPart->id())}); + m_communicator.documentsClosed({ClangBackEnd::FileContainer(filePath(), m_projectPart->id())}); } -void ClangEditorDocumentProcessor::updateTranslationUnitIfProjectPartExists() +void ClangEditorDocumentProcessor::updateBackendDocumentIfProjectPartExists() { if (m_projectPart) { - const ClangBackEnd::FileContainer fileContainer = fileContainerWithDocumentContent(m_projectPart->id()); - - m_communicator.updateTranslationUnitWithRevisionCheck(fileContainer); + const ClangBackEnd::FileContainer fileContainer = fileContainerWithDocumentContent( + m_projectPart->id()); + m_communicator.documentsChangedWithRevisionCheck(fileContainer); } } -void ClangEditorDocumentProcessor::requestDocumentAnnotations(const QString &projectpartId) +void ClangEditorDocumentProcessor::requestAnnotationsFromBackend(const QString &projectpartId) { const auto fileContainer = fileContainerWithDocumentContent(projectpartId); - m_communicator.requestDocumentAnnotations(fileContainer); + m_communicator.requestAnnotations(fileContainer); } CppTools::BaseEditorDocumentProcessor::HeaderErrorDiagnosticWidgetCreator diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.h b/src/plugins/clangcodemodel/clangeditordocumentprocessor.h index cf4f1e51ed2..5514305a3a3 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.h +++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.h @@ -97,7 +97,7 @@ public: int line, int column) override; - void unregisterTranslationUnitForEditor(); + void closeBackendDocument(); void clearDiagnosticsWithFixIts(); @@ -114,10 +114,12 @@ signals: private: void onParserFinished(); - void updateProjectPartAndTranslationUnitForEditor(); - void registerTranslationUnitForEditor(CppTools::ProjectPart &projectPart); - void updateTranslationUnitIfProjectPartExists(); - void requestDocumentAnnotations(const QString &projectpartId); + + void updateBackendProjectPartAndDocument(); + void updateBackendDocument(CppTools::ProjectPart &projectPart); + void updateBackendDocumentIfProjectPartExists(); + void requestAnnotationsFromBackend(const QString &projectpartId); + HeaderErrorDiagnosticWidgetCreator creatorForHeaderErrorDiagnosticWidget( const ClangBackEnd::DiagnosticContainer &firstHeaderErrorDiagnostic); ClangBackEnd::FileContainer simpleFileContainer(const QByteArray &codecName = QByteArray()) const; diff --git a/src/plugins/clangcodemodel/clangfollowsymbol.cpp b/src/plugins/clangcodemodel/clangfollowsymbol.cpp index 2876055706e..e1f33bdf854 100644 --- a/src/plugins/clangcodemodel/clangfollowsymbol.cpp +++ b/src/plugins/clangcodemodel/clangfollowsymbol.cpp @@ -140,6 +140,19 @@ static Utils::Link linkAtCursor(const QTextCursor &cursor, return Link(); } +static ::Utils::ProcessLinkCallback extendedCallback(::Utils::ProcessLinkCallback &&callback, + const CppTools::SymbolInfo &result) +{ + // If globalFollowSymbol finds nothing follow to the declaration. + return [original_callback = std::move(callback), result](const ::Utils::Link &link) { + if (!link.hasValidTarget() && result.isPureDeclarationForUsage) { + return original_callback(::Utils::Link(result.fileName, result.startLine, + result.startColumn - 1)); + } + return original_callback(link); + }; +} + void ClangFollowSymbol::findLink(const CppTools::CursorInEditor &data, ::Utils::ProcessLinkCallback &&processLinkCallback, bool resolveTarget, @@ -185,11 +198,11 @@ void ClangFollowSymbol::findLink(const CppTools::CursorInEditor &data, return callback(Utils::Link()); CppTools::SymbolInfo result = m_watcher->result(); // We did not fail but the result is empty - if (result.fileName.isEmpty()) { + if (result.fileName.isEmpty() || result.isPureDeclarationForUsage) { const CppTools::RefactoringEngineInterface &refactoringEngine = *CppTools::CppModelManager::instance(); refactoringEngine.globalFollowSymbol(data, - std::move(callback), + extendedCallback(std::move(callback), result), snapshot, documentFromSemanticInfo, symbolFinder, diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp index d396d0f94a7..46527706ee7 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp @@ -49,9 +49,9 @@ #include #include -#include #include #include +#include #include #include @@ -108,7 +108,7 @@ ModelManagerSupportClang::ModelManagerSupportClang() connect(settings, &CppTools::CppCodeModelSettings::clangDiagnosticConfigsInvalidated, this, &ModelManagerSupportClang::onDiagnosticConfigsInvalidated); - m_communicator.registerFallbackProjectPart(); + m_communicator.projectPartsUpdatedForFallback(); } ModelManagerSupportClang::~ModelManagerSupportClang() @@ -150,7 +150,7 @@ CppTools::BaseEditorDocumentProcessor *ModelManagerSupportClang::createEditorDoc void ModelManagerSupportClang::onCurrentEditorChanged(Core::IEditor *editor) { - m_communicator.updateTranslationUnitVisiblity(); + m_communicator.documentVisibilityChanged(); // Update task hub issues for current CppEditorDocument ClangEditorDocumentProcessor::clearTaskHubIssues(); @@ -232,7 +232,7 @@ void ModelManagerSupportClang::onEditorOpened(Core::IEditor *editor) void ModelManagerSupportClang::onEditorClosed(const QList &) { - m_communicator.updateTranslationUnitVisiblity(); + m_communicator.documentVisibilityChanged(); } void ModelManagerSupportClang::onCppDocumentAboutToReloadOnTranslationUnit() @@ -247,7 +247,7 @@ void ModelManagerSupportClang::onCppDocumentReloadFinishedOnTranslationUnit(bool if (success) { TextEditor::TextDocument *textDocument = qobject_cast(sender()); connectToTextDocumentContentsChangedForTranslationUnit(textDocument); - m_communicator.updateTranslationUnitWithRevisionCheck(textDocument); + m_communicator.documentsChangedWithRevisionCheck(textDocument); } } @@ -268,7 +268,7 @@ void ModelManagerSupportClang::onCppDocumentContentsChangedOnTranslationUnit(int m_communicator.updateChangeContentStartPosition(document->filePath().toString(), position); - m_communicator.updateTranslationUnitIfNotCurrentDocument(document); + m_communicator.documentsChangedIfNotCurrentDocument(document); clearDiagnosticFixIts(document->filePath().toString()); } @@ -285,14 +285,14 @@ void ModelManagerSupportClang::onCppDocumentReloadFinishedOnUnsavedFile(bool suc if (success) { TextEditor::TextDocument *textDocument = qobject_cast(sender()); connectToTextDocumentContentsChangedForUnsavedFile(textDocument); - m_communicator.updateUnsavedFile(textDocument); + m_communicator.unsavedFilesUpdated(textDocument); } } void ModelManagerSupportClang::onCppDocumentContentsChangedOnUnsavedFile() { Core::IDocument *document = qobject_cast(sender()); - m_communicator.updateUnsavedFile(document); + m_communicator.unsavedFilesUpdated(document); } void ModelManagerSupportClang::onAbstractEditorSupportContentsUpdated(const QString &filePath, @@ -301,7 +301,7 @@ void ModelManagerSupportClang::onAbstractEditorSupportContentsUpdated(const QStr QTC_ASSERT(!filePath.isEmpty(), return); const QString mappedPath = m_uiHeaderOnDiskManager.createIfNeeded(filePath); - m_communicator.updateUnsavedFile(mappedPath, content, 0); + m_communicator.unsavedFilesUpdated(mappedPath, content, 0); } void ModelManagerSupportClang::onAbstractEditorSupportRemoved(const QString &filePath) @@ -311,7 +311,7 @@ void ModelManagerSupportClang::onAbstractEditorSupportRemoved(const QString &fil if (!cppModelManager()->cppEditorDocument(filePath)) { const QString mappedPath = m_uiHeaderOnDiskManager.remove(filePath); const QString projectPartId = Utils::projectPartIdForFile(filePath); - m_communicator.unregisterUnsavedFilesForEditor({{mappedPath, projectPartId}}); + m_communicator.unsavedFilesRemoved({{mappedPath, projectPartId}}); } } @@ -411,16 +411,16 @@ void ModelManagerSupportClang::onProjectPartsUpdated(ProjectExplorer::Project *p const CppTools::ProjectInfo projectInfo = cppModelManager()->projectInfo(project); QTC_ASSERT(projectInfo.isValid(), return); - m_communicator.registerProjectsParts(projectInfo.projectParts()); - m_communicator.registerFallbackProjectPart(); + m_communicator.projectPartsUpdated(projectInfo.projectParts()); + m_communicator.projectPartsUpdatedForFallback(); } void ModelManagerSupportClang::onProjectPartsRemoved(const QStringList &projectPartIds) { if (!projectPartIds.isEmpty()) { - unregisterTranslationUnitsWithProjectParts(projectPartIds); - m_communicator.unregisterProjectPartsForEditor(projectPartIds); - m_communicator.registerFallbackProjectPart(); + closeBackendDocumentsWithProjectParts(projectPartIds); + m_communicator.projectPartsRemoved(projectPartIds); + m_communicator.projectPartsUpdatedForFallback(); } } @@ -445,12 +445,12 @@ clangProcessorsWithProjectParts(const QStringList &projectPartIds) }); } -void ModelManagerSupportClang::unregisterTranslationUnitsWithProjectParts( +void ModelManagerSupportClang::closeBackendDocumentsWithProjectParts( const QStringList &projectPartIds) { const auto processors = clangProcessorsWithProjectParts(projectPartIds); foreach (ClangEditorDocumentProcessor *processor, processors) { - processor->unregisterTranslationUnitForEditor(); + processor->closeBackendDocument(); processor->clearProjectPart(); processor->run(); } diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.h b/src/plugins/clangcodemodel/clangmodelmanagersupport.h index 3b62aae108f..db4e87bfcc2 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.h +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.h @@ -109,7 +109,7 @@ private: void onDiagnosticConfigsInvalidated(const QVector &configIds); - void unregisterTranslationUnitsWithProjectParts(const QStringList &projectPartIds); + void closeBackendDocumentsWithProjectParts(const QStringList &projectPartIds); void connectTextDocumentToTranslationUnit(TextEditor::TextDocument *textDocument); void connectTextDocumentToUnsavedFiles(TextEditor::TextDocument *textDocument); diff --git a/src/plugins/clangcodemodel/clangoverviewmodel.cpp b/src/plugins/clangcodemodel/clangoverviewmodel.cpp index 655005bc2c4..e7e5671d4b5 100644 --- a/src/plugins/clangcodemodel/clangoverviewmodel.cpp +++ b/src/plugins/clangcodemodel/clangoverviewmodel.cpp @@ -80,6 +80,17 @@ void buildTree(const TokenContainers &containers, if (lexicalParentIndex >= 0 && treeItemCache[lexicalParentIndex]) parent = treeItemCache[lexicalParentIndex]; + if (parent != root + && (container.extraInfo.storageClass == ClangBackEnd::StorageClass::Extern + || container.extraInfo.storageClass == ClangBackEnd::StorageClass::Static)) { + ClangBackEnd::HighlightingType parentType = parent->token.types.mainHighlightingType; + if (parentType == ClangBackEnd::HighlightingType::VirtualFunction + || parentType == ClangBackEnd::HighlightingType::Function) { + // Treat static and extern variables inside a function scope as local variables. + continue; + } + } + parent->appendChild(item.release()); } @@ -213,10 +224,20 @@ bool OverviewModel::isGenerated(const QModelIndex &) const TokenTreeItem *item = static_cast(itemForIndex(sourceIndex)); if (!item) return {}; - ::Utils::LineColumn lineColumn; - lineColumn.line = static_cast(item->token.line); - lineColumn.column = static_cast(item->token.column); - return lineColumn; + return ::Utils::LineColumn(static_cast(item->token.line), + static_cast(item->token.column)); +} + +OverviewModel::Range OverviewModel::rangeFromIndex(const QModelIndex &sourceIndex) const +{ + TokenTreeItem *item = static_cast(itemForIndex(sourceIndex)); + if (!item) + return {}; + const ClangBackEnd::SourceRangeContainer &range = item->token.extraInfo.cursorRange; + return std::make_pair(::Utils::LineColumn(static_cast(range.start.line), + static_cast(range.start.column)), + ::Utils::LineColumn(static_cast(range.end.line), + static_cast(range.end.column))); } } // namespace Internal diff --git a/src/plugins/clangcodemodel/clangoverviewmodel.h b/src/plugins/clangcodemodel/clangoverviewmodel.h index 7ea3bc8206f..306b529c25a 100644 --- a/src/plugins/clangcodemodel/clangoverviewmodel.h +++ b/src/plugins/clangcodemodel/clangoverviewmodel.h @@ -61,6 +61,7 @@ public: bool isGenerated(const QModelIndex &sourceIndex) const override; ::Utils::Link linkFromIndex(const QModelIndex &sourceIndex) const override; ::Utils::LineColumn lineColumnFromIndex(const QModelIndex &sourceIndex) const override; + Range rangeFromIndex(const QModelIndex &sourceIndex) const override; private: QString m_filePath; }; diff --git a/src/plugins/clangtools/clangselectablefilesdialog.cpp b/src/plugins/clangtools/clangselectablefilesdialog.cpp index 4dab13a7268..91b5c8ea531 100644 --- a/src/plugins/clangtools/clangselectablefilesdialog.cpp +++ b/src/plugins/clangtools/clangselectablefilesdialog.cpp @@ -31,7 +31,9 @@ #include "clangtoolsutils.h" #include +#include #include +#include #include #include @@ -265,6 +267,13 @@ private: enum { GlobalSettings , CustomSettings }; +static Core::Id diagnosticConfiguration(ClangToolsProjectSettings *settings) +{ + if (settings->useGlobalSettings()) + return ClangToolsSettings::instance()->savedDiagnosticConfigId(); + return settings->diagnosticConfig(); +} + SelectableFilesDialog::SelectableFilesDialog(const ProjectInfo &projectInfo, const FileInfos &allFileInfos) : QDialog(nullptr) @@ -285,18 +294,15 @@ SelectableFilesDialog::SelectableFilesDialog(const ProjectInfo &projectInfo, ClangToolsProjectSettings *settings = ClangToolsProjectSettingsManager::getSettings(m_project); - Core::Id diagnosticConfig; if (settings->useGlobalSettings()) { m_ui->globalOrCustom->setCurrentIndex(GlobalSettings); m_ui->diagnosticConfigsSelectionWidget->setEnabled(false); - diagnosticConfig = ClangToolsSettings::instance()->savedDiagnosticConfigId(); } else { m_ui->globalOrCustom->setCurrentIndex(CustomSettings); m_ui->diagnosticConfigsSelectionWidget->setEnabled(true); - diagnosticConfig = settings->diagnosticConfig(); } - m_customDiagnosticConfig = diagnosticConfig; - m_ui->diagnosticConfigsSelectionWidget->refresh(diagnosticConfig); + m_customDiagnosticConfig = diagnosticConfiguration(settings); + m_ui->diagnosticConfigsSelectionWidget->refresh(m_customDiagnosticConfig); connect(m_ui->globalOrCustom, static_cast(&QComboBox::currentIndexChanged), @@ -326,6 +332,11 @@ SelectableFilesDialog::SelectableFilesDialog(const ProjectInfo &projectInfo, connect(m_filesModel.get(), &QAbstractItemModel::dataChanged, [this]() { m_analyzeButton->setEnabled(m_filesModel->hasCheckedFiles()); }); + + connect(CppTools::codeModelSettings().data(), &CppTools::CppCodeModelSettings::changed, + this, [=]() { + m_ui->diagnosticConfigsSelectionWidget->refresh(diagnosticConfiguration(settings)); + }); } SelectableFilesDialog::~SelectableFilesDialog() {} diff --git a/src/plugins/clangtools/clangtidyclazytool.cpp b/src/plugins/clangtools/clangtidyclazytool.cpp index cf4a4ea5a46..575cd68dc5b 100644 --- a/src/plugins/clangtools/clangtidyclazytool.cpp +++ b/src/plugins/clangtools/clangtidyclazytool.cpp @@ -395,7 +395,7 @@ void ClangTidyClazyTool::handleStateUpdate() QTC_ASSERT(m_diagnosticModel, return); QTC_ASSERT(m_diagnosticFilterModel, return); - const int issuesFound = m_diagnosticModel->diagnostics().count(); + const int issuesFound = m_diagnosticModel->diagnosticsCount(); const int issuesVisible = m_diagnosticFilterModel->rowCount(); m_goBack->setEnabled(issuesVisible > 1); m_goNext->setEnabled(issuesVisible > 1); diff --git a/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp b/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp index db7ab4e14a2..690f48e584d 100644 --- a/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp +++ b/src/plugins/clangtools/clangtoolsdiagnosticmodel.cpp @@ -80,6 +80,11 @@ QList ClangToolsDiagnosticModel::diagnostics() const return diags; } +int ClangToolsDiagnosticModel::diagnosticsCount() const +{ + return rootItem()->childCount(); +} + static QString createDiagnosticToolTipString(const Diagnostic &diagnostic) { typedef QPair StringPair; @@ -431,8 +436,9 @@ bool DiagnosticFilterModel::filterAcceptsRow(int sourceRow, return true; // Is the diagnostic suppressed? - const Diagnostic diag = static_cast(sourceModel()) - ->diagnostics().at(sourceRow); + auto model = static_cast(sourceModel()); + auto item = static_cast(model->rootItem()->childAt(sourceRow)); + const Diagnostic &diag = item->diagnostic(); foreach (const SuppressedDiagnostic &d, m_suppressedDiagnostics) { if (d.description != diag.description) continue; diff --git a/src/plugins/clangtools/clangtoolsdiagnosticmodel.h b/src/plugins/clangtools/clangtoolsdiagnosticmodel.h index 4c6a7e191c2..6ced6bfe22d 100644 --- a/src/plugins/clangtools/clangtoolsdiagnosticmodel.h +++ b/src/plugins/clangtools/clangtoolsdiagnosticmodel.h @@ -59,7 +59,7 @@ public: DiagnosticItem(const Diagnostic &diag, const OnFixitStatusChanged &onFixitStatusChanged); ~DiagnosticItem() override; - Diagnostic diagnostic() const { return m_diagnostic; } + const Diagnostic &diagnostic() const { return m_diagnostic; } FixitStatus fixItStatus() const { return m_fixitStatus; } void setFixItStatus(const FixitStatus &status); @@ -90,6 +90,8 @@ public: virtual void addDiagnostics(const QList &diagnostics); virtual QList diagnostics() const; + int diagnosticsCount() const; + enum ItemRole { DiagnosticRole = Debugger::DetailedErrorView::FullTextRole + 1 }; diff --git a/src/plugins/coreplugin/fancytabwidget.cpp b/src/plugins/coreplugin/fancytabwidget.cpp index 0bd3920ed6a..a9050029217 100644 --- a/src/plugins/coreplugin/fancytabwidget.cpp +++ b/src/plugins/coreplugin/fancytabwidget.cpp @@ -293,6 +293,11 @@ static void paintIconAndText(QPainter *painter, const QRect &rect, const QIcon &icon, const QString &text, bool enabled, bool selected) { + QFont boldFont(painter->font()); + boldFont.setPointSizeF(StyleHelper::sidebarFontSize()); + boldFont.setBold(true); + painter->setFont(boldFont); + const bool drawIcon = rect.height() > 36; if (drawIcon) { const int textHeight = @@ -322,10 +327,6 @@ static void paintIconAndText(QPainter *painter, const QRect &rect, painter->translate(0, -1); QRect tabTextRect(rect); tabTextRect.translate(0, drawIcon ? -2 : 1); - QFont boldFont(painter->font()); - boldFont.setPointSizeF(StyleHelper::sidebarFontSize()); - boldFont.setBold(true); - painter->setFont(boldFont); const int textFlags = Qt::AlignCenter | (drawIcon ? Qt::AlignBottom : Qt::AlignVCenter) | Qt::TextWordWrap; painter->drawText(tabTextRect, textFlags, text); diff --git a/src/plugins/cpptools/abstractoverviewmodel.h b/src/plugins/cpptools/abstractoverviewmodel.h index 6a9bbebb991..444d19e5482 100644 --- a/src/plugins/cpptools/abstractoverviewmodel.h +++ b/src/plugins/cpptools/abstractoverviewmodel.h @@ -32,6 +32,8 @@ #include +#include + namespace CPlusPlus { class Document; } namespace Utils { @@ -91,6 +93,9 @@ public: virtual Utils::Link linkFromIndex(const QModelIndex &) const = 0; virtual Utils::LineColumn lineColumnFromIndex(const QModelIndex &) const = 0; + using Range = std::pair; + virtual Range rangeFromIndex(const QModelIndex &) const = 0; + signals: void needsUpdate(); }; diff --git a/src/plugins/cpptools/clangdiagnosticconfigsmodel.cpp b/src/plugins/cpptools/clangdiagnosticconfigsmodel.cpp index e1f65df4bee..ade2ab66269 100644 --- a/src/plugins/cpptools/clangdiagnosticconfigsmodel.cpp +++ b/src/plugins/cpptools/clangdiagnosticconfigsmodel.cpp @@ -170,7 +170,10 @@ QStringList ClangDiagnosticConfigsModel::globalDiagnosticOptions() return { // Avoid undesired warnings from e.g. Q_OBJECT QStringLiteral("-Wno-unknown-pragmas"), - QStringLiteral("-Wno-unknown-warning-option") + QStringLiteral("-Wno-unknown-warning-option"), + + // qdoc commands + QStringLiteral("-Wno-documentation-unknown-command") }; } diff --git a/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp b/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp index 22b2950e5aa..6b5e0d73343 100644 --- a/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp +++ b/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp @@ -27,6 +27,7 @@ #include "cppcodemodelsettings.h" #include "cpptools_clangtidychecks.h" +#include "cpptoolsconstants.h" #include "cpptoolsreuse.h" #include "ui_clangdiagnosticconfigswidget.h" #include "ui_clangbasechecks.h" @@ -40,6 +41,7 @@ #include #include +#include #include #include #include @@ -47,6 +49,9 @@ namespace CppTools { +static constexpr const char CLANG_STATIC_ANALYZER_URL[] + = "https://clang-analyzer.llvm.org/available_checks.html"; + static void buildTree(ProjectExplorer::Tree *parent, ProjectExplorer::Tree *current, const Constants::TidyNode &node) @@ -64,6 +69,12 @@ static void buildTree(ProjectExplorer::Tree *parent, buildTree(current, new ProjectExplorer::Tree, nodeChild); } +static bool needsLink(ProjectExplorer::Tree *node) { + if (node->name == "clang-analyzer-") + return true; + return !node->isDir && !node->fullPath.toString().startsWith("clang-analyzer-"); +} + class TidyChecksTreeModel final : public ProjectExplorer::SelectableFilesModel { Q_OBJECT @@ -108,14 +119,45 @@ public: } } - QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const final + int columnCount(const QModelIndex &/*parent*/) const override { - if (!index.isValid() || role == Qt::DecorationRole) + return 2; + } + + QVariant data(const QModelIndex &fullIndex, int role = Qt::DisplayRole) const final + { + if (!fullIndex.isValid() || role == Qt::DecorationRole) + return QVariant(); + QModelIndex index = this->index(fullIndex.row(), 0, fullIndex.parent()); + auto *node = static_cast(index.internalPointer()); + + if (fullIndex.column() == 1) { + if (!needsLink(node)) + return QVariant(); + switch (role) { + case Qt::DisplayRole: + return tr("Web Page"); + case Qt::FontRole: { + QFont font = QApplication::font(); + font.setUnderline(true); + return font; + } + case Qt::ForegroundRole: + return QApplication::palette().link().color(); + case Qt::UserRole: { + // 'clang-analyzer-' group + if (node->isDir) + return QString::fromUtf8(CLANG_STATIC_ANALYZER_URL); + return QString::fromUtf8(Constants::TIDY_DOCUMENTATION_URL_TEMPLATE) + .arg(node->fullPath.toString()); + } + } return QVariant(); - if (role == Qt::DisplayRole) { - auto *node = static_cast(index.internalPointer()); - return node->isDir ? (node->name + "*") : node->name; } + + if (role == Qt::DisplayRole) + return node->isDir ? (node->name + "*") : node->name; + return ProjectExplorer::SelectableFilesModel::data(index, role); } @@ -160,10 +202,7 @@ private: return false; } - if (!check.startsWith(nodeName)) - return false; - - return true; + return check.startsWith(nodeName); }); return result; } @@ -203,6 +242,15 @@ ClangDiagnosticConfigsWidget::ClangDiagnosticConfigsWidget(const Core::Id &confi this, &ClangDiagnosticConfigsWidget::onRemoveButtonClicked); connectDiagnosticOptionsChanged(); + connect(m_tidyChecks->checksPrefixesTree, &QTreeView::clicked, + [this](const QModelIndex &index) { + const QString link = m_tidyTreeModel->data(index, Qt::UserRole).toString(); + if (link.isEmpty()) + return; + + QDesktopServices::openUrl(QUrl(link)); + }); + syncWidgetsToModel(configToSelect); } @@ -599,6 +647,8 @@ void ClangDiagnosticConfigsWidget::setupTabs() m_tidyChecks->setupUi(m_tidyChecksWidget); m_tidyChecks->checksPrefixesTree->setModel(m_tidyTreeModel.get()); m_tidyChecks->checksPrefixesTree->expandToDepth(0); + m_tidyChecks->checksPrefixesTree->header()->setStretchLastSection(false); + m_tidyChecks->checksPrefixesTree->header()->setSectionResizeMode(0, QHeaderView::Stretch); connect(m_tidyChecks->plainTextEditButton, &QPushButton::clicked, this, [this]() { QDialog dialog; dialog.setWindowTitle(tr("Checks")); diff --git a/src/plugins/cpptools/clangdiagnosticconfigswidget.h b/src/plugins/cpptools/clangdiagnosticconfigswidget.h index 53075932208..39753a74c66 100644 --- a/src/plugins/cpptools/clangdiagnosticconfigswidget.h +++ b/src/plugins/cpptools/clangdiagnosticconfigswidget.h @@ -73,6 +73,7 @@ private: void onRemoveButtonClicked(); void onClangTidyModeChanged(int index); void onClangTidyTreeChanged(); + void onClangTidyTreeItemClicked(const QModelIndex &index); void onClazyRadioButtonChanged(bool checked); void onDiagnosticOptionsEdited(); diff --git a/src/plugins/cpptools/cppcodemodelsettingspage.ui b/src/plugins/cpptools/cppcodemodelsettingspage.ui index 4330ac268a8..fc81fc3609c 100644 --- a/src/plugins/cpptools/cppcodemodelsettingspage.ui +++ b/src/plugins/cpptools/cppcodemodelsettingspage.ui @@ -84,22 +84,31 @@ - - - <i>The Clang Code Model is enabled because the corresponding plugin is loaded.</i> + + + Clang Code Model + + + + + <i>The Clang Code Model is enabled because the corresponding plugin is loaded.</i> + + + + + + + <i>The Clang Code Model is disabled because the corresponding plugin is not loaded.</i> + + + + + + + - - - - <i>The Clang Code Model is disabled because the corresponding plugin is not loaded.</i> - - - - - - diff --git a/src/plugins/cpptools/cppeditoroutline.cpp b/src/plugins/cpptools/cppeditoroutline.cpp index a71e027cdc3..d7840016d59 100644 --- a/src/plugins/cpptools/cppeditoroutline.cpp +++ b/src/plugins/cpptools/cppeditoroutline.cpp @@ -263,6 +263,17 @@ void CppEditorOutline::gotoSymbolInEditor() emit m_editorWidget->activateEditor(); } +static bool contains(const AbstractOverviewModel::Range &range, int line, int column) +{ + if (line < range.first.line || line > range.second.line) + return false; + if (line == range.first.line && column < range.first.column) + return false; + if (line == range.second.line && column > range.second.column) + return false; + return true; +} + QModelIndex CppEditorOutline::indexForPosition(int line, int column, const QModelIndex &rootIndex) const { @@ -270,8 +281,12 @@ QModelIndex CppEditorOutline::indexForPosition(int line, int column, const int rowCount = m_model->rowCount(rootIndex); for (int row = 0; row < rowCount; ++row) { const QModelIndex index = m_model->index(row, 0, rootIndex); - if (m_model->lineColumnFromIndex(index).line > line) + const AbstractOverviewModel::Range range = m_model->rangeFromIndex(index); + if (range.first.line > line) break; + // Skip ranges that do not include current line and column. + if (range.second != range.first && !contains(range, line, column)) + continue; lastIndex = index; } diff --git a/src/plugins/cpptools/cppoverviewmodel.cpp b/src/plugins/cpptools/cppoverviewmodel.cpp index 590f2b6847b..8c720b75ca7 100644 --- a/src/plugins/cpptools/cppoverviewmodel.cpp +++ b/src/plugins/cpptools/cppoverviewmodel.cpp @@ -190,6 +190,12 @@ Utils::LineColumn OverviewModel::lineColumnFromIndex(const QModelIndex &sourceIn return lineColumn; } +OverviewModel::Range OverviewModel::rangeFromIndex(const QModelIndex &sourceIndex) const +{ + Utils::LineColumn lineColumn = lineColumnFromIndex(sourceIndex); + return std::make_pair(lineColumn, lineColumn); +} + void OverviewModel::buildTree(SymbolItem *root, bool isRoot) { if (!root) diff --git a/src/plugins/cpptools/cppoverviewmodel.h b/src/plugins/cpptools/cppoverviewmodel.h index 6582ca083f0..0a7870ed288 100644 --- a/src/plugins/cpptools/cppoverviewmodel.h +++ b/src/plugins/cpptools/cppoverviewmodel.h @@ -54,6 +54,7 @@ public: bool isGenerated(const QModelIndex &sourceIndex) const override; Utils::Link linkFromIndex(const QModelIndex &sourceIndex) const override; Utils::LineColumn lineColumnFromIndex(const QModelIndex &sourceIndex) const override; + Range rangeFromIndex(const QModelIndex &sourceIndex) const override; private: CPlusPlus::Symbol *symbolFromIndex(const QModelIndex &index) const; diff --git a/src/plugins/cpptools/cppsymbolinfo.h b/src/plugins/cpptools/cppsymbolinfo.h index dcd00dd3c21..38edec11b3c 100644 --- a/src/plugins/cpptools/cppsymbolinfo.h +++ b/src/plugins/cpptools/cppsymbolinfo.h @@ -39,6 +39,7 @@ public: int endLine = 0; int endColumn = 0; QString fileName; + bool isPureDeclarationForUsage = false; }; } // namespace CppTools diff --git a/src/plugins/cpptools/cpptoolsconstants.h b/src/plugins/cpptools/cpptoolsconstants.h index 51ece3d025b..47fcd2568d9 100644 --- a/src/plugins/cpptools/cpptoolsconstants.h +++ b/src/plugins/cpptools/cpptoolsconstants.h @@ -93,5 +93,13 @@ const char LOCATOR_FILTER_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("CppTools", "C++ Cl const char SYMBOLS_FIND_FILTER_ID[] = "Symbols"; const char SYMBOLS_FIND_FILTER_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("CppTools", "C++ Symbols"); +// CLANG-UPGRADE-CHECK: Checks/update URLs. +// +// Upgrade the version in the URL. Note that we cannot use the macro +// CLANG_VERSION here because it might denote a version that was not yet +// released (e.g. 6.0.1, but only 6.0.0 was released). +constexpr const char TIDY_DOCUMENTATION_URL_TEMPLATE[] + = "https://releases.llvm.org/6.0.0/tools/clang/tools/extra/docs/clang-tidy/checks/%1.html"; + } // namespace Constants } // namespace CppTools diff --git a/src/plugins/debugger/debugger.qrc b/src/plugins/debugger/debugger.qrc index 33577e6d237..4dbc903b591 100644 --- a/src/plugins/debugger/debugger.qrc +++ b/src/plugins/debugger/debugger.qrc @@ -45,5 +45,7 @@ images/recordfill@2x.png images/recordoutline.png images/recordoutline@2x.png + images/tracepointoverlay.png + images/tracepointoverlay@2x.png diff --git a/src/plugins/debugger/qml/qmlinspectoragent.cpp b/src/plugins/debugger/qml/qmlinspectoragent.cpp index 1061522c844..9bcaac5745b 100644 --- a/src/plugins/debugger/qml/qmlinspectoragent.cpp +++ b/src/plugins/debugger/qml/qmlinspectoragent.cpp @@ -381,6 +381,51 @@ void QmlInspectorAgent::newObject(int engineId, int /*objectId*/, int /*parentId m_delayQueryTimer.start(); } +static void sortChildrenIfNecessary(WatchItem *propertiesWatch) +{ + if (boolSetting(SortStructMembers)) { + propertiesWatch->sortChildren([](const WatchItem *item1, const WatchItem *item2) { + return item1->name < item2->name; + }); + } +} + +static bool insertChildren(WatchItem *parent, const QVariant &value) +{ + switch (value.type()) { + case QVariant::Map: { + const QVariantMap map = value.toMap(); + for (auto it = map.begin(), end = map.end(); it != end; ++it) { + WatchItem *child = new WatchItem; + child->name = it.key(); + child->value = it.value().toString(); + child->type = QLatin1String(it.value().typeName()); + child->valueEditable = false; + child->wantsChildren = insertChildren(child, it.value()); + parent->appendChild(child); + } + sortChildrenIfNecessary(parent); + return true; + } + case QVariant::List: { + const QVariantList list = value.toList(); + for (int i = 0, end = list.size(); i != end; ++i) { + WatchItem *child = new WatchItem; + const QVariant &value = list.at(i); + child->arrayIndex = i; + child->value = value.toString(); + child->type = QLatin1String(value.typeName()); + child->valueEditable = false; + child->wantsChildren = insertChildren(child, value); + parent->appendChild(child); + } + return true; + } + default: + return false; + } +} + void QmlInspectorAgent::onValueChanged(int debugId, const QByteArray &propertyName, const QVariant &value) { @@ -392,6 +437,8 @@ void QmlInspectorAgent::onValueChanged(int debugId, const QByteArray &propertyNa << value.toString(); if (WatchItem *item = watchHandler->findItem(iname)) { item->value = value.toString(); + item->removeChildren(); + item->wantsChildren = insertChildren(item, value); item->update(); } } @@ -658,16 +705,11 @@ void QmlInspectorAgent::addWatchData(const ObjectReference &obj, propertyWatch->exp = propertyName; propertyWatch->type = property.valueTypeName(); propertyWatch->value = property.value().toString(); - propertyWatch->wantsChildren = false; + propertyWatch->wantsChildren = insertChildren(propertyWatch, property.value()); propertiesWatch->appendChild(propertyWatch); } - if (boolSetting(SortStructMembers)) { - propertiesWatch->sortChildren([](const WatchItem *item1, const WatchItem *item2) { - return item1->name < item2->name; - }); - } - + sortChildrenIfNecessary(propertiesWatch); m_qmlEngine->watchHandler()->insertItem(propertiesWatch); } diff --git a/src/plugins/git/gerrit/gerritdialog.cpp b/src/plugins/git/gerrit/gerritdialog.cpp index 8f3dea6b23e..d38d60cf151 100644 --- a/src/plugins/git/gerrit/gerritdialog.cpp +++ b/src/plugins/git/gerrit/gerritdialog.cpp @@ -224,7 +224,8 @@ void GerritDialog::remoteChanged() return; } *m_server = server; - refresh(); + if (isVisible()) + refresh(); } void GerritDialog::updateRemotes(bool forceReload) diff --git a/src/plugins/git/gerrit/gerritmodel.cpp b/src/plugins/git/gerrit/gerritmodel.cpp index 980ffa3d0c4..549f33196d7 100644 --- a/src/plugins/git/gerrit/gerritmodel.cpp +++ b/src/plugins/git/gerrit/gerritmodel.cpp @@ -480,19 +480,19 @@ static QStandardItem *numberSearchRecursion(QStandardItem *item, int number) if (QStandardItem *i = numberSearchRecursion(item->child(r, 0), number)) return i; } - return 0; + return nullptr; } QStandardItem *GerritModel::itemForNumber(int number) const { if (!number) - return 0; + return nullptr; const int numRows = rowCount(); for (int r = 0; r < numRows; ++r) { if (QStandardItem *i = numberSearchRecursion(item(r, 0), number)) return i; } - return 0; + return nullptr; } void GerritModel::refresh(const QSharedPointer &server, const QString &query) diff --git a/src/plugins/git/gerrit/gerritplugin.cpp b/src/plugins/git/gerrit/gerritplugin.cpp index 5e078d3c8e6..57e8fd269e4 100644 --- a/src/plugins/git/gerrit/gerritplugin.cpp +++ b/src/plugins/git/gerrit/gerritplugin.cpp @@ -267,7 +267,6 @@ GerritPlugin::GerritPlugin(QObject *parent) : QObject(parent) , m_parameters(new GerritParameters) , m_server(new GerritServer) - , m_gerritCommand(0), m_pushToGerritCommand(0) { } @@ -359,8 +358,8 @@ void GerritPlugin::openView() m_dialog = gd; } else { m_dialog->setCurrentPath(currentRepository()); - m_dialog->refresh(); } + m_dialog->refresh(); const Qt::WindowStates state = m_dialog->windowState(); if (state & Qt::WindowMinimized) m_dialog->setWindowState(state & ~Qt::WindowMinimized); diff --git a/src/plugins/git/gerrit/gerritplugin.h b/src/plugins/git/gerrit/gerritplugin.h index 404a2c9f255..bd9d554bfba 100644 --- a/src/plugins/git/gerrit/gerritplugin.h +++ b/src/plugins/git/gerrit/gerritplugin.h @@ -78,8 +78,8 @@ private: QSharedPointer m_parameters; QSharedPointer m_server; QPointer m_dialog; - Core::Command *m_gerritCommand; - Core::Command *m_pushToGerritCommand; + Core::Command *m_gerritCommand = nullptr; + Core::Command *m_pushToGerritCommand = nullptr; QString m_reviewers; }; diff --git a/src/plugins/git/gerrit/gerritpushdialog.cpp b/src/plugins/git/gerrit/gerritpushdialog.cpp index 622da381793..c7e726a4ead 100644 --- a/src/plugins/git/gerrit/gerritpushdialog.cpp +++ b/src/plugins/git/gerrit/gerritpushdialog.cpp @@ -115,7 +115,7 @@ void GerritPushDialog::initRemoteBranches() continue; const QString ref = entries.at(0).mid(remotesPrefix.size()); int refBranchIndex = ref.indexOf('/'); - int timeT = entries.at(1).leftRef(entries.at(1).indexOf(' ')).toInt(); + unsigned int timeT = entries.at(1).leftRef(entries.at(1).indexOf(' ')).toUInt(); BranchDate bd(ref.mid(refBranchIndex + 1), QDateTime::fromTime_t(timeT).date()); m_remoteBranches.insertMulti(ref.left(refBranchIndex), bd); } diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 3f03428594d..08e1cdb88dd 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -1137,7 +1137,7 @@ QStringList GitClient::setupCheckoutArguments(const QString &workingDirectory, ICore::settings(), "Git.CreateLocalBranchOnCheckout" /*setting*/, QDialogButtonBox::Yes | QDialogButtonBox::No /*buttons*/, QDialogButtonBox::No /*default button*/, - QDialogButtonBox::No /*button to save*/) == QDialogButtonBox::No) { + QDialogButtonBox::No /*button to save*/) != QDialogButtonBox::Yes) { return arguments; } diff --git a/src/plugins/projectexplorer/targetsettingspanel.cpp b/src/plugins/projectexplorer/targetsettingspanel.cpp index 9bc55384c4f..7248b475b43 100644 --- a/src/plugins/projectexplorer/targetsettingspanel.cpp +++ b/src/plugins/projectexplorer/targetsettingspanel.cpp @@ -335,10 +335,11 @@ public: case Qt::FontRole: { QFont font = parent()->data(column, role).value(); - if (TargetItem *targetItem = parent()->currentTargetItem()) - if (targetItem->target()->id() == m_kitId - && m_project == SessionManager::startupProject()) + if (TargetItem *targetItem = parent()->currentTargetItem()) { + Target *t = targetItem->target(); + if (t && t->id() == m_kitId && m_project == SessionManager::startupProject()) font.setBold(true); + } return font; } diff --git a/src/plugins/qbsprojectmanager/qbsprofilessettingspage.cpp b/src/plugins/qbsprojectmanager/qbsprofilessettingspage.cpp index c2eb6b45d5e..4b7387039f8 100644 --- a/src/plugins/qbsprojectmanager/qbsprofilessettingspage.cpp +++ b/src/plugins/qbsprojectmanager/qbsprofilessettingspage.cpp @@ -100,7 +100,7 @@ void QbsProfilesSettingsPage::finish() QbsProfilesSettingsWidget::QbsProfilesSettingsWidget(QWidget *parent) : QWidget(parent) - , m_model(QbsProjectManagerSettings::qbsSettingsBaseDir()) + , m_model(QbsProjectManagerSettings::qbsSettingsBaseDir(), qbs::Settings::UserScope) { m_model.setEditable(false); m_ui.setupUi(this); diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp b/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp index bb9bf44ce72..978ca571484 100644 --- a/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp +++ b/src/plugins/qbsprojectmanager/qbsprojectmanager.cpp @@ -118,7 +118,8 @@ QString QbsManager::profileForKit(const ProjectExplorer::Kit *k) if (!k) return QString(); m_instance->updateProfileIfNecessary(k); - return settings()->value(qtcProfilePrefix() + k->id().toString()).toString(); + return settings()->value(qtcProfilePrefix() + k->id().toString(), qbs::Settings::UserScope) + .toString(); } void QbsManager::setProfileForKit(const QString &name, const ProjectExplorer::Kit *k) @@ -236,7 +237,7 @@ void QbsManager::handleKitRemoval(ProjectExplorer::Kit *kit) { m_kitsToBeSetupForQbs.removeOne(kit); const QString key = qtcProfilePrefix() + kit->id().toString(); - const QString profileName = settings()->value(key).toString(); + const QString profileName = settings()->value(key, qbs::Settings::UserScope).toString(); settings()->remove(key); qbs::Profile(profileName, settings()).removeProfile(); } diff --git a/src/plugins/qmlprofiler/qmleventtype.cpp b/src/plugins/qmlprofiler/qmleventtype.cpp index c8cb6d2ae77..9cb99c0081e 100644 --- a/src/plugins/qmlprofiler/qmleventtype.cpp +++ b/src/plugins/qmlprofiler/qmleventtype.cpp @@ -28,26 +28,6 @@ namespace QmlProfiler { -QDataStream &operator>>(QDataStream &stream, QmlEventType &type) -{ - quint8 message; - quint8 rangeType; - QString displayName; - stream >> displayName >> type.m_data >> type.m_location >> message >> rangeType - >> type.m_detailType; - type.setDisplayName(displayName); - type.m_message = static_cast(message); - type.m_rangeType = static_cast(rangeType); - return stream; -} - -QDataStream &operator<<(QDataStream &stream, const QmlEventType &type) -{ - return stream << type.displayName() << type.m_data << type.m_location - << static_cast(type.m_message) << static_cast(type.m_rangeType) - << type.m_detailType; -} - static ProfileFeature qmlFeatureFromType(Message message, RangeType rangeType, int detailType) { switch (message) { @@ -75,6 +55,27 @@ static ProfileFeature qmlFeatureFromType(Message message, RangeType rangeType, i } } +QDataStream &operator>>(QDataStream &stream, QmlEventType &type) +{ + quint8 message; + quint8 rangeType; + QString displayName; + stream >> displayName >> type.m_data >> type.m_location >> message >> rangeType + >> type.m_detailType; + type.setDisplayName(displayName); + type.m_message = static_cast(message); + type.m_rangeType = static_cast(rangeType); + type.setFeature(qmlFeatureFromType(type.m_message, type.m_rangeType, type.m_detailType)); + return stream; +} + +QDataStream &operator<<(QDataStream &stream, const QmlEventType &type) +{ + return stream << type.displayName() << type.m_data << type.m_location + << static_cast(type.m_message) << static_cast(type.m_rangeType) + << type.m_detailType; +} + QmlEventType::QmlEventType(Message message, RangeType rangeType, int detailType, const QmlEventLocation &location, const QString &data, const QString displayName) : diff --git a/src/plugins/qmlprofiler/qmlprofiler.pro b/src/plugins/qmlprofiler/qmlprofiler.pro index a1edff0e2c2..884a63e24dd 100644 --- a/src/plugins/qmlprofiler/qmlprofiler.pro +++ b/src/plugins/qmlprofiler/qmlprofiler.pro @@ -15,6 +15,7 @@ SOURCES += \ qmleventlocation.cpp \ qmleventtype.cpp \ qmlnote.cpp \ + qmlprofileractions.cpp \ qmlprofileranimationsmodel.cpp \ qmlprofilerattachdialog.cpp \ qmlprofilerbindingloopsrenderpass.cpp \ @@ -55,6 +56,7 @@ HEADERS += \ qmleventtype.h \ qmlnote.h \ qmlprofiler_global.h \ + qmlprofileractions.h \ qmlprofileranimationsmodel.h \ qmlprofilerattachdialog.h \ qmlprofilerbindingloopsrenderpass.h \ diff --git a/src/plugins/qmlprofiler/qmlprofiler.qbs b/src/plugins/qmlprofiler/qmlprofiler.qbs index 74a2c7f8517..44103450c11 100644 --- a/src/plugins/qmlprofiler/qmlprofiler.qbs +++ b/src/plugins/qmlprofiler/qmlprofiler.qbs @@ -31,6 +31,7 @@ QtcPlugin { "qmleventtype.cpp", "qmleventtype.h", "qmlnote.cpp", "qmlnote.h", "qmlprofiler_global.h", + "qmlprofileractions.h", "qmlprofileractions.cpp", "qmlprofileranimationsmodel.h", "qmlprofileranimationsmodel.cpp", "qmlprofilerattachdialog.cpp", "qmlprofilerattachdialog.h", "qmlprofilerbindingloopsrenderpass.cpp","qmlprofilerbindingloopsrenderpass.h", diff --git a/src/plugins/qmlprofiler/qmlprofileractions.cpp b/src/plugins/qmlprofiler/qmlprofileractions.cpp new file mode 100644 index 00000000000..3fd754a4eb0 --- /dev/null +++ b/src/plugins/qmlprofiler/qmlprofileractions.cpp @@ -0,0 +1,113 @@ +/**************************************************************************** +** +** Copyright (C) 2018 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 "qmlprofileractions.h" +#include "qmlprofilerconstants.h" +#include "qmlprofilertool.h" +#include "qmlprofilerstatemanager.h" +#include "qmlprofilermodelmanager.h" + +#include + +#include +#include + +#include + +namespace QmlProfiler { +namespace Internal { + +using namespace Core; +using namespace Debugger::Constants; + +QmlProfilerActions::QmlProfilerActions(QObject *parent) : QObject(parent) +{} + +void QmlProfilerActions::attachToTool(QmlProfilerTool *tool) +{ + const QString description = tr("The QML Profiler can be used to find performance " + "bottlenecks in applications using QML."); + + m_runAction = std::make_unique(tr("QML Profiler")); + m_runAction->setToolTip(description); + QObject::connect(m_runAction.get(), &QAction::triggered, + tool, &QmlProfilerTool::profileStartupProject); + + QAction *toolStartAction = tool->startAction(); + QObject::connect(toolStartAction, &QAction::changed, this, [this, toolStartAction] { + m_runAction->setEnabled(toolStartAction->isEnabled()); + }); + + m_attachAction = std::make_unique(tr("QML Profiler (Attach to Waiting Application)")); + m_attachAction->setToolTip(description); + QObject::connect(m_attachAction.get(), &QAction::triggered, + tool, &QmlProfilerTool::attachToWaitingApplication); + + m_loadQmlTrace = std::make_unique(tr("Load QML Trace")); + connect(m_loadQmlTrace.get(), &QAction::triggered, + tool, &QmlProfilerTool::showLoadDialog, Qt::QueuedConnection); + + m_saveQmlTrace = std::make_unique(tr("Save QML Trace")); + connect(m_saveQmlTrace.get(), &QAction::triggered, + tool, &QmlProfilerTool::showSaveDialog, Qt::QueuedConnection); + + QmlProfilerStateManager *stateManager = tool->stateManager(); + connect(stateManager, &QmlProfilerStateManager::serverRecordingChanged, + this, [this, stateManager](bool recording) { + m_loadQmlTrace->setEnabled(!recording); + }); + m_loadQmlTrace->setEnabled(!stateManager->serverRecording()); + + QmlProfilerModelManager *modelManager = tool->modelManager(); + connect(modelManager, &QmlProfilerModelManager::traceChanged, + this, [this, modelManager] { + m_saveQmlTrace->setEnabled(!modelManager->isEmpty()); + }); + m_saveQmlTrace->setEnabled(!modelManager->isEmpty()); +} + +void QmlProfilerActions::registerActions() +{ + m_options.reset(ActionManager::createMenu("Analyzer.Menu.QMLOptions")); + m_options->menu()->setTitle(tr("QML Profiler Options")); + m_options->menu()->setEnabled(true); + ActionContainer *menu = ActionManager::actionContainer(M_DEBUG_ANALYZER); + + menu->addAction(ActionManager::registerAction(m_runAction.get(), + "QmlProfiler.Internal"), + Debugger::Constants::G_ANALYZER_TOOLS); + menu->addAction(ActionManager::registerAction(m_attachAction.get(), + "QmlProfiler.AttachToWaitingApplication"), + Debugger::Constants::G_ANALYZER_REMOTE_TOOLS); + + menu->addMenu(m_options.get(), G_ANALYZER_OPTIONS); + m_options->addAction(ActionManager::registerAction(m_loadQmlTrace.get(), + Constants::QmlProfilerLoadActionId)); + m_options->addAction(ActionManager::registerAction(m_saveQmlTrace.get(), + Constants::QmlProfilerSaveActionId)); +} + +} // namespace Internal +} // namespace QmlProfiler diff --git a/src/plugins/qmlprofiler/qmlprofileractions.h b/src/plugins/qmlprofiler/qmlprofileractions.h new file mode 100644 index 00000000000..2a0b80eea35 --- /dev/null +++ b/src/plugins/qmlprofiler/qmlprofileractions.h @@ -0,0 +1,57 @@ +/**************************************************************************** +** +** Copyright (C) 2018 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 + +#include +#include + +#include + +namespace QmlProfiler { +namespace Internal { + +class QmlProfilerTool; +class QmlProfilerActions : public QObject +{ + Q_OBJECT +public: + explicit QmlProfilerActions(QObject *parent = nullptr); + + void attachToTool(QmlProfilerTool *tool); + void registerActions(); + +private: + std::unique_ptr m_options; + std::unique_ptr m_loadQmlTrace; + std::unique_ptr m_saveQmlTrace; + std::unique_ptr m_runAction; + std::unique_ptr m_attachAction; +}; + +} // namespace Internal +} // namespace QmlProfiler diff --git a/src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp b/src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp index 033a4b48332..55a2cfea4b4 100644 --- a/src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp +++ b/src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp @@ -123,7 +123,7 @@ QmlProfilerModelManager::QmlProfilerModelManager(QObject *parent) : d->detailsRewriter = new Internal::QmlProfilerDetailsRewriter(this); connect(d->detailsRewriter, &Internal::QmlProfilerDetailsRewriter::rewriteDetailsString, - this, &QmlProfilerModelManager::typeDetailsChanged); + this, &QmlProfilerModelManager::setTypeDetails); connect(d->detailsRewriter, &Internal::QmlProfilerDetailsRewriter::eventDetailsChanged, this, &QmlProfilerModelManager::typeDetailsFinished); @@ -202,6 +202,24 @@ void QmlProfilerModelManager::replayQmlEvents(QmlEventLoader loader, } } +void QmlProfilerModelManager::initialize() +{ + d->textMarkModel->hideTextMarks(); + TimelineTraceManager::initialize(); +} + +void QmlProfilerModelManager::clearEventStorage() +{ + TimelineTraceManager::clearEventStorage(); + emit traceChanged(); +} + +void QmlProfilerModelManager::clearTypeStorage() +{ + d->textMarkModel->clear(); + TimelineTraceManager::clearTypeStorage(); +} + static QString getDisplayName(const QmlEventType &event) { if (event.location().filename().isEmpty()) { @@ -255,6 +273,8 @@ void QmlProfilerModelManager::finalize() // which happens on stateChanged(Done). TimelineTraceManager::finalize(); + d->textMarkModel->showTextMarks(); + emit traceChanged(); } void QmlProfilerModelManager::populateFileFinder(const ProjectExplorer::Target *target) @@ -267,12 +287,13 @@ QString QmlProfilerModelManager::findLocalFile(const QString &remoteFile) return d->detailsRewriter->getLocalFile(remoteFile); } -void QmlProfilerModelManager::detailsChanged(int typeId, const QString &newString) +void QmlProfilerModelManager::setTypeDetails(int typeId, const QString &details) { QTC_ASSERT(typeId < numEventTypes(), return); QmlEventType type = eventType(typeId); - type.setData(newString); - setEventType(typeId, std::move(type)); + type.setData(details); + // Don't rewrite the details again, but directly push the type into the type storage. + Timeline::TimelineTraceManager::setEventType(typeId, std::move(type)); emit typeDetailsChanged(typeId); } diff --git a/src/plugins/qmlprofiler/qmlprofilermodelmanager.h b/src/plugins/qmlprofiler/qmlprofilermodelmanager.h index a14c37042ce..3dd38c66e20 100644 --- a/src/plugins/qmlprofiler/qmlprofilermodelmanager.h +++ b/src/plugins/qmlprofiler/qmlprofilermodelmanager.h @@ -66,6 +66,7 @@ public: void replayQmlEvents(QmlEventLoader loader, Initializer initializer, Finalizer finalizer, ErrorHandler errorHandler, QFutureInterface &future) const; + void initialize() override; void finalize() override; void populateFileFinder(const ProjectExplorer::Target *target = nullptr); @@ -83,13 +84,17 @@ public: QmlEventFilter rangeFilter(qint64 start, qint64 end) const; signals: + void traceChanged(); void typeDetailsChanged(int typeId); void typeDetailsFinished(); private: - void detailsChanged(int typeId, const QString &newString); + void setTypeDetails(int typeId, const QString &details); void restrictByFilter(QmlEventFilter filter); + void clearEventStorage() final; + void clearTypeStorage() final; + Timeline::TimelineTraceFile *createTraceFile() override; void replayEvents(TraceEventLoader loader, Initializer initializer, Finalizer finalizer, ErrorHandler errorHandler, QFutureInterface &future) const override; diff --git a/src/plugins/qmlprofiler/qmlprofilerplugin.cpp b/src/plugins/qmlprofiler/qmlprofilerplugin.cpp index 25954d23a3b..62dcdc9f6b6 100644 --- a/src/plugins/qmlprofiler/qmlprofilerplugin.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerplugin.cpp @@ -30,6 +30,7 @@ #include "qmlprofilersettings.h" #include "qmlprofilertool.h" #include "qmlprofilertimelinemodel.h" +#include "qmlprofileractions.h" #ifdef WITH_TESTS @@ -84,6 +85,7 @@ class QmlProfilerPluginPrivate public: QmlProfilerTool m_profilerTool; QmlProfilerOptionsPage m_profilerOptionsPage; + QmlProfilerActions m_actions; }; bool QmlProfilerPlugin::initialize(const QStringList &arguments, QString *errorString) @@ -99,6 +101,8 @@ bool QmlProfilerPlugin::initialize(const QStringList &arguments, QString *errorS void QmlProfilerPlugin::extensionsInitialized() { d = new QmlProfilerPluginPrivate; + d->m_actions.attachToTool(&d->m_profilerTool); + d->m_actions.registerActions(); RunConfiguration::registerAspect(); diff --git a/src/plugins/qmlprofiler/qmlprofilerstatisticsview.cpp b/src/plugins/qmlprofiler/qmlprofilerstatisticsview.cpp index ffc92a37a01..91881d79d08 100644 --- a/src/plugins/qmlprofiler/qmlprofilerstatisticsview.cpp +++ b/src/plugins/qmlprofiler/qmlprofilerstatisticsview.cpp @@ -274,8 +274,14 @@ void QmlProfilerStatisticsMainView::jumpToItem(int typeIndex) { displayTypeIndex(typeIndex); + QSortFilterProxyModel *sortModel = qobject_cast(model()); + QTC_ASSERT(sortModel, return); + + QAbstractItemModel *sourceModel = sortModel->sourceModel(); + QTC_ASSERT(sourceModel, return); + // show in editor - getSourceLocation(model()->index(typeIndex, MainLocation), + getSourceLocation(sourceModel->index(typeIndex, MainLocation), [this](const QString &fileName, int line, int column) { emit gotoSourceLocation(fileName, line, column); }); diff --git a/src/plugins/qmlprofiler/qmlprofilertextmark.cpp b/src/plugins/qmlprofiler/qmlprofilertextmark.cpp index 2112bd172aa..21173734505 100644 --- a/src/plugins/qmlprofiler/qmlprofilertextmark.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertextmark.cpp @@ -119,6 +119,18 @@ void QmlProfilerTextMarkModel::createMarks(QmlProfilerViewManager *viewManager, } } +void QmlProfilerTextMarkModel::showTextMarks() +{ + for (QmlProfilerTextMark *mark : qAsConst(m_marks)) + mark->setVisible(true); +} + +void QmlProfilerTextMarkModel::hideTextMarks() +{ + for (QmlProfilerTextMark *mark : qAsConst(m_marks)) + mark->setVisible(false); +} + bool QmlProfilerTextMark::addToolTipContent(QLayout *target) const { QGridLayout *layout = new QGridLayout; diff --git a/src/plugins/qmlprofiler/qmlprofilertextmark.h b/src/plugins/qmlprofiler/qmlprofilertextmark.h index 09beb9bf88a..8ed4576ea19 100644 --- a/src/plugins/qmlprofiler/qmlprofilertextmark.h +++ b/src/plugins/qmlprofiler/qmlprofilertextmark.h @@ -59,6 +59,9 @@ public: void addTextMarkId(int typeId, const QmlEventLocation &location); void createMarks(QmlProfilerViewManager *viewManager, const QString &fileName); + void showTextMarks(); + void hideTextMarks(); + private: struct TextMarkId { int typeId; diff --git a/src/plugins/qmlprofiler/qmlprofilertimelinemodel.cpp b/src/plugins/qmlprofiler/qmlprofilertimelinemodel.cpp index 82b6ba563b8..675646ea4c5 100644 --- a/src/plugins/qmlprofiler/qmlprofilertimelinemodel.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertimelinemodel.cpp @@ -105,6 +105,7 @@ QVariantMap QmlProfilerTimelineModel::locationFromTypeId(int index) const void QmlProfilerTimelineModel::initialize() { + setHidden(!(modelManager()->visibleFeatures() & (1ULL << m_mainFeature))); } void QmlProfilerTimelineModel::finalize() diff --git a/src/plugins/qmlprofiler/qmlprofilertool.cpp b/src/plugins/qmlprofiler/qmlprofilertool.cpp index 750eabc9f36..dd8605a2d2c 100644 --- a/src/plugins/qmlprofiler/qmlprofilertool.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertool.cpp @@ -57,6 +57,8 @@ #include #include +#include +#include #include #include #include @@ -66,9 +68,6 @@ #include #include #include -#include -#include -#include #include @@ -117,10 +116,6 @@ public: QToolButton *m_displayFeaturesButton = nullptr; QMenu *m_displayFeaturesMenu = nullptr; - // save and load actions - QAction *m_saveQmlTrace = nullptr; - QAction *m_loadQmlTrace = nullptr; - // elapsed time display QLabel *m_timeLabel = nullptr; QTimer m_recordingTimer; @@ -163,24 +158,6 @@ QmlProfilerTool::QmlProfilerTool() this, &QmlProfilerTool::onLoadSaveFinished); d->m_profilerConnections->setModelManager(d->m_profilerModelManager); - Command *command = nullptr; - - ActionContainer *menu = ActionManager::actionContainer(M_DEBUG_ANALYZER); - ActionContainer *options = ActionManager::createMenu("Analyzer.Menu.QMLOptions"); - options->menu()->setTitle(tr("QML Profiler Options")); - menu->addMenu(options, G_ANALYZER_OPTIONS); - options->menu()->setEnabled(true); - - QAction *act = d->m_loadQmlTrace = new QAction(tr("Load QML Trace"), options); - command = ActionManager::registerAction(act, Constants::QmlProfilerLoadActionId); - connect(act, &QAction::triggered, this, &QmlProfilerTool::showLoadDialog, Qt::QueuedConnection); - options->addAction(command); - - act = d->m_saveQmlTrace = new QAction(tr("Save QML Trace"), options); - d->m_saveQmlTrace->setEnabled(false); - command = ActionManager::registerAction(act, Constants::QmlProfilerSaveActionId); - connect(act, &QAction::triggered, this, &QmlProfilerTool::showSaveDialog, Qt::QueuedConnection); - options->addAction(command); d->m_recordingTimer.setInterval(100); connect(&d->m_recordingTimer, &QTimer::timeout, this, &QmlProfilerTool::updateTimeDisplay); @@ -246,32 +223,10 @@ QmlProfilerTool::QmlProfilerTool() // is available, then we can populate the file finder d->m_profilerModelManager->populateFileFinder(); - QString description = tr("The QML Profiler can be used to find performance " - "bottlenecks in applications using QML."); - d->m_startAction = Debugger::createStartAction(); d->m_stopAction = Debugger::createStopAction(); - act = new QAction(tr("QML Profiler"), this); - act->setToolTip(description); - menu->addAction(ActionManager::registerAction(act, "QmlProfiler.Internal"), - Debugger::Constants::G_ANALYZER_TOOLS); - QObject::connect(act, &QAction::triggered, this, [this] { - if (!prepareTool()) - return; - Debugger::selectPerspective(Constants::QmlProfilerPerspectiveId); - ProjectExplorerPlugin::runStartupProject(ProjectExplorer::Constants::QML_PROFILER_RUN_MODE); - }); - QObject::connect(d->m_startAction, &QAction::triggered, act, &QAction::triggered); - QObject::connect(d->m_startAction, &QAction::changed, act, [act, this] { - act->setEnabled(d->m_startAction->isEnabled()); - }); - - act = new QAction(tr("QML Profiler (Attach to Waiting Application)"), this); - act->setToolTip(description); - menu->addAction(ActionManager::registerAction(act, "QmlProfiler.AttachToWaitingApplication"), - Debugger::Constants::G_ANALYZER_REMOTE_TOOLS); - QObject::connect(act, &QAction::triggered, this, &QmlProfilerTool::attachToWaitingApplication); + QObject::connect(d->m_startAction, &QAction::triggered, this, &QmlProfilerTool::profileStartupProject); Utils::ToolbarDescription toolbar; toolbar.addAction(d->m_startAction); @@ -361,6 +316,13 @@ void QmlProfilerTool::finalizeRunControl(QmlProfilerRunner *runWorker) d->m_toolBusy = false; updateRunActions(); disconnect(d->m_stopAction, &QAction::triggered, runControl, &RunControl::initiateStop); + + // If we're still trying to connect, stop now. + if (d->m_profilerConnections->isConnecting()) { + showNonmodalWarning(tr("The application finished before a connection could be " + "established. No data was loaded.")); + d->m_profilerConnections->disconnectFromServer(); + } }; connect(runControl, &RunControl::stopped, this, handleStop); @@ -516,18 +478,13 @@ void QmlProfilerTool::setButtonsEnabled(bool enable) d->m_recordFeaturesMenu->setEnabled(enable); } -void QmlProfilerTool::createTextMarks() +void QmlProfilerTool::createInitialTextMarks() { QmlProfilerTextMarkModel *model = d->m_profilerModelManager->textMarkModel(); foreach (IDocument *document, DocumentModel::openedDocuments()) model->createMarks(d->m_viewContainer, document->filePath().toString()); } -void QmlProfilerTool::clearTextMarks() -{ - d->m_profilerModelManager->textMarkModel()->clear(); -} - bool QmlProfilerTool::prepareTool() { if (d->m_profilerState->clientRecording()) { @@ -618,16 +575,6 @@ void QmlProfilerTool::showErrorDialog(const QString &error) errorDialog->show(); } -void QmlProfilerTool::showLoadOption() -{ - d->m_loadQmlTrace->setEnabled(!d->m_profilerState->serverRecording()); -} - -void QmlProfilerTool::showSaveOption() -{ - d->m_saveQmlTrace->setEnabled(!d->m_profilerModelManager->isEmpty()); -} - void saveLastTraceFile(const QString &filename) { QmlProfilerSettings *settings = QmlProfilerPlugin::globalSettings(); @@ -681,6 +628,24 @@ void QmlProfilerTool::showLoadDialog() } } +void QmlProfilerTool::profileStartupProject() +{ + if (!prepareTool()) + return; + Debugger::selectPerspective(Constants::QmlProfilerPerspectiveId); + ProjectExplorerPlugin::runStartupProject(ProjectExplorer::Constants::QML_PROFILER_RUN_MODE); +} + +QAction *QmlProfilerTool::startAction() const +{ + return d->m_startAction; +} + +QAction *QmlProfilerTool::stopAction() const +{ + return d->m_stopAction; +} + void QmlProfilerTool::onLoadSaveFinished() { disconnect(d->m_profilerModelManager, &QmlProfilerModelManager::recordedFeaturesChanged, @@ -704,24 +669,12 @@ bool QmlProfilerTool::checkForUnsavedNotes() QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes; } -void QmlProfilerTool::restoreFeatureVisibility() -{ - // Restore the shown/hidden state of features to what the user selected. When clearing data the - // the model manager sets its features to 0, and models get automatically shown, for the mockup. - quint64 features = 0; - foreach (const QAction *action, d->m_displayFeaturesMenu->actions()) { - if (action->isChecked()) - features |= (1ULL << action->data().toUInt()); - } - d->m_profilerModelManager->setVisibleFeatures(features); -} - void QmlProfilerTool::clientsDisconnected() { if (d->m_toolBusy) { if (d->m_profilerModelManager->aggregateTraces()) { d->m_profilerModelManager->finalize(); - } else { + } else if (d->m_profilerState->serverRecording()) { // If the application stopped by itself, check if we have all the data if (d->m_profilerState->currentState() == QmlProfilerStateManager::AppDying || d->m_profilerState->currentState() == QmlProfilerStateManager::Idle) { @@ -787,22 +740,19 @@ void QmlProfilerTool::setRecordedFeatures(quint64 features) void QmlProfilerTool::initialize() { - restoreFeatureVisibility(); setButtonsEnabled(false); // Other buttons disabled } void QmlProfilerTool::finalize() { - showSaveOption(); updateTimeDisplay(); - createTextMarks(); + createInitialTextMarks(); setButtonsEnabled(true); d->m_recordButton->setEnabled(true); } void QmlProfilerTool::clear() { - clearTextMarks(); clearDisplay(); setButtonsEnabled(true); d->m_recordButton->setEnabled(true); @@ -878,7 +828,6 @@ void QmlProfilerTool::profilerStateChanged() void QmlProfilerTool::serverRecordingChanged() { - showLoadOption(); if (d->m_profilerState->currentState() == QmlProfilerStateManager::AppRunning) { // clear the old data each time we start a new profiling session if (d->m_profilerState->serverRecording()) { diff --git a/src/plugins/qmlprofiler/qmlprofilertool.h b/src/plugins/qmlprofiler/qmlprofilertool.h index 721184a1f27..180f1c090cf 100644 --- a/src/plugins/qmlprofiler/qmlprofilertool.h +++ b/src/plugins/qmlprofiler/qmlprofilertool.h @@ -77,6 +77,14 @@ public: void gotoSourceLocation(const QString &fileUrl, int lineNumber, int columnNumber); + void showSaveDialog(); + void showLoadDialog(); + + void profileStartupProject(); + + QAction *startAction() const; + QAction *stopAction() const; + private: void clearEvents(); void clearData(); @@ -85,10 +93,6 @@ private: void updateTimeDisplay(); void showTimeLineSearch(); - void showSaveOption(); - void showLoadOption(); - void showSaveDialog(); - void showLoadDialog(); void onLoadSaveFinished(); void toggleRequestedFeature(QAction *action); @@ -99,10 +103,8 @@ private: template void updateFeatures(quint64 features); bool checkForUnsavedNotes(); - void restoreFeatureVisibility(); void setButtonsEnabled(bool enable); - void createTextMarks(); - void clearTextMarks(); + void createInitialTextMarks(); void initialize(); void finalize(); diff --git a/src/plugins/qmlprofiler/qmlprofilertracefile.cpp b/src/plugins/qmlprofiler/qmlprofilertracefile.cpp index 0a69f1324c5..38ac383f363 100644 --- a/src/plugins/qmlprofiler/qmlprofilertracefile.cpp +++ b/src/plugins/qmlprofiler/qmlprofilertracefile.cpp @@ -191,6 +191,8 @@ void QmlProfilerTraceFile::loadQtd(QIODevice *device) if (stream.hasError()) fail(tr("Error while parsing trace data file: %1").arg(stream.errorString())); + else + finish(); } void QmlProfilerTraceFile::loadQzt(QIODevice *device) @@ -285,6 +287,8 @@ void QmlProfilerTraceFile::loadQzt(QIODevice *device) buffer.close(); setDeviceProgress(device); } + + finish(); } void QmlProfilerTraceFile::addEventsProgress(qint64 timestamp) diff --git a/src/plugins/qmlprofiler/tests/localqmlprofilerrunner_test.cpp b/src/plugins/qmlprofiler/tests/localqmlprofilerrunner_test.cpp index 2181dfbd338..a4721bf4500 100644 --- a/src/plugins/qmlprofiler/tests/localqmlprofilerrunner_test.cpp +++ b/src/plugins/qmlprofiler/tests/localqmlprofilerrunner_test.cpp @@ -96,6 +96,9 @@ void LocalQmlProfilerRunnerTest::testRunner() connectRunner(); + QTest::ignoreMessage( + QtDebugMsg, "Invalid run control state transition from " + "\"RunControlState::Starting\" to \"RunControlState::Stopped\""); runControl->initiateStart(); QTRY_COMPARE_WITH_TIMEOUT(startCount, 1, 30000); diff --git a/src/plugins/qmlprofiler/tests/qmleventtype_test.cpp b/src/plugins/qmlprofiler/tests/qmleventtype_test.cpp index 8beebaa3f89..366298c6f4d 100644 --- a/src/plugins/qmlprofiler/tests/qmleventtype_test.cpp +++ b/src/plugins/qmlprofiler/tests/qmleventtype_test.cpp @@ -136,6 +136,7 @@ void QmlEventTypeTest::testStreamOps() rstream >> type2; + QCOMPARE(type.feature(), type2.feature()); QCOMPARE(type.message(), type2.message()); QCOMPARE(type.rangeType(), type2.rangeType()); QCOMPARE(type.detailType(), type2.detailType()); diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index ab10ab7d0b1..9ef886f2972 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -4131,7 +4131,7 @@ void TextEditorWidgetPrivate::updateLineAnnotation(const PaintEventData &data, QRect updateRect(lineRect.toRect().topRight(), boundingRect.toRect().bottomRight()); updateRect.setLeft(qBound(0, updateRect.left(), q->viewport()->width() - 1)); updateRect.setRight(qBound(0, updateRect.right(), q->viewport()->width() - 1)); - if (!updateRect.isEmpty() && !data.eventRect.contains(updateRect)) + if (!updateRect.isEmpty() && !data.eventRect.contains(q->viewport()->rect() & updateRect)) q->viewport()->update(updateRect); } diff --git a/src/shared/proparser/qmakeparser.cpp b/src/shared/proparser/qmakeparser.cpp index 6b0ae22e83d..8d6ef622fd0 100644 --- a/src/shared/proparser/qmakeparser.cpp +++ b/src/shared/proparser/qmakeparser.cpp @@ -42,11 +42,17 @@ QT_BEGIN_NAMESPACE // /////////////////////////////////////////////////////////////////////// +ProFileCache::ProFileCache() +{ + QMakeVfs::ref(); +} + ProFileCache::~ProFileCache() { foreach (const Entry &ent, parsed_files) if (ent.pro) ent.pro->deref(); + QMakeVfs::deref(); } void ProFileCache::discardFile(const QString &fileName, QMakeVfs *vfs) diff --git a/src/shared/proparser/qmakeparser.h b/src/shared/proparser/qmakeparser.h index 0612b922620..a0c1ca17f18 100644 --- a/src/shared/proparser/qmakeparser.h +++ b/src/shared/proparser/qmakeparser.h @@ -197,7 +197,7 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QMakeParser::ParseFlags) class QMAKE_EXPORT ProFileCache { public: - ProFileCache() {} + ProFileCache(); ~ProFileCache(); void discardFile(int id); diff --git a/src/shared/proparser/qmakevfs.cpp b/src/shared/proparser/qmakevfs.cpp index c5c5b75c749..f438978badc 100644 --- a/src/shared/proparser/qmakevfs.cpp +++ b/src/shared/proparser/qmakevfs.cpp @@ -49,13 +49,23 @@ QMakeVfs::QMakeVfs() #ifndef QT_NO_TEXTCODEC m_textCodec = 0; #endif + ref(); +} + +QMakeVfs::~QMakeVfs() +{ + deref(); +} + +void QMakeVfs::ref() +{ #ifdef PROEVALUATOR_THREAD_SAFE QMutexLocker locker(&s_mutex); #endif ++s_refCount; } -QMakeVfs::~QMakeVfs() +void QMakeVfs::deref() { #ifdef PROEVALUATOR_THREAD_SAFE QMutexLocker locker(&s_mutex); @@ -67,7 +77,6 @@ QMakeVfs::~QMakeVfs() } } - #ifdef PROPARSER_THREAD_SAFE QMutex QMakeVfs::s_mutex; #endif diff --git a/src/shared/proparser/qmakevfs.h b/src/shared/proparser/qmakevfs.h index 34dd96fd7b7..00547cf7fce 100644 --- a/src/shared/proparser/qmakevfs.h +++ b/src/shared/proparser/qmakevfs.h @@ -74,6 +74,9 @@ public: QMakeVfs(); ~QMakeVfs(); + static void ref(); + static void deref(); + int idForFileName(const QString &fn, VfsFlags flags); QString fileNameForId(int id); bool writeFile(int id, QIODevice::OpenMode mode, VfsFlags flags, const QString &contents, QString *errStr); diff --git a/src/shared/qbs b/src/shared/qbs index 49aec667b6f..40746dae364 160000 --- a/src/shared/qbs +++ b/src/shared/qbs @@ -1 +1 @@ -Subproject commit 49aec667b6f91b45a14b35cad42cb3b2dbcfbe33 +Subproject commit 40746dae36452398649481fecad9cdc5f25cc80f diff --git a/src/tools/clangbackend/source/clangbackendclangipc-source.pri b/src/tools/clangbackend/source/clangbackendclangipc-source.pri index aad93688374..b3b88e7ac40 100644 --- a/src/tools/clangbackend/source/clangbackendclangipc-source.pri +++ b/src/tools/clangbackend/source/clangbackendclangipc-source.pri @@ -25,7 +25,7 @@ HEADERS += \ $$PWD/clangjobs.h \ $$PWD/clangparsesupportivetranslationunitjob.h \ $$PWD/clangreferencescollector.h \ - $$PWD/clangrequestdocumentannotationsjob.h \ + $$PWD/clangrequestannotationsjob.h \ $$PWD/clangrequestreferencesjob.h \ $$PWD/clangrequesttooltipjob.h \ $$PWD/clangresumedocumentjob.h \ @@ -38,8 +38,8 @@ HEADERS += \ $$PWD/clangtranslationunitupdater.h \ $$PWD/clangtype.h \ $$PWD/clangunsavedfilesshallowarguments.h \ - $$PWD/clangupdatedocumentannotationsjob.h \ - $$PWD/clangupdateextradocumentannotationsjob.h \ + $$PWD/clangupdateannotationsjob.h \ + $$PWD/clangupdateextraannotationsjob.h \ $$PWD/codecompleter.h \ $$PWD/codecompletionchunkconverter.h \ $$PWD/codecompletionsextractor.h \ @@ -84,7 +84,7 @@ SOURCES += \ $$PWD/clangparsesupportivetranslationunitjob.cpp \ $$PWD/clangresumedocumentjob.cpp \ $$PWD/clangreferencescollector.cpp \ - $$PWD/clangrequestdocumentannotationsjob.cpp \ + $$PWD/clangrequestannotationsjob.cpp \ $$PWD/clangrequestreferencesjob.cpp \ $$PWD/clangrequesttooltipjob.cpp \ $$PWD/clangsuspenddocumentjob.cpp \ @@ -95,8 +95,8 @@ SOURCES += \ $$PWD/clangtranslationunitupdater.cpp \ $$PWD/clangtype.cpp \ $$PWD/clangunsavedfilesshallowarguments.cpp \ - $$PWD/clangupdatedocumentannotationsjob.cpp \ - $$PWD/clangupdateextradocumentannotationsjob.cpp \ + $$PWD/clangupdateannotationsjob.cpp \ + $$PWD/clangupdateextraannotationsjob.cpp \ $$PWD/codecompleter.cpp \ $$PWD/codecompletionchunkconverter.cpp \ $$PWD/codecompletionsextractor.cpp \ diff --git a/src/tools/clangbackend/source/clangcodemodelserver.cpp b/src/tools/clangbackend/source/clangcodemodelserver.cpp index 34847139e3c..a9932ddb9a3 100644 --- a/src/tools/clangbackend/source/clangcodemodelserver.cpp +++ b/src/tools/clangbackend/source/clangcodemodelserver.cpp @@ -57,8 +57,8 @@ namespace ClangBackEnd { ClangCodeModelServer::ClangCodeModelServer() : documents(projects, unsavedFiles) { - updateDocumentAnnotationsTimer.setSingleShot(true); - QObject::connect(&updateDocumentAnnotationsTimer, + updateAnnotationsTimer.setSingleShot(true); + QObject::connect(&updateAnnotationsTimer, &QTimer::timeout, [this]() { processJobsForDirtyAndVisibleDocuments(); @@ -75,7 +75,7 @@ ClangCodeModelServer::ClangCodeModelServer() &ClangFileSystemWatcher::fileChanged, [this](const Utf8String &filePath) { if (!documents.hasDocumentWithFilePath(filePath)) - updateDocumentAnnotationsTimer.start(0); + updateAnnotationsTimer.start(0); }); } @@ -92,11 +92,10 @@ static std::vector operator+(const std::vector &a, return result; } -// TODO: Rename to createOrUpdate... -void ClangCodeModelServer::registerTranslationUnitsForEditor(const ClangBackEnd::RegisterTranslationUnitForEditorMessage &message) +void ClangCodeModelServer::documentsOpened(const ClangBackEnd::DocumentsOpenedMessage &message) { - qCDebug(serverLog) << "########## registerTranslationUnitsForEditor"; - TIME_SCOPE_DURATION("ClangCodeModelServer::registerTranslationUnitsForEditor"); + qCDebug(serverLog) << "########## documentsOpened"; + TIME_SCOPE_DURATION("ClangCodeModelServer::documentsOpened"); try { DocumentResetInfos toReset; @@ -115,14 +114,14 @@ void ClangCodeModelServer::registerTranslationUnitsForEditor(const ClangBackEnd: processSuspendResumeJobs(documents.documents()); processInitialJobsForDocuments(createdDocuments + resetDocuments_); } catch (const std::exception &exception) { - qWarning() << "Error in ClangCodeModelServer::registerTranslationUnitsForEditor:" << exception.what(); + qWarning() << "Error in ClangCodeModelServer::documentsOpened:" << exception.what(); } } -void ClangCodeModelServer::updateTranslationUnitsForEditor(const UpdateTranslationUnitsForEditorMessage &message) +void ClangCodeModelServer::documentsChanged(const DocumentsChangedMessage &message) { - qCDebug(serverLog) << "########## updateTranslationUnitsForEditor"; - TIME_SCOPE_DURATION("ClangCodeModelServer::updateTranslationUnitsForEditor"); + qCDebug(serverLog) << "########## documentsChanged"; + TIME_SCOPE_DURATION("ClangCodeModelServer::documentsChanged"); try { const auto newerFileContainers = documents.newerFileContainers(message.fileContainers); @@ -138,17 +137,17 @@ void ClangCodeModelServer::updateTranslationUnitsForEditor(const UpdateTranslati // Start the jobs on the next event loop iteration since otherwise // we might block the translation unit for a completion request // that comes right after this message. - updateDocumentAnnotationsTimer.start(0); + updateAnnotationsTimer.start(0); } } catch (const std::exception &exception) { - qWarning() << "Error in ClangCodeModelServer::updateTranslationUnitsForEditor:" << exception.what(); + qWarning() << "Error in ClangCodeModelServer::documentsChanged:" << exception.what(); } } -void ClangCodeModelServer::unregisterTranslationUnitsForEditor(const ClangBackEnd::UnregisterTranslationUnitsForEditorMessage &message) +void ClangCodeModelServer::documentsClosed(const ClangBackEnd::DocumentsClosedMessage &message) { - qCDebug(serverLog) << "########## unregisterTranslationUnitsForEditor"; - TIME_SCOPE_DURATION("ClangCodeModelServer::unregisterTranslationUnitsForEditor"); + qCDebug(serverLog) << "########## documentsClosed"; + TIME_SCOPE_DURATION("ClangCodeModelServer::documentsClosed"); try { for (const auto &fileContainer : message.fileContainers) { @@ -158,7 +157,7 @@ void ClangCodeModelServer::unregisterTranslationUnitsForEditor(const ClangBackEn documents.remove(message.fileContainers); unsavedFiles.remove(message.fileContainers); } catch (const std::exception &exception) { - qWarning() << "Error in ClangCodeModelServer::unregisterTranslationUnitsForEditor:" << exception.what(); + qWarning() << "Error in ClangCodeModelServer::documentsClosed:" << exception.what(); } } @@ -170,10 +169,10 @@ static DocumentResetInfos toDocumentResetInfos(const std::vector &docu return infos; } -void ClangCodeModelServer::registerProjectPartsForEditor(const RegisterProjectPartsForEditorMessage &message) +void ClangCodeModelServer::projectPartsUpdated(const ProjectPartsUpdatedMessage &message) { - qCDebug(serverLog) << "########## registerProjectPartsForEditor"; - TIME_SCOPE_DURATION("ClangCodeModelServer::registerProjectPartsForEditor"); + qCDebug(serverLog) << "########## projectPartsUpdated"; + TIME_SCOPE_DURATION("ClangCodeModelServer::projectPartsUpdated"); try { projects.createOrUpdate(message.projectContainers); @@ -183,60 +182,60 @@ void ClangCodeModelServer::registerProjectPartsForEditor(const RegisterProjectPa processJobsForDirtyAndVisibleDocuments(); } catch (const std::exception &exception) { - qWarning() << "Error in ClangCodeModelServer::registerProjectPartsForEditor:" << exception.what(); + qWarning() << "Error in ClangCodeModelServer::projectPartsUpdated:" << exception.what(); } } -void ClangCodeModelServer::unregisterProjectPartsForEditor(const UnregisterProjectPartsForEditorMessage &message) +void ClangCodeModelServer::projectPartsRemoved(const ProjectPartsRemovedMessage &message) { - qCDebug(serverLog) << "########## unregisterProjectPartsForEditor"; - TIME_SCOPE_DURATION("ClangCodeModelServer::unregisterProjectPartsForEditor"); + qCDebug(serverLog) << "########## projectPartsRemoved"; + TIME_SCOPE_DURATION("ClangCodeModelServer::projectPartsRemoved"); try { projects.remove(message.projectPartIds); } catch (const std::exception &exception) { - qWarning() << "Error in ClangCodeModelServer::unregisterProjectPartsForEditor:" << exception.what(); + qWarning() << "Error in ClangCodeModelServer::projectPartsRemoved:" << exception.what(); } } -void ClangCodeModelServer::registerUnsavedFilesForEditor(const RegisterUnsavedFilesForEditorMessage &message) +void ClangCodeModelServer::unsavedFilesUpdated(const UnsavedFilesUpdatedMessage &message) { - qCDebug(serverLog) << "########## registerUnsavedFilesForEditor"; - TIME_SCOPE_DURATION("ClangCodeModelServer::registerUnsavedFilesForEditor"); + qCDebug(serverLog) << "########## unsavedFilesUpdated"; + TIME_SCOPE_DURATION("ClangCodeModelServer::unsavedFilesUpdated"); try { unsavedFiles.createOrUpdate(message.fileContainers); documents.updateDocumentsWithChangedDependencies(message.fileContainers); - updateDocumentAnnotationsTimer.start(updateDocumentAnnotationsTimeOutInMs); + updateAnnotationsTimer.start(updateAnnotationsTimeOutInMs); } catch (const std::exception &exception) { - qWarning() << "Error in ClangCodeModelServer::registerUnsavedFilesForEditor:" << exception.what(); + qWarning() << "Error in ClangCodeModelServer::unsavedFilesUpdated:" << exception.what(); } } -void ClangCodeModelServer::unregisterUnsavedFilesForEditor(const UnregisterUnsavedFilesForEditorMessage &message) +void ClangCodeModelServer::unsavedFilesRemoved(const UnsavedFilesRemovedMessage &message) { - qCDebug(serverLog) << "########## registerUnsavedFilesForEditor"; - TIME_SCOPE_DURATION("ClangCodeModelServer::unregisterUnsavedFilesForEditor"); + qCDebug(serverLog) << "########## unsavedFilesRemoved"; + TIME_SCOPE_DURATION("ClangCodeModelServer::unsavedFilesRemoved"); try { unsavedFiles.remove(message.fileContainers); documents.updateDocumentsWithChangedDependencies(message.fileContainers); } catch (const std::exception &exception) { - qWarning() << "Error in ClangCodeModelServer::unregisterUnsavedFilesForEditor:" << exception.what(); + qWarning() << "Error in ClangCodeModelServer::unsavedFilesRemoved:" << exception.what(); } } -void ClangCodeModelServer::completeCode(const ClangBackEnd::CompleteCodeMessage &message) +void ClangCodeModelServer::requestCompletions(const ClangBackEnd::RequestCompletionsMessage &message) { - qCDebug(serverLog) << "########## completeCode"; - TIME_SCOPE_DURATION("ClangCodeModelServer::completeCode"); + qCDebug(serverLog) << "########## requestCompletions"; + TIME_SCOPE_DURATION("ClangCodeModelServer::requestCompletions"); try { Document document = documents.document(message.filePath, message.projectPartId); DocumentProcessor processor = documentProcessors().processor(document); - JobRequest jobRequest = processor.createJobRequest(JobRequest::Type::CompleteCode); + JobRequest jobRequest = processor.createJobRequest(JobRequest::Type::RequestCompletions); jobRequest.line = message.line; jobRequest.column = message.column; jobRequest.funcNameStartLine = message.funcNameStartLine; @@ -246,25 +245,25 @@ void ClangCodeModelServer::completeCode(const ClangBackEnd::CompleteCodeMessage processor.addJob(jobRequest); processor.process(); } catch (const std::exception &exception) { - qWarning() << "Error in ClangCodeModelServer::completeCode:" << exception.what(); + qWarning() << "Error in ClangCodeModelServer::requestCompletions:" << exception.what(); } } -void ClangCodeModelServer::requestDocumentAnnotations(const RequestDocumentAnnotationsMessage &message) +void ClangCodeModelServer::requestAnnotations(const RequestAnnotationsMessage &message) { - qCDebug(serverLog) << "########## requestDocumentAnnotations"; - TIME_SCOPE_DURATION("ClangCodeModelServer::requestDocumentAnnotations"); + qCDebug(serverLog) << "########## requestAnnotations"; + TIME_SCOPE_DURATION("ClangCodeModelServer::requestAnnotations"); try { auto document = documents.document(message.fileContainer.filePath, message.fileContainer.projectPartId); DocumentProcessor processor = documentProcessors().processor(document); - processor.addJob(JobRequest::Type::RequestDocumentAnnotations); - processor.addJob(JobRequest::Type::UpdateExtraDocumentAnnotations); + processor.addJob(JobRequest::Type::RequestAnnotations); + processor.addJob(JobRequest::Type::UpdateExtraAnnotations); processor.process(); } catch (const std::exception &exception) { - qWarning() << "Error in ClangCodeModelServer::requestDocumentAnnotations:" << exception.what(); + qWarning() << "Error in ClangCodeModelServer::requestAnnotations:" << exception.what(); } } @@ -310,7 +309,7 @@ void ClangCodeModelServer::requestFollowSymbol(const RequestFollowSymbolMessage Document document = documents.document(message.fileContainer.filePath, projectPartId); DocumentProcessor processor = documentProcessors().processor(document); - JobRequest jobRequest = processor.createJobRequest(JobRequest::Type::FollowSymbol); + JobRequest jobRequest = processor.createJobRequest(JobRequest::Type::RequestFollowSymbol); fillJobRequest(jobRequest, message); processor.addJob(jobRequest); processor.process(); @@ -338,19 +337,19 @@ void ClangCodeModelServer::requestToolTip(const RequestToolTipMessage &message) } } -void ClangCodeModelServer::updateVisibleTranslationUnits(const UpdateVisibleTranslationUnitsMessage &message) +void ClangCodeModelServer::documentVisibilityChanged(const DocumentVisibilityChangedMessage &message) { - qCDebug(serverLog) << "########## updateVisibleTranslationUnits"; - TIME_SCOPE_DURATION("ClangCodeModelServer::updateVisibleTranslationUnits"); + qCDebug(serverLog) << "########## documentVisibilityChanged"; + TIME_SCOPE_DURATION("ClangCodeModelServer::documentVisibilityChanged"); try { documents.setUsedByCurrentEditor(message.currentEditorFilePath); documents.setVisibleInEditors(message.visibleEditorFilePaths); processSuspendResumeJobs(documents.documents()); - updateDocumentAnnotationsTimer.start(0); + updateAnnotationsTimer.start(0); } catch (const std::exception &exception) { - qWarning() << "Error in ClangCodeModelServer::updateVisibleTranslationUnits:" << exception.what(); + qWarning() << "Error in ClangCodeModelServer::documentVisibilityChanged:" << exception.what(); } } @@ -371,7 +370,7 @@ int ClangCodeModelServer::queueSizeForTestsOnly() bool ClangCodeModelServer::isTimerRunningForTestOnly() const { - return updateDocumentAnnotationsTimer.isActive(); + return updateAnnotationsTimer.isActive(); } void ClangCodeModelServer::processJobsForDirtyAndVisibleDocuments() @@ -396,9 +395,9 @@ void ClangCodeModelServer::addAndRunUpdateJobs(std::vector documents) DocumentProcessor processor = documentProcessors().processor(document); // Run the regular edit-reparse-job - processor.addJob(JobRequest::Type::UpdateDocumentAnnotations, + processor.addJob(JobRequest::Type::UpdateAnnotations, PreferredTranslationUnit::PreviouslyParsed); - processor.addJob(JobRequest::Type::UpdateExtraDocumentAnnotations, + processor.addJob(JobRequest::Type::UpdateExtraAnnotations, PreferredTranslationUnit::RecentlyParsed); processor.process(); @@ -429,7 +428,7 @@ void ClangCodeModelServer::processSuspendResumeJobs(const std::vector DocumentProcessor processor = documentProcessors().processor(entry.document); processor.addJob(entry.jobRequestType, entry.preferredTranslationUnit); if (entry.jobRequestType == JobRequest::Type::ResumeDocument) { - processor.addJob(JobRequest::Type::UpdateExtraDocumentAnnotations, + processor.addJob(JobRequest::Type::UpdateExtraAnnotations, PreferredTranslationUnit::RecentlyParsed); } processor.process(); @@ -479,15 +478,15 @@ void ClangCodeModelServer::processInitialJobsForDocuments(const std::vector runningJobsForTestsOnly(); int queueSizeForTestsOnly(); bool isTimerRunningForTestOnly() const; - void setUpdateDocumentAnnotationsTimeOutInMsForTestsOnly(int value); + void setUpdateAnnotationsTimeOutInMsForTestsOnly(int value); void setUpdateVisibleButNotCurrentDocumentsTimeOutInMsForTestsOnly(int value); DocumentProcessors &documentProcessors(); @@ -99,8 +103,8 @@ private: QScopedPointer documentProcessors_; // Delayed initialization - QTimer updateDocumentAnnotationsTimer; - int updateDocumentAnnotationsTimeOutInMs = 1500; + QTimer updateAnnotationsTimer; + int updateAnnotationsTimeOutInMs = 1500; QTimer updateVisibleButNotCurrentDocumentsTimer; int updateVisibleButNotCurrentDocumentsTimeOutInMs = 2000; diff --git a/src/tools/clangbackend/source/clangcompletecodejob.cpp b/src/tools/clangbackend/source/clangcompletecodejob.cpp index 9970d59269b..50635a6f0dd 100644 --- a/src/tools/clangbackend/source/clangcompletecodejob.cpp +++ b/src/tools/clangbackend/source/clangcompletecodejob.cpp @@ -27,7 +27,7 @@ #include #include -#include +#include #include @@ -36,7 +36,7 @@ namespace ClangBackEnd { IAsyncJob::AsyncPrepareResult CompleteCodeJob::prepareAsyncRun() { const JobRequest jobRequest = context().jobRequest; - QTC_ASSERT(jobRequest.type == JobRequest::Type::CompleteCode, return AsyncPrepareResult()); + QTC_ASSERT(jobRequest.type == JobRequest::Type::RequestCompletions, return AsyncPrepareResult()); QTC_ASSERT(acquireDocument(), return AsyncPrepareResult()); const TranslationUnit translationUnit = *m_translationUnit; @@ -69,10 +69,10 @@ void CompleteCodeJob::finalizeAsyncRun() if (context().isDocumentOpen()) { const AsyncResult result = asyncResult(); - const CodeCompletedMessage message(result.completions, - result.correction, - context().jobRequest.ticketNumber); - context().client->codeCompleted(message); + const CompletionsMessage message(result.completions, + result.correction, + context().jobRequest.ticketNumber); + context().client->completions(message); } } diff --git a/src/tools/clangbackend/source/clangfollowsymbol.cpp b/src/tools/clangbackend/source/clangfollowsymbol.cpp index 2d8b7004ebe..a0a25182f16 100644 --- a/src/tools/clangbackend/source/clangfollowsymbol.cpp +++ b/src/tools/clangbackend/source/clangfollowsymbol.cpp @@ -146,10 +146,10 @@ static int getTokenIndex(CXTranslationUnit tu, const Tokens &tokens, uint line, return tokenIndex; } -SourceRangeContainer FollowSymbol::followSymbol(CXTranslationUnit tu, - const Cursor &fullCursor, - uint line, - uint column) +FollowSymbolResult FollowSymbol::followSymbol(CXTranslationUnit tu, + const Cursor &fullCursor, + uint line, + uint column) { std::unique_ptr tokens(new Tokens(fullCursor)); @@ -175,7 +175,7 @@ SourceRangeContainer FollowSymbol::followSymbol(CXTranslationUnit tu, CXFile file = clang_getIncludedFile(cursors[tokenIndex]); const ClangString filename(clang_getFileName(file)); const SourceLocation loc(tu, filename, 1, 1); - return SourceRange(loc, loc); + return SourceRangeContainer(SourceRange(loc, loc)); } // For definitions we can always find a declaration in current TU @@ -185,12 +185,16 @@ SourceRangeContainer FollowSymbol::followSymbol(CXTranslationUnit tu, if (!cursor.isDeclaration()) { // This is the symbol usage // We want to return definition + FollowSymbolResult result; cursor = cursor.referenced(); - if (cursor.isNull() || !cursor.isDefinition()) { - // We can't find definition in this TU + if (cursor.isNull()) return SourceRangeContainer(); + if (!cursor.isDefinition()) { + // We can't find definition in this TU + result.isPureDeclarationForUsage = true; } - return extractMatchingTokenRange(cursor, tokenSpelling); + result.range = extractMatchingTokenRange(cursor, tokenSpelling); + return result; } cursor = cursor.definition(); diff --git a/src/tools/clangbackend/source/clangfollowsymbol.h b/src/tools/clangbackend/source/clangfollowsymbol.h index 07db59a836f..7c5469ef665 100644 --- a/src/tools/clangbackend/source/clangfollowsymbol.h +++ b/src/tools/clangbackend/source/clangfollowsymbol.h @@ -33,17 +33,18 @@ class Utf8String; namespace ClangBackEnd { -class Cursor; -class SourceRangeContainer; class CommandLineArguments; +class Cursor; +class FollowSymbolResult; +class SourceRangeContainer; class FollowSymbol { public: - static SourceRangeContainer followSymbol(CXTranslationUnit tu, - const Cursor &fullCursor, - uint line, - uint column); + static FollowSymbolResult followSymbol(CXTranslationUnit tu, + const Cursor &fullCursor, + uint line, + uint column); }; } // namespace ClangBackEnd diff --git a/src/tools/clangbackend/source/clangfollowsymboljob.cpp b/src/tools/clangbackend/source/clangfollowsymboljob.cpp index 20836fddeac..c7ac629f800 100644 --- a/src/tools/clangbackend/source/clangfollowsymboljob.cpp +++ b/src/tools/clangbackend/source/clangfollowsymboljob.cpp @@ -36,7 +36,7 @@ namespace ClangBackEnd { IAsyncJob::AsyncPrepareResult FollowSymbolJob::prepareAsyncRun() { const JobRequest jobRequest = context().jobRequest; - QTC_ASSERT(jobRequest.type == JobRequest::Type::FollowSymbol, + QTC_ASSERT(jobRequest.type == JobRequest::Type::RequestFollowSymbol, return AsyncPrepareResult()); QTC_ASSERT(acquireDocument(), return AsyncPrepareResult()); diff --git a/src/tools/clangbackend/source/clangfollowsymboljob.h b/src/tools/clangbackend/source/clangfollowsymboljob.h index 3a8741db1c6..5e625f97d49 100644 --- a/src/tools/clangbackend/source/clangfollowsymboljob.h +++ b/src/tools/clangbackend/source/clangfollowsymboljob.h @@ -27,14 +27,15 @@ #include "clangdocumentjob.h" +#include #include namespace ClangBackEnd { -class FollowSymbolJob : public DocumentJob +class FollowSymbolJob : public DocumentJob { public: - using AsyncResult = SourceRangeContainer; + using AsyncResult = FollowSymbolResult; AsyncPrepareResult prepareAsyncRun() override; void finalizeAsyncRun() override; diff --git a/src/tools/clangbackend/source/clangjobrequest.cpp b/src/tools/clangbackend/source/clangjobrequest.cpp index 2a37f8bfb2c..6d73e829968 100644 --- a/src/tools/clangbackend/source/clangjobrequest.cpp +++ b/src/tools/clangbackend/source/clangjobrequest.cpp @@ -28,16 +28,16 @@ #include "clangcompletecodejob.h" #include "clangfollowsymboljob.h" #include "clangparsesupportivetranslationunitjob.h" -#include "clangrequestdocumentannotationsjob.h" +#include "clangrequestannotationsjob.h" #include "clangrequestreferencesjob.h" #include "clangrequesttooltipjob.h" #include "clangresumedocumentjob.h" #include "clangsuspenddocumentjob.h" -#include "clangupdatedocumentannotationsjob.h" -#include "clangupdateextradocumentannotationsjob.h" +#include "clangupdateannotationsjob.h" +#include "clangupdateextraannotationsjob.h" #include -#include +#include #include #include #include @@ -55,13 +55,13 @@ static const char *JobRequestTypeToText(JobRequest::Type type) { switch (type) { RETURN_TEXT_FOR_CASE(Invalid); - RETURN_TEXT_FOR_CASE(UpdateDocumentAnnotations); - RETURN_TEXT_FOR_CASE(UpdateExtraDocumentAnnotations); + RETURN_TEXT_FOR_CASE(UpdateAnnotations); + RETURN_TEXT_FOR_CASE(UpdateExtraAnnotations); RETURN_TEXT_FOR_CASE(ParseSupportiveTranslationUnit); - RETURN_TEXT_FOR_CASE(CompleteCode); - RETURN_TEXT_FOR_CASE(RequestDocumentAnnotations); + RETURN_TEXT_FOR_CASE(RequestCompletions); + RETURN_TEXT_FOR_CASE(RequestAnnotations); RETURN_TEXT_FOR_CASE(RequestReferences); - RETURN_TEXT_FOR_CASE(FollowSymbol); + RETURN_TEXT_FOR_CASE(RequestFollowSymbol); RETURN_TEXT_FOR_CASE(RequestToolTip); RETURN_TEXT_FOR_CASE(SuspendDocument); RETURN_TEXT_FOR_CASE(ResumeDocument); @@ -123,13 +123,13 @@ static JobRequest::ExpirationConditions expirationConditionsForType(JobRequest:: using Conditions = JobRequest::ExpirationConditions; switch (type) { - case Type::UpdateDocumentAnnotations: - case Type::UpdateExtraDocumentAnnotations: + case Type::UpdateAnnotations: + case Type::UpdateExtraAnnotations: return Conditions(Condition::AnythingChanged); case Type::RequestReferences: - case Type::RequestDocumentAnnotations: + case Type::RequestAnnotations: case Type::RequestToolTip: - case Type::FollowSymbol: + case Type::RequestFollowSymbol: return Conditions(Condition::DocumentClosed) | Conditions(Condition::DocumentRevisionChanged); default: @@ -156,12 +156,12 @@ static JobRequest::RunConditions conditionsForType(JobRequest::Type type) Conditions conditions = Conditions(Condition::DocumentUnsuspended) | Conditions(Condition::DocumentVisible); - if (type == Type::RequestReferences || type == Type::FollowSymbol - || type == Type::RequestToolTip) { + if (type == Type::RequestReferences || type == Type::RequestFollowSymbol + || type == Type::RequestToolTip || type == Type::UpdateExtraAnnotations) { conditions |= Condition::CurrentDocumentRevision; } - if (type != Type::UpdateDocumentAnnotations && type != Type::ParseSupportiveTranslationUnit) + if (type != Type::UpdateAnnotations && type != Type::ParseSupportiveTranslationUnit) conditions |= Condition::DocumentParsed; return conditions; @@ -174,14 +174,14 @@ bool JobRequest::isTakeOverable() const switch (type) { // Never discard these as the client side might wait for a response. - case Type::CompleteCode: + case Type::RequestCompletions: case Type::RequestReferences: - case Type::FollowSymbol: + case Type::RequestFollowSymbol: case Type::RequestToolTip: return true; - // Discard this one as UpdateDocumentAnnotations will have the same effect. - case Type::RequestDocumentAnnotations: + // Discard this one as UpdateAnnotations will have the same effect. + case Type::RequestAnnotations: // Discard Suspend because the document will be cleared anyway. // Discard Resume because a (re)parse will happen on demand. @@ -190,8 +190,8 @@ bool JobRequest::isTakeOverable() const // Discard these as they are initial jobs that will be recreated on demand // anyway. - case Type::UpdateDocumentAnnotations: - case Type::UpdateExtraDocumentAnnotations: + case Type::UpdateAnnotations: + case Type::UpdateExtraAnnotations: // Discard these as they only make sense in a row. Avoid splitting them up. case Type::ParseSupportiveTranslationUnit: @@ -219,21 +219,21 @@ IAsyncJob *JobRequest::createJob() const case JobRequest::Type::Invalid: QTC_CHECK(false && "Cannot create job for invalid job request."); break; - case JobRequest::Type::UpdateDocumentAnnotations: - return new UpdateDocumentAnnotationsJob(); - case JobRequest::Type::UpdateExtraDocumentAnnotations: - return new UpdateExtraDocumentAnnotationsJob(); + case JobRequest::Type::UpdateAnnotations: + return new UpdateAnnotationsJob(); + case JobRequest::Type::UpdateExtraAnnotations: + return new UpdateExtraAnnotationsJob(); case JobRequest::Type::ParseSupportiveTranslationUnit: return new ParseSupportiveTranslationUnitJob(); - case JobRequest::Type::CompleteCode: + case JobRequest::Type::RequestCompletions: return new CompleteCodeJob(); - case JobRequest::Type::RequestDocumentAnnotations: - return new RequestDocumentAnnotationsJob(); + case JobRequest::Type::RequestAnnotations: + return new RequestAnnotationsJob(); case JobRequest::Type::RequestReferences: return new RequestReferencesJob(); case JobRequest::Type::RequestToolTip: return new RequestToolTipJob(); - case JobRequest::Type::FollowSymbol: + case JobRequest::Type::RequestFollowSymbol: return new FollowSymbolJob(); case JobRequest::Type::SuspendDocument: return new SuspendDocumentJob(); @@ -251,10 +251,10 @@ void JobRequest::cancelJob(ClangCodeModelClientInterface &client) const switch (type) { case JobRequest::Type::Invalid: - case JobRequest::Type::UpdateDocumentAnnotations: - case JobRequest::Type::UpdateExtraDocumentAnnotations: + case JobRequest::Type::UpdateAnnotations: + case JobRequest::Type::UpdateExtraAnnotations: case JobRequest::Type::ParseSupportiveTranslationUnit: - case JobRequest::Type::RequestDocumentAnnotations: + case JobRequest::Type::RequestAnnotations: case JobRequest::Type::SuspendDocument: case JobRequest::Type::ResumeDocument: break; @@ -265,19 +265,15 @@ void JobRequest::cancelJob(ClangCodeModelClientInterface &client) const ticketNumber)); break; case JobRequest::Type::RequestToolTip: - client.tooltip(ToolTipMessage(FileContainer(), - ToolTipInfo(), - ticketNumber)); + client.tooltip(ToolTipMessage(FileContainer(), ToolTipInfo(), ticketNumber)); break; - case JobRequest::Type::CompleteCode: - client.codeCompleted(CodeCompletedMessage(CodeCompletions(), - CompletionCorrection::NoCorrection, - ticketNumber)); + case JobRequest::Type::RequestCompletions: + client.completions( + CompletionsMessage(CodeCompletions(), CompletionCorrection::NoCorrection, ticketNumber)); break; - case JobRequest::Type::FollowSymbol: - client.followSymbol(FollowSymbolMessage(FileContainer(), - SourceRangeContainer(), - ticketNumber)); + case JobRequest::Type::RequestFollowSymbol: + client.followSymbol( + FollowSymbolMessage(FileContainer(), SourceRangeContainer(), ticketNumber)); break; } } diff --git a/src/tools/clangbackend/source/clangjobrequest.h b/src/tools/clangbackend/source/clangjobrequest.h index 6c534dba8a9..920f8f316ee 100644 --- a/src/tools/clangbackend/source/clangjobrequest.h +++ b/src/tools/clangbackend/source/clangjobrequest.h @@ -49,15 +49,15 @@ public: enum class Type { Invalid, - UpdateDocumentAnnotations, - UpdateExtraDocumentAnnotations, + UpdateAnnotations, + UpdateExtraAnnotations, ParseSupportiveTranslationUnit, - CompleteCode, - RequestDocumentAnnotations, + RequestCompletions, + RequestAnnotations, RequestReferences, - FollowSymbol, + RequestFollowSymbol, RequestToolTip, SuspendDocument, diff --git a/src/tools/clangbackend/source/clangrequestdocumentannotationsjob.cpp b/src/tools/clangbackend/source/clangrequestannotationsjob.cpp similarity index 60% rename from src/tools/clangbackend/source/clangrequestdocumentannotationsjob.cpp rename to src/tools/clangbackend/source/clangrequestannotationsjob.cpp index 3cb1479b766..2ffec0157c9 100644 --- a/src/tools/clangbackend/source/clangrequestdocumentannotationsjob.cpp +++ b/src/tools/clangbackend/source/clangrequestannotationsjob.cpp @@ -23,48 +23,47 @@ ** ****************************************************************************/ -#include "clangrequestdocumentannotationsjob.h" +#include "clangrequestannotationsjob.h" +#include #include -#include #include #include namespace ClangBackEnd { -IAsyncJob::AsyncPrepareResult RequestDocumentAnnotationsJob::prepareAsyncRun() +IAsyncJob::AsyncPrepareResult RequestAnnotationsJob::prepareAsyncRun() { const JobRequest jobRequest = context().jobRequest; - QTC_ASSERT(jobRequest.type == JobRequest::Type::RequestDocumentAnnotations, + QTC_ASSERT(jobRequest.type == JobRequest::Type::RequestAnnotations, return AsyncPrepareResult()); QTC_ASSERT(acquireDocument(), return AsyncPrepareResult()); const TranslationUnit translationUnit = *m_translationUnit; setRunner([translationUnit]() { - TIME_SCOPE_DURATION("RequestDocumentAnnotationsJobRunner"); + TIME_SCOPE_DURATION("RequestAnnotationsJobRunner"); - RequestDocumentAnnotationsJob::AsyncResult asyncResult; - translationUnit.extractDocumentAnnotations(asyncResult.firstHeaderErrorDiagnostic, - asyncResult.diagnostics, - asyncResult.tokenInfos, - asyncResult.skippedSourceRanges); + RequestAnnotationsJob::AsyncResult asyncResult; + translationUnit.extractAnnotations(asyncResult.firstHeaderErrorDiagnostic, + asyncResult.diagnostics, + asyncResult.tokenInfos, + asyncResult.skippedSourceRanges); return asyncResult; }); return AsyncPrepareResult{translationUnit.id()}; } -void RequestDocumentAnnotationsJob::finalizeAsyncRun() +void RequestAnnotationsJob::finalizeAsyncRun() { if (context().isDocumentOpen()) { const AsyncResult result = asyncResult(); - context().client->documentAnnotationsChanged( - DocumentAnnotationsChangedMessage(m_pinnedFileContainer, - result.diagnostics, - result.firstHeaderErrorDiagnostic, - result.tokenInfos, - result.skippedSourceRanges)); + context().client->annotations(AnnotationsMessage(m_pinnedFileContainer, + result.diagnostics, + result.firstHeaderErrorDiagnostic, + result.tokenInfos, + result.skippedSourceRanges)); } } diff --git a/src/tools/clangbackend/source/clangrequestdocumentannotationsjob.h b/src/tools/clangbackend/source/clangrequestannotationsjob.h similarity index 89% rename from src/tools/clangbackend/source/clangrequestdocumentannotationsjob.h rename to src/tools/clangbackend/source/clangrequestannotationsjob.h index fe8da149adf..c0693eb26e1 100644 --- a/src/tools/clangbackend/source/clangrequestdocumentannotationsjob.h +++ b/src/tools/clangbackend/source/clangrequestannotationsjob.h @@ -33,7 +33,7 @@ namespace ClangBackEnd { -struct RequestDocumentAnnotationsJobResult +struct RequestAnnotationsJobResult { ClangBackEnd::DiagnosticContainer firstHeaderErrorDiagnostic; QVector diagnostics; @@ -41,10 +41,10 @@ struct RequestDocumentAnnotationsJobResult QVector skippedSourceRanges; }; -class RequestDocumentAnnotationsJob : public DocumentJob +class RequestAnnotationsJob : public DocumentJob { public: - using AsyncResult = RequestDocumentAnnotationsJobResult; + using AsyncResult = RequestAnnotationsJobResult; AsyncPrepareResult prepareAsyncRun() override; void finalizeAsyncRun() override; diff --git a/src/tools/clangbackend/source/clangresumedocumentjob.cpp b/src/tools/clangbackend/source/clangresumedocumentjob.cpp index c628d4444ac..537472d66ab 100644 --- a/src/tools/clangbackend/source/clangresumedocumentjob.cpp +++ b/src/tools/clangbackend/source/clangresumedocumentjob.cpp @@ -36,7 +36,7 @@ void ResumeDocumentJob::finalizeAsyncRun() m_pinnedDocument.setIsSuspended(false); } - UpdateDocumentAnnotationsJob::finalizeAsyncRun(); + UpdateAnnotationsJob::finalizeAsyncRun(); } bool ResumeDocumentJob::isExpectedJobRequestType(const JobRequest &jobRequest) const @@ -46,7 +46,7 @@ bool ResumeDocumentJob::isExpectedJobRequestType(const JobRequest &jobRequest) c TranslationUnitUpdateInput ResumeDocumentJob::createUpdateInput(const Document &document) const { - TranslationUnitUpdateInput input = UpdateDocumentAnnotationsJob::createUpdateInput(document); + TranslationUnitUpdateInput input = UpdateAnnotationsJob::createUpdateInput(document); input.reparseNeeded = true; return input; } diff --git a/src/tools/clangbackend/source/clangresumedocumentjob.h b/src/tools/clangbackend/source/clangresumedocumentjob.h index aff8e780f76..2d9c764e523 100644 --- a/src/tools/clangbackend/source/clangresumedocumentjob.h +++ b/src/tools/clangbackend/source/clangresumedocumentjob.h @@ -27,11 +27,11 @@ #include "clangasyncjob.h" #include "clangdocument.h" -#include "clangupdatedocumentannotationsjob.h" +#include "clangupdateannotationsjob.h" namespace ClangBackEnd { -class ResumeDocumentJob : public UpdateDocumentAnnotationsJob +class ResumeDocumentJob : public UpdateAnnotationsJob { public: void finalizeAsyncRun() override; diff --git a/src/tools/clangbackend/source/clangtranslationunit.cpp b/src/tools/clangbackend/source/clangtranslationunit.cpp index f0bbc789347..aa36dea8750 100644 --- a/src/tools/clangbackend/source/clangtranslationunit.cpp +++ b/src/tools/clangbackend/source/clangtranslationunit.cpp @@ -128,7 +128,7 @@ TranslationUnit::CodeCompletionResult TranslationUnit::complete( return CodeCompletionResult{completions, correction}; } -void TranslationUnit::extractDocumentAnnotations( +void TranslationUnit::extractAnnotations( DiagnosticContainer &firstHeaderErrorDiagnostic, QVector &mainFileDiagnostics, QVector &tokenInfos, @@ -269,7 +269,7 @@ void TranslationUnit::extractDiagnostics(DiagnosticContainer &firstHeaderErrorDi } } -SourceRangeContainer TranslationUnit::followSymbol(uint line, uint column) const +FollowSymbolResult TranslationUnit::followSymbol(uint line, uint column) const { return FollowSymbol::followSymbol(m_cxTranslationUnit, cursorAt(line, column), line, column); } diff --git a/src/tools/clangbackend/source/clangtranslationunit.h b/src/tools/clangbackend/source/clangtranslationunit.h index 70df60f5050..ae8741a9890 100644 --- a/src/tools/clangbackend/source/clangtranslationunit.h +++ b/src/tools/clangbackend/source/clangtranslationunit.h @@ -37,6 +37,7 @@ namespace ClangBackEnd { class Cursor; class DiagnosticContainer; class DiagnosticSet; +class FollowSymbolResult; class ReferencesResult; class SkippedSourceRanges; class SourceLocation; @@ -81,10 +82,10 @@ public: void extractDiagnostics(DiagnosticContainer &firstHeaderErrorDiagnostic, QVector &mainFileDiagnostics) const; - void extractDocumentAnnotations(DiagnosticContainer &firstHeaderErrorDiagnostic, - QVector &mainFileDiagnostics, - QVector &tokenInfos, - QVector &skippedSourceRanges) const; + void extractAnnotations(DiagnosticContainer &firstHeaderErrorDiagnostic, + QVector &mainFileDiagnostics, + QVector &tokenInfos, + QVector &skippedSourceRanges) const; ReferencesResult references(uint line, uint column, bool localReferences = false) const; ToolTipInfo tooltip(UnsavedFiles &unsavedFiles, @@ -108,7 +109,7 @@ public: TokenProcessor fullTokenInfosInRange(const SourceRange &range) const; SkippedSourceRanges skippedSourceRanges() const; - SourceRangeContainer followSymbol(uint line, uint column) const; + FollowSymbolResult followSymbol(uint line, uint column) const; private: const Utf8String m_id; diff --git a/src/tools/clangbackend/source/clangupdatedocumentannotationsjob.cpp b/src/tools/clangbackend/source/clangupdateannotationsjob.cpp similarity index 62% rename from src/tools/clangbackend/source/clangupdatedocumentannotationsjob.cpp rename to src/tools/clangbackend/source/clangupdateannotationsjob.cpp index 7d68653c590..6d836633d74 100644 --- a/src/tools/clangbackend/source/clangupdatedocumentannotationsjob.cpp +++ b/src/tools/clangbackend/source/clangupdateannotationsjob.cpp @@ -23,17 +23,17 @@ ** ****************************************************************************/ -#include "clangupdatedocumentannotationsjob.h" +#include "clangupdateannotationsjob.h" +#include #include #include -#include #include namespace ClangBackEnd { -IAsyncJob::AsyncPrepareResult UpdateDocumentAnnotationsJob::prepareAsyncRun() +IAsyncJob::AsyncPrepareResult UpdateAnnotationsJob::prepareAsyncRun() { const JobRequest jobRequest = context().jobRequest; QTC_ASSERT(isExpectedJobRequestType(jobRequest), return AsyncPrepareResult()); @@ -42,17 +42,17 @@ IAsyncJob::AsyncPrepareResult UpdateDocumentAnnotationsJob::prepareAsyncRun() const TranslationUnit translationUnit = *m_translationUnit; const TranslationUnitUpdateInput updateInput = createUpdateInput(m_pinnedDocument); setRunner([translationUnit, updateInput]() { - TIME_SCOPE_DURATION("UpdateDocumentAnnotationsJobRunner"); + TIME_SCOPE_DURATION("UpdateAnnotationsJobRunner"); // Update - UpdateDocumentAnnotationsJob::AsyncResult asyncResult; + UpdateAnnotationsJob::AsyncResult asyncResult; asyncResult.updateResult = translationUnit.update(updateInput); // Collect - translationUnit.extractDocumentAnnotations(asyncResult.firstHeaderErrorDiagnostic, - asyncResult.diagnostics, - asyncResult.tokenInfos, - asyncResult.skippedSourceRanges); + translationUnit.extractAnnotations(asyncResult.firstHeaderErrorDiagnostic, + asyncResult.diagnostics, + asyncResult.tokenInfos, + asyncResult.skippedSourceRanges); return asyncResult; }); @@ -60,28 +60,27 @@ IAsyncJob::AsyncPrepareResult UpdateDocumentAnnotationsJob::prepareAsyncRun() return AsyncPrepareResult{translationUnit.id()}; } -void UpdateDocumentAnnotationsJob::finalizeAsyncRun() +void UpdateAnnotationsJob::finalizeAsyncRun() { if (!context().isOutdated()) { const AsyncResult result = asyncResult(); m_pinnedDocument.incorporateUpdaterResult(result.updateResult); - context().client->documentAnnotationsChanged( - DocumentAnnotationsChangedMessage(m_pinnedFileContainer, - result.diagnostics, - result.firstHeaderErrorDiagnostic, - result.tokenInfos, - result.skippedSourceRanges)); + context().client->annotations(AnnotationsMessage(m_pinnedFileContainer, + result.diagnostics, + result.firstHeaderErrorDiagnostic, + result.tokenInfos, + result.skippedSourceRanges)); } } -bool UpdateDocumentAnnotationsJob::isExpectedJobRequestType(const JobRequest &jobRequest) const +bool UpdateAnnotationsJob::isExpectedJobRequestType(const JobRequest &jobRequest) const { - return jobRequest.type == JobRequest::Type::UpdateDocumentAnnotations; + return jobRequest.type == JobRequest::Type::UpdateAnnotations; } TranslationUnitUpdateInput -UpdateDocumentAnnotationsJob::createUpdateInput(const Document &document) const +UpdateAnnotationsJob::createUpdateInput(const Document &document) const { return document.createUpdateInput(); } diff --git a/src/tools/clangbackend/source/clangupdatedocumentannotationsjob.h b/src/tools/clangbackend/source/clangupdateannotationsjob.h similarity index 91% rename from src/tools/clangbackend/source/clangupdatedocumentannotationsjob.h rename to src/tools/clangbackend/source/clangupdateannotationsjob.h index 89ec61dc618..8c0f89f430f 100644 --- a/src/tools/clangbackend/source/clangupdatedocumentannotationsjob.h +++ b/src/tools/clangbackend/source/clangupdateannotationsjob.h @@ -33,7 +33,7 @@ namespace ClangBackEnd { -struct UpdateDocumentAnnotationsJobResult +struct UpdateAnnotationsJobResult { TranslationUnitUpdateResult updateResult; @@ -43,10 +43,10 @@ struct UpdateDocumentAnnotationsJobResult QVector skippedSourceRanges; }; -class UpdateDocumentAnnotationsJob : public DocumentJob +class UpdateAnnotationsJob : public DocumentJob { public: - using AsyncResult = UpdateDocumentAnnotationsJobResult; + using AsyncResult = UpdateAnnotationsJobResult; AsyncPrepareResult prepareAsyncRun() override; void finalizeAsyncRun() override; diff --git a/src/tools/clangbackend/source/clangupdateextradocumentannotationsjob.cpp b/src/tools/clangbackend/source/clangupdateextraannotationsjob.cpp similarity index 79% rename from src/tools/clangbackend/source/clangupdateextradocumentannotationsjob.cpp rename to src/tools/clangbackend/source/clangupdateextraannotationsjob.cpp index d7713db748b..7363a28758d 100644 --- a/src/tools/clangbackend/source/clangupdateextradocumentannotationsjob.cpp +++ b/src/tools/clangbackend/source/clangupdateextraannotationsjob.cpp @@ -23,37 +23,36 @@ ** ****************************************************************************/ -#include "clangupdateextradocumentannotationsjob.h" +#include "clangupdateextraannotationsjob.h" +#include #include #include -#include #include namespace ClangBackEnd { -IAsyncJob::AsyncPrepareResult UpdateExtraDocumentAnnotationsJob::prepareAsyncRun() +IAsyncJob::AsyncPrepareResult UpdateExtraAnnotationsJob::prepareAsyncRun() { const JobRequest jobRequest = context().jobRequest; QTC_ASSERT(acquireDocument(), return AsyncPrepareResult()); const TranslationUnit translationUnit = *m_translationUnit; setRunner([translationUnit]() { - TIME_SCOPE_DURATION("UpdateExtraDocumentAnnotationsJobRunner"); + TIME_SCOPE_DURATION("UpdateExtraAnnotationsJobRunner"); return translationUnit.fullTokenInfos().toTokenInfoContainers(); }); return AsyncPrepareResult{translationUnit.id()}; } -void UpdateExtraDocumentAnnotationsJob::finalizeAsyncRun() +void UpdateExtraAnnotationsJob::finalizeAsyncRun() { if (context().isOutdated()) return; - context().client->documentAnnotationsChanged( - DocumentAnnotationsChangedMessage(m_pinnedFileContainer, asyncResult())); + context().client->annotations(AnnotationsMessage(m_pinnedFileContainer, asyncResult())); } } // namespace ClangBackEnd diff --git a/src/tools/clangbackend/source/clangupdateextradocumentannotationsjob.h b/src/tools/clangbackend/source/clangupdateextraannotationsjob.h similarity index 88% rename from src/tools/clangbackend/source/clangupdateextradocumentannotationsjob.h rename to src/tools/clangbackend/source/clangupdateextraannotationsjob.h index 6ceb5470c2b..2a0e0db84e4 100644 --- a/src/tools/clangbackend/source/clangupdateextradocumentannotationsjob.h +++ b/src/tools/clangbackend/source/clangupdateextraannotationsjob.h @@ -31,9 +31,9 @@ namespace ClangBackEnd { -using UpdateExtraDocumentAnnotationsJobResult = QVector; +using UpdateExtraAnnotationsJobResult = QVector; -class UpdateExtraDocumentAnnotationsJob : public DocumentJob +class UpdateExtraAnnotationsJob : public DocumentJob { public: AsyncPrepareResult prepareAsyncRun() override; diff --git a/src/tools/wininterrupt/wininterrupt.pro b/src/tools/wininterrupt/wininterrupt.pro index d7ea748d2ac..5e4621cd5b3 100644 --- a/src/tools/wininterrupt/wininterrupt.pro +++ b/src/tools/wininterrupt/wininterrupt.pro @@ -25,11 +25,14 @@ build_all:!build_pass { CONFIG += release } -ENV_CPU=$$(CPU) +# Check for VSCMD_ARG_TGT_ARCH (VS 17) or Platform=X64 (VS 13, 15) +# For older versions, fall back to hacky check on LIBPATH +ENV_TARGET_ARCH=$$(VSCMD_ARG_TGT_ARCH) +isEmpty(ENV_TARGET_ARCH):ENV_TARGET_ARCH = $$(Platform) ENV_LIBPATH=$$(LIBPATH) -contains(ENV_CPU, ^AMD64$) { +contains(ENV_TARGET_ARCH, .*64$) { TARGET = win64interrupt -} else:isEmpty(ENV_CPU):contains(ENV_LIBPATH, ^.*amd64.*$) { +} else:isEmpty(ENV_TARGET_ARCH):contains(ENV_LIBPATH, ^.*amd64.*$) { TARGET = win64interrupt } else { TARGET = win32interrupt diff --git a/tests/auto/runextensions/tst_runextensions.cpp b/tests/auto/runextensions/tst_runextensions.cpp index acad21b15d2..fd0c6609d8b 100644 --- a/tests/auto/runextensions/tst_runextensions.cpp +++ b/tests/auto/runextensions/tst_runextensions.cpp @@ -42,6 +42,8 @@ private slots: void moveOnlyType(); #endif void threadPriority(); + void threadSize(); + void threadSizeAndPriority(); void runAsyncNoFutureInterface(); void crefFunction(); void onResultReady(); @@ -399,6 +401,19 @@ void tst_RunExtensions::threadPriority() QList({0, 2, 1})); } +void tst_RunExtensions::threadSize() +{ + QCOMPARE(Utils::runAsync(Utils::StackSizeInBytes(1024 * 1024), report3).results(), + QList({0, 2, 1})); +} + +void tst_RunExtensions::threadSizeAndPriority() +{ + QCOMPARE(Utils::runAsync(Utils::StackSizeInBytes(1024 * 1024), QThread::LowestPriority, report3) + .results(), + QList({0, 2, 1})); +} + void tst_RunExtensions::runAsyncNoFutureInterface() { // free function pointer diff --git a/tests/auto/sdktool/sdktool.pro b/tests/auto/sdktool/sdktool.pro index b83c78847f9..8cdcc8c6530 100644 --- a/tests/auto/sdktool/sdktool.pro +++ b/tests/auto/sdktool/sdktool.pro @@ -1,5 +1,8 @@ include(../qttest.pri) -DEFINES += "SDKTOOL_DIR=\\\"$$replace(IDE_LIBEXEC_PATH, " ", "\\ ")\\\"" +TMP_ILP = $$IDE_LIBEXEC_PATH +win32: TMP_ILP = $$replace(TMP_ILP, \\\\, /) + +DEFINES += $$shell_quote(SDKTOOL_DIR=\"$$TMP_ILP\") SOURCES += tst_sdktool.cpp diff --git a/tests/system/shared/project_explorer.py b/tests/system/shared/project_explorer.py index dc18935e317..a26ae845d74 100644 --- a/tests/system/shared/project_explorer.py +++ b/tests/system/shared/project_explorer.py @@ -83,7 +83,10 @@ def prepareBuildSettings(targetCount, currentTarget, setReleaseBuild=True, disab # param targetCount specifies the number of targets currently defined (must be correct!) # param projectSettings specifies where to switch to (must be one of ProjectSettings.BUILD or ProjectSettings.RUN) def switchToBuildOrRunSettingsFor(targetCount, currentTarget, projectSettings): - clickToActivate = "

Click to activate:

" + def kitIsActivated(kit): + return not (str(kit.toolTip).startswith("

Click to activate:

") + or str(kit.toolTip).startswith("

Kit is unsuited for Project

")) + try: treeView = waitForObject(":Projects.ProjectNavigationTreeView") except LookupError: @@ -92,12 +95,12 @@ def switchToBuildOrRunSettingsFor(targetCount, currentTarget, projectSettings): targetIndices = dumpIndices(treeView.model(), waitForObject(bAndRIndex)) targets = map(lambda t: str(t.data(0)), - filter(lambda x: not str(x.toolTip).startswith(clickToActivate), targetIndices)) + filter(kitIsActivated, targetIndices)) if not test.compare(targetCount, len(targets), "Check whether all chosen targets are listed."): return False # we assume the targets are still ordered the same way currentTargetIndex = getQModelIndexStr("text='%s'" % targets[currentTarget], bAndRIndex) - if not test.verify(not str(findObject(currentTargetIndex).toolTip).startswith(clickToActivate), + if not test.verify(kitIsActivated(findObject(currentTargetIndex)), "Verifying target '%s' is enabled." % targets[currentTarget]): return False index = waitForObject(currentTargetIndex) diff --git a/tests/system/shared/utils.py b/tests/system/shared/utils.py index 0b8fb5818fa..e89e969a7e0 100644 --- a/tests/system/shared/utils.py +++ b/tests/system/shared/utils.py @@ -433,8 +433,8 @@ def iterateQtVersions(keepOptionsOpen=False, alreadyOnOptionsDialog=False, additionalResult = [] if not alreadyOnOptionsDialog: invokeMenuItem("Tools", "Options...") - waitForObjectItem(":Options_QListView", "Build & Run") - clickItem(":Options_QListView", "Build & Run", 14, 15, 0, Qt.LeftButton) + waitForObjectItem(":Options_QListView", "Kits") + clickItem(":Options_QListView", "Kits", 14, 15, 0, Qt.LeftButton) clickOnTab(":Options.qt_tabwidget_tabbar_QTabBar", "Qt Versions") pattern = re.compile("Qt version (?P.*?) for (?P.*)") treeView = waitForObject(":qtdirList_QTreeView") @@ -495,7 +495,7 @@ def iterateKits(keepOptionsOpen=False, alreadyOnOptionsDialog=False, if not alreadyOnOptionsDialog: invokeMenuItem("Tools", "Options...") waitForObjectItem(":Options_QListView", "Build & Run") - clickItem(":Options_QListView", "Build & Run", 14, 15, 0, Qt.LeftButton) + clickItem(":Options_QListView", "Kits", 14, 15, 0, Qt.LeftButton) clickOnTab(":Options.qt_tabwidget_tabbar_QTabBar", "Kits") treeView = waitForObject(":BuildAndRun_QTreeView") model = treeView.model() diff --git a/tests/system/suite_debugger/tst_simple_analyze/test.py b/tests/system/suite_debugger/tst_simple_analyze/test.py index c1578ee55d9..8b73e7aa722 100644 --- a/tests/system/suite_debugger/tst_simple_analyze/test.py +++ b/tests/system/suite_debugger/tst_simple_analyze/test.py @@ -102,7 +102,7 @@ def performTest(workingDir, projectName, targetCount, availableConfigs): model = waitForObject(":Events.QmlProfilerEventsTable_QmlProfiler::" "Internal::QmlProfilerStatisticsMainView").model() compareEventsTab(model, "events_qt%s.tsv" % qtVersion) - test.compare(dumpItems(model, column=colPercent)[0], '100.00 %') + test.compare(dumpItems(model, column=colPercent)[0], '100 %') # cannot run following test on colShortest (unstable) for i in [colTotal, colMean, colMedian, colLongest]: for item in dumpItems(model, column=i)[2:5]: @@ -122,8 +122,8 @@ def performTest(workingDir, projectName, targetCount, availableConfigs): test.compare(model.index(row, colMean).data(), model.index(row, col).data(), "For just one call, no differences in execution time may be shown.") elif str(model.index(row, colCalls).data()) == "2": - test.compare(model.index(row, colMedian).data(), model.index(row, colLongest).data(), - "For two calls, median and longest time must be the same.") + test.compare(model.index(row, colMedian).data(), model.index(row, colMean).data(), + "For two calls, median and mean time must be the same.") progressBarWait(15000, False) # wait for "Build" progressbar to disappear clickButton(waitForObject(":Analyzer Toolbar.Clear_QToolButton")) test.verify(waitFor("model.rowCount() == 0", 3000), "Analyzer results cleared.") diff --git a/tests/system/suite_debugger/tst_simple_analyze/testdata/events_qt5.10.1.tsv b/tests/system/suite_debugger/tst_simple_analyze/testdata/events_qt5.10.1.tsv index 4038c164c97..8f40828cd41 100644 --- a/tests/system/suite_debugger/tst_simple_analyze/testdata/events_qt5.10.1.tsv +++ b/tests/system/suite_debugger/tst_simple_analyze/testdata/events_qt5.10.1.tsv @@ -1,5 +1,5 @@ "0" "1" "6" "11" -"" "" "1" "Main Program" +"" "" "1" "Main program" "main.qml:15" "Handling Signal" "2" "onTriggered: { runCount += 1; var i; for (i = 1; i < 2500; ++i) { var j = i * i; console.log(j); } }" "main.qml:15" "JavaScript" "2" "onTriggered" "main.qml:4" "Creating" "2" "QtQuick.Window/Window" diff --git a/tests/system/suite_debugger/tst_simple_analyze/testdata/events_qt5.6.1.tsv b/tests/system/suite_debugger/tst_simple_analyze/testdata/events_qt5.6.1.tsv index cd25a9eb10b..a5228fad419 100644 --- a/tests/system/suite_debugger/tst_simple_analyze/testdata/events_qt5.6.1.tsv +++ b/tests/system/suite_debugger/tst_simple_analyze/testdata/events_qt5.6.1.tsv @@ -1,5 +1,5 @@ "0" "1" "6" "11" -"" "" "1" "Main Program" +"" "" "1" "Main program" "main.qml:15" "Handling Signal" "2" "onTriggered: { runCount += 1; var i; for (i = 1; i < 2500; ++i) { var j = i * i; console.log(j); } }" "main.qml:15" "JavaScript" "2" "onTriggered" "main.qml:4" "Creating" "2" "QtQuick.Window/Window" diff --git a/tests/system/suite_general/tst_default_settings/test.py b/tests/system/suite_general/tst_default_settings/test.py index 088d7246f6c..72ff89c7e38 100644 --- a/tests/system/suite_general/tst_default_settings/test.py +++ b/tests/system/suite_general/tst_default_settings/test.py @@ -40,7 +40,7 @@ def main(): if not startedWithoutPluginError(): return invokeMenuItem("Tools", "Options...") - __checkBuildAndRun__() + __checkKits__() clickButton(waitForObject(":Options.Cancel_QPushButton")) invokeMenuItem("File", "Exit") __checkCreatedSettings__(emptySettings) @@ -53,9 +53,9 @@ def __createMinimumIni__(emptyParent): iniFile.write("OverrideLanguage=C\n") iniFile.close() -def __checkBuildAndRun__(): - waitForObjectItem(":Options_QListView", "Build & Run") - clickItem(":Options_QListView", "Build & Run", 14, 15, 0, Qt.LeftButton) +def __checkKits__(): + waitForObjectItem(":Options_QListView", "Kits") + clickItem(":Options_QListView", "Kits", 14, 15, 0, Qt.LeftButton) # check compilers expectedCompilers = __getExpectedCompilers__() foundCompilers = [] diff --git a/tests/system/suite_tools/tst_codepasting/test.py b/tests/system/suite_tools/tst_codepasting/test.py index ed9c405220b..023d7853127 100644 --- a/tests/system/suite_tools/tst_codepasting/test.py +++ b/tests/system/suite_tools/tst_codepasting/test.py @@ -155,7 +155,7 @@ def main(): skippedPasting = True description = "Paste from 2017-05-11" if protocol == NAME_KDE: - pasteId = "pyy2xvjh7" # valid for one year + pasteId = "pysjk6n2i" pastedText = readFile(os.path.join(os.getcwd(), "testdata", "main-prepasted.cpp")) elif skipPastingToPastebinCom and protocol == NAME_PBCOM: pasteId = "8XHP0ZgH" @@ -186,7 +186,7 @@ def main(): clickButton(waitForObject(":*Qt Creator.Clear_QToolButton")) continue test.compare(filenameCombo.currentText, "%s: %s" % (protocol, pasteId), "Verify title of editor") - if protocol == NAME_PBCOM and pastedText.endswith("\n"): + if protocol in (NAME_KDE, NAME_PBCOM) and pastedText.endswith("\n"): pastedText = pastedText[:-1] test.compare(editor.plainText, pastedText, "Verify that pasted and fetched texts are the same") invokeMenuItem("File", "Close All") diff --git a/tests/unit/echoserver/echoclangcodemodelserver.cpp b/tests/unit/echoserver/echoclangcodemodelserver.cpp index 38d2d395444..70612953ac0 100644 --- a/tests/unit/echoserver/echoclangcodemodelserver.cpp +++ b/tests/unit/echoserver/echoclangcodemodelserver.cpp @@ -43,47 +43,47 @@ void EchoClangCodeModelServer::end() QCoreApplication::quit(); } -void EchoClangCodeModelServer::registerTranslationUnitsForEditor(const RegisterTranslationUnitForEditorMessage &message) +void EchoClangCodeModelServer::documentsOpened(const DocumentsOpenedMessage &message) { echoMessage(message); } -void EchoClangCodeModelServer::updateTranslationUnitsForEditor(const UpdateTranslationUnitsForEditorMessage &message) +void EchoClangCodeModelServer::documentsChanged(const DocumentsChangedMessage &message) { echoMessage(message); } -void EchoClangCodeModelServer::unregisterTranslationUnitsForEditor(const UnregisterTranslationUnitsForEditorMessage &message) +void EchoClangCodeModelServer::documentsClosed(const DocumentsClosedMessage &message) { echoMessage(message); } -void EchoClangCodeModelServer::registerProjectPartsForEditor(const RegisterProjectPartsForEditorMessage &message) +void EchoClangCodeModelServer::projectPartsUpdated(const ProjectPartsUpdatedMessage &message) { echoMessage(message); } -void EchoClangCodeModelServer::unregisterProjectPartsForEditor(const UnregisterProjectPartsForEditorMessage &message) +void EchoClangCodeModelServer::projectPartsRemoved(const ProjectPartsRemovedMessage &message) { echoMessage(message); } -void EchoClangCodeModelServer::registerUnsavedFilesForEditor(const RegisterUnsavedFilesForEditorMessage &message) +void EchoClangCodeModelServer::unsavedFilesUpdated(const UnsavedFilesUpdatedMessage &message) { echoMessage(message); } -void EchoClangCodeModelServer::unregisterUnsavedFilesForEditor(const UnregisterUnsavedFilesForEditorMessage &message) +void EchoClangCodeModelServer::unsavedFilesRemoved(const UnsavedFilesRemovedMessage &message) { echoMessage(message); } -void EchoClangCodeModelServer::completeCode(const CompleteCodeMessage &message) +void EchoClangCodeModelServer::requestCompletions(const RequestCompletionsMessage &message) { echoMessage(message); } -void EchoClangCodeModelServer::requestDocumentAnnotations(const RequestDocumentAnnotationsMessage &message) +void EchoClangCodeModelServer::requestAnnotations(const RequestAnnotationsMessage &message) { echoMessage(message); } @@ -103,7 +103,7 @@ void EchoClangCodeModelServer::requestToolTip(const RequestToolTipMessage &messa echoMessage(message); } -void EchoClangCodeModelServer::updateVisibleTranslationUnits(const UpdateVisibleTranslationUnitsMessage &message) +void EchoClangCodeModelServer::documentVisibilityChanged(const DocumentVisibilityChangedMessage &message) { echoMessage(message); } diff --git a/tests/unit/echoserver/echoclangcodemodelserver.h b/tests/unit/echoserver/echoclangcodemodelserver.h index d3452d2d321..261b690deee 100644 --- a/tests/unit/echoserver/echoclangcodemodelserver.h +++ b/tests/unit/echoserver/echoclangcodemodelserver.h @@ -36,19 +36,23 @@ class EchoClangCodeModelServer : public ClangCodeModelServerInterface, public: void dispatch(const MessageEnvelop &message) override; void end() override; - void registerTranslationUnitsForEditor(const RegisterTranslationUnitForEditorMessage &message) override; - void updateTranslationUnitsForEditor(const UpdateTranslationUnitsForEditorMessage &message) override; - void unregisterTranslationUnitsForEditor(const UnregisterTranslationUnitsForEditorMessage &message) override; - void registerProjectPartsForEditor(const RegisterProjectPartsForEditorMessage &message) override; - void unregisterProjectPartsForEditor(const UnregisterProjectPartsForEditorMessage &message) override; - void registerUnsavedFilesForEditor(const RegisterUnsavedFilesForEditorMessage &message) override; - void unregisterUnsavedFilesForEditor(const UnregisterUnsavedFilesForEditorMessage &message) override; - void completeCode(const CompleteCodeMessage &message) override; - void requestDocumentAnnotations(const RequestDocumentAnnotationsMessage &message) override; + + void documentsOpened(const DocumentsOpenedMessage &message) override; + void documentsChanged(const DocumentsChangedMessage &message) override; + void documentsClosed(const DocumentsClosedMessage &message) override; + void documentVisibilityChanged(const DocumentVisibilityChangedMessage &message) override; + + void projectPartsUpdated(const ProjectPartsUpdatedMessage &message) override; + void projectPartsRemoved(const ProjectPartsRemovedMessage &message) override; + + void unsavedFilesUpdated(const UnsavedFilesUpdatedMessage &message) override; + void unsavedFilesRemoved(const UnsavedFilesRemovedMessage &message) override; + + void requestCompletions(const RequestCompletionsMessage &message) override; + void requestAnnotations(const RequestAnnotationsMessage &message) override; void requestReferences(const RequestReferencesMessage &message) override; void requestFollowSymbol(const RequestFollowSymbolMessage &message) override; void requestToolTip(const RequestToolTipMessage &message) override; - void updateVisibleTranslationUnits(const UpdateVisibleTranslationUnitsMessage &message) override; private: void echoMessage(const MessageEnvelop &message); diff --git a/tests/unit/unittest/clangcodemodelserver-test.cpp b/tests/unit/unittest/clangcodemodelserver-test.cpp index ebcb5dd3d3e..ea4238975e3 100644 --- a/tests/unit/unittest/clangcodemodelserver-test.cpp +++ b/tests/unit/unittest/clangcodemodelserver-test.cpp @@ -114,46 +114,48 @@ protected: protected: bool waitUntilAllJobsFinished(int timeOutInMs = 10000); - void registerProjectPart(); - void registerProjectPart(const Utf8String &projectPartId); - void changeProjectPartArguments(); + void updateProjectPart(); + void updateProjectPart(const Utf8String &projectPartId); + void updateProjectPartWithArguments(); - void registerProjectAndFile(const Utf8String &filePath, - int expectedDocumentAnnotationsChangedMessages = AnnotationJobsMultiplier); - void registerProjectAndFileAndWaitForFinished(const Utf8String &filePath, - int expectedDocumentAnnotationsChangedMessages = AnnotationJobsMultiplier); - void registerProjectAndFilesAndWaitForFinished(int expectedDocumentAnnotationsChangedMessages = 2 * AnnotationJobsMultiplier); - void registerFile(const Utf8String &filePath, - int expectedDocumentAnnotationsChangedMessages = AnnotationJobsMultiplier); - void registerFile(const Utf8String &filePath, const Utf8String &projectPartId, - int expectedDocumentAnnotationsChangedMessages = AnnotationJobsMultiplier); - void registerFiles(int expectedDocumentAnnotationsChangedMessages); - void registerFileWithUnsavedContent(const Utf8String &filePath, const Utf8String &content); + void updateProjectAndOpenDocument(const Utf8String &filePath, + int expectedAnnotationsMessages = AnnotationJobsMultiplier); + void updateProjectAndOpenDocumentAndWaitForFinished( + const Utf8String &filePath, int expectedAnnotationsMessages = AnnotationJobsMultiplier); + void updateProjectAndOpenDocumentsAndWaitForFinished( + int expectedAnnotationsdMessages = 2 * AnnotationJobsMultiplier); + + void openDocument(const Utf8String &filePath, + int expectedAnnotationsMessages = AnnotationJobsMultiplier); + void openDocument(const Utf8String &filePath, + const Utf8String &projectPartId, + int expectedAnnotationsMessages = AnnotationJobsMultiplier); + void openDocuments(int expectedAnnotationsMessages); + void openDocumentWithUnsavedContent(const Utf8String &filePath, const Utf8String &content); + void closeDocument(const Utf8String &filePath); void updateUnsavedContent(const Utf8String &filePath, const Utf8String &fileContent, quint32 revisionNumber); - - void unregisterFile(const Utf8String &filePath); - void removeUnsavedFile(const Utf8String &filePath); void updateVisibilty(const Utf8String ¤tEditor, const Utf8String &additionalVisibleEditor); - void requestDocumentAnnotations(const Utf8String &filePath); + void requestAnnotations(const Utf8String &filePath); void requestReferences(quint32 documentRevision = 0); void requestFollowSymbol(quint32 documentRevision = 0); - - void completeCode(const Utf8String &filePath, uint line = 1, uint column = 1, - const Utf8String &projectPartId = Utf8String()); - void completeCodeInFileA(); - void completeCodeInFileB(); + void requestCompletions(const Utf8String &filePath, + uint line = 1, + uint column = 1, + const Utf8String &projectPartId = Utf8String()); + void requestCompletionsInFileA(); + void requestCompletionsInFileB(); bool isSupportiveTranslationUnitInitialized(const Utf8String &filePath); DocumentProcessor documentProcessorForFile(const Utf8String &filePath); - void expectDocumentAnnotationsChanged(int count); + void expectAnnotations(int count); void expectCompletion(const CodeCompletion &completion); void expectCompletionFromFileA(); void expectCompletionFromFileBEnabledByMacro(); @@ -162,7 +164,7 @@ protected: void expectNoCompletionWithUnsavedMethod(); void expectReferences(); void expectFollowSymbol(); - void expectDocumentAnnotationsChangedForFileBWithSpecificHighlightingMark(); + void expectAnnotationsForFileBWithSpecificHighlightingMark(); static const Utf8String unsavedContent(const QString &unsavedFilePath); @@ -192,23 +194,23 @@ using ClangCodeModelServerSlowTest = ClangCodeModelServer; TEST_F(ClangCodeModelServerSlowTest, GetCodeCompletion) { - registerProjectAndFile(filePathA); + updateProjectAndOpenDocument(filePathA); expectCompletionFromFileA(); - completeCodeInFileA(); + requestCompletionsInFileA(); } -TEST_F(ClangCodeModelServerSlowTest, RequestDocumentAnnotations) +TEST_F(ClangCodeModelServerSlowTest, RequestAnnotations) { - registerProjectAndFileAndWaitForFinished(filePathB); + updateProjectAndOpenDocumentAndWaitForFinished(filePathB); - expectDocumentAnnotationsChangedForFileBWithSpecificHighlightingMark(); - requestDocumentAnnotations(filePathB); + expectAnnotationsForFileBWithSpecificHighlightingMark(); + requestAnnotations(filePathB); } TEST_F(ClangCodeModelServerSlowTest, RequestReferencesForCurrentDocumentRevision) { - registerProjectAndFileAndWaitForFinished(filePathC); + updateProjectAndOpenDocumentAndWaitForFinished(filePathC); expectReferences(); requestReferences(); @@ -216,7 +218,7 @@ TEST_F(ClangCodeModelServerSlowTest, RequestReferencesForCurrentDocumentRevision TEST_F(ClangCodeModelServerSlowTest, RequestReferencesTakesRevisionFromMessage) { - registerProjectAndFileAndWaitForFinished(filePathC); + updateProjectAndOpenDocumentAndWaitForFinished(filePathC); requestReferences(/*documentRevision=*/ 99); @@ -229,7 +231,7 @@ TEST_F(ClangCodeModelServerSlowTest, RequestReferencesTakesRevisionFromMessage) TEST_F(ClangCodeModelServerSlowTest, RequestFollowSymbolForCurrentDocumentRevision) { - registerProjectAndFileAndWaitForFinished(filePathC); + updateProjectAndOpenDocumentAndWaitForFinished(filePathC); expectFollowSymbol(); requestFollowSymbol(); @@ -237,7 +239,7 @@ TEST_F(ClangCodeModelServerSlowTest, RequestFollowSymbolForCurrentDocumentRevisi TEST_F(ClangCodeModelServerSlowTest, RequestFollowSymbolTakesRevisionFromMessage) { - registerProjectAndFileAndWaitForFinished(filePathC); + updateProjectAndOpenDocumentAndWaitForFinished(filePathC); requestFollowSymbol(/*documentRevision=*/ 99); @@ -248,90 +250,90 @@ TEST_F(ClangCodeModelServerSlowTest, RequestFollowSymbolTakesRevisionFromMessage queue.clear(); // Avoid blocking } -TEST_F(ClangCodeModelServerSlowTest, NoInitialDocumentAnnotationsForClosedDocument) +TEST_F(ClangCodeModelServerSlowTest, NoInitialAnnotationsForClosedDocument) { - const int expectedDocumentAnnotationsChangedCount = 0; - registerProjectAndFile(filePathA, expectedDocumentAnnotationsChangedCount); + const int expectedAnnotationsCount = 0; + updateProjectAndOpenDocument(filePathA, expectedAnnotationsCount); - unregisterFile(filePathA); + closeDocument(filePathA); } -TEST_F(ClangCodeModelServerSlowTest, NoDocumentAnnotationsForClosedDocument) +TEST_F(ClangCodeModelServerSlowTest, NoAnnotationsForClosedDocument) { - const int expectedDocumentAnnotationsChangedCount = AnnotationJobsMultiplier; // Only for registration. - registerProjectAndFileAndWaitForFinished(filePathA, expectedDocumentAnnotationsChangedCount); + const int expectedAnnotationsCount = AnnotationJobsMultiplier; // Only for registration. + updateProjectAndOpenDocumentAndWaitForFinished(filePathA, expectedAnnotationsCount); updateUnsavedContent(filePathA, Utf8String(), 1); - unregisterFile(filePathA); + closeDocument(filePathA); } -TEST_F(ClangCodeModelServerSlowTest, NoInitialDocumentAnnotationsForOutdatedDocumentRevision) +TEST_F(ClangCodeModelServerSlowTest, NoInitialAnnotationsForOutdatedDocumentRevision) { - const int expectedDocumentAnnotationsChangedCount = AnnotationJobsMultiplier; // Only for registration. - registerProjectAndFile(filePathA, expectedDocumentAnnotationsChangedCount); + const int expectedAnnotationsCount = AnnotationJobsMultiplier; // Only for registration. + updateProjectAndOpenDocument(filePathA, expectedAnnotationsCount); updateUnsavedContent(filePathA, Utf8String(), 1); } TEST_F(ClangCodeModelServerSlowTest, NoCompletionsForClosedDocument) { - const int expectedDocumentAnnotationsChangedCount = AnnotationJobsMultiplier; // Only for registration. - registerProjectAndFileAndWaitForFinished(filePathA, expectedDocumentAnnotationsChangedCount); - completeCodeInFileA(); + const int expectedAnnotationsCount = AnnotationJobsMultiplier; // Only for registration. + updateProjectAndOpenDocumentAndWaitForFinished(filePathA, expectedAnnotationsCount); + requestCompletionsInFileA(); - unregisterFile(filePathA); + closeDocument(filePathA); } TEST_F(ClangCodeModelServerSlowTest, CodeCompletionDependingOnProject) { - const int expectedDocumentAnnotationsChangedCount = 2 * AnnotationJobsMultiplier; // For registration and due to project change. - registerProjectAndFileAndWaitForFinished(filePathB, expectedDocumentAnnotationsChangedCount); + const int expectedAnnotationsCount = 2 * AnnotationJobsMultiplier; // For registration and due to project change. + updateProjectAndOpenDocumentAndWaitForFinished(filePathB, expectedAnnotationsCount); expectCompletionFromFileBEnabledByMacro(); - changeProjectPartArguments(); - completeCodeInFileB(); + updateProjectPartWithArguments(); + requestCompletionsInFileB(); } TEST_F(ClangCodeModelServerSlowTest, GetCodeCompletionForUnsavedFile) { - registerProjectPart(); - expectDocumentAnnotationsChanged(AnnotationJobsMultiplier); - registerFileWithUnsavedContent(filePathA, unsavedContent(filePathAUnsavedVersion1)); + updateProjectPart(); + expectAnnotations(AnnotationJobsMultiplier); + openDocumentWithUnsavedContent(filePathA, unsavedContent(filePathAUnsavedVersion1)); expectCompletionFromFileAUnsavedMethodVersion1(); - completeCodeInFileA(); + requestCompletionsInFileA(); } TEST_F(ClangCodeModelServerSlowTest, GetNoCodeCompletionAfterRemovingUnsavedFile) { - const int expectedDocumentAnnotationsChangedCount = 2 * AnnotationJobsMultiplier; // For registration and update/removal. - registerProjectAndFileAndWaitForFinished(filePathA, expectedDocumentAnnotationsChangedCount); + const int expectedAnnotationsCount = 2 * AnnotationJobsMultiplier; // For registration and update/removal. + updateProjectAndOpenDocumentAndWaitForFinished(filePathA, expectedAnnotationsCount); removeUnsavedFile(filePathA); expectNoCompletionWithUnsavedMethod(); - completeCodeInFileA(); + requestCompletionsInFileA(); } TEST_F(ClangCodeModelServerSlowTest, GetNewCodeCompletionAfterUpdatingUnsavedFile) { - const int expectedDocumentAnnotationsChangedCount = 2 * AnnotationJobsMultiplier; // For registration and update/removal. - registerProjectAndFileAndWaitForFinished(filePathA, expectedDocumentAnnotationsChangedCount); + const int expectedAnnotationsCount = 2 * AnnotationJobsMultiplier; // For registration and update/removal. + updateProjectAndOpenDocumentAndWaitForFinished(filePathA, expectedAnnotationsCount); updateUnsavedContent(filePathA, unsavedContent(filePathAUnsavedVersion2), 1); expectCompletionFromFileAUnsavedMethodVersion2(); - completeCodeInFileA(); + requestCompletionsInFileA(); } TEST_F(ClangCodeModelServerSlowTest, TranslationUnitAfterCreationIsNotDirty) { - registerProjectAndFile(filePathA, AnnotationJobsMultiplier); + updateProjectAndOpenDocument(filePathA, AnnotationJobsMultiplier); ASSERT_THAT(clangServer, HasDirtyDocument(filePathA, projectPartId, 0U, false, false)); } TEST_F(ClangCodeModelServerSlowTest, SetCurrentAndVisibleEditor) { - registerProjectAndFilesAndWaitForFinished(); + updateProjectAndOpenDocumentsAndWaitForFinished(); auto functionDocument = documents.document(filePathA, projectPartId); auto variableDocument = documents.document(filePathB, projectPartId); @@ -344,21 +346,21 @@ TEST_F(ClangCodeModelServerSlowTest, SetCurrentAndVisibleEditor) TEST_F(ClangCodeModelServerSlowTest, StartCompletionJobFirstOnEditThatTriggersCompletion) { - registerProjectAndFile(filePathA, 2 * AnnotationJobsMultiplier); + updateProjectAndOpenDocument(filePathA, 2 * AnnotationJobsMultiplier); ASSERT_TRUE(waitUntilAllJobsFinished()); expectCompletionFromFileA(); updateUnsavedContent(filePathA, unsavedContent(filePathAUnsavedVersion2), 1); - completeCodeInFileA(); + requestCompletionsInFileA(); const QList jobs = clangServer.runningJobsForTestsOnly(); ASSERT_THAT(jobs.size(), Eq(1)); - ASSERT_THAT(jobs.first().jobRequest.type, Eq(JobRequest::Type::CompleteCode)); + ASSERT_THAT(jobs.first().jobRequest.type, Eq(JobRequest::Type::RequestCompletions)); } TEST_F(ClangCodeModelServerSlowTest, SupportiveTranslationUnitNotInitializedAfterRegister) { - registerProjectAndFile(filePathA, AnnotationJobsMultiplier); + updateProjectAndOpenDocument(filePathA, AnnotationJobsMultiplier); ASSERT_TRUE(waitUntilAllJobsFinished()); ASSERT_FALSE(isSupportiveTranslationUnitInitialized(filePathA)); @@ -366,7 +368,7 @@ TEST_F(ClangCodeModelServerSlowTest, SupportiveTranslationUnitNotInitializedAfte TEST_F(ClangCodeModelServerSlowTest, SupportiveTranslationUnitIsSetupAfterFirstEdit) { - registerProjectAndFile(filePathA, 2 * AnnotationJobsMultiplier); + updateProjectAndOpenDocument(filePathA, 2 * AnnotationJobsMultiplier); ASSERT_TRUE(waitUntilAllJobsFinished()); updateUnsavedContent(filePathA, unsavedContent(filePathAUnsavedVersion2), 1); @@ -377,7 +379,7 @@ TEST_F(ClangCodeModelServerSlowTest, SupportiveTranslationUnitIsSetupAfterFirstE TEST_F(ClangCodeModelServerSlowTest, DoNotRunDuplicateJobs) { - registerProjectAndFile(filePathA, 3 * AnnotationJobsMultiplier); + updateProjectAndOpenDocument(filePathA, 3 * AnnotationJobsMultiplier); ASSERT_TRUE(waitUntilAllJobsFinished()); updateUnsavedContent(filePathA, unsavedContent(filePathAUnsavedVersion2), 1); ASSERT_TRUE(waitUntilAllJobsFinished()); @@ -391,7 +393,7 @@ TEST_F(ClangCodeModelServerSlowTest, DoNotRunDuplicateJobs) TEST_F(ClangCodeModelServerSlowTest, OpenDocumentAndEdit) { - registerProjectAndFile(filePathA, 4 * AnnotationJobsMultiplier); + updateProjectAndOpenDocument(filePathA, 4 * AnnotationJobsMultiplier); ASSERT_TRUE(waitUntilAllJobsFinished()); for (unsigned revision = 1; revision <= 3; ++revision) { @@ -402,7 +404,7 @@ TEST_F(ClangCodeModelServerSlowTest, OpenDocumentAndEdit) TEST_F(ClangCodeModelServerSlowTest, IsNotCurrentCurrentAndVisibleEditorAnymore) { - registerProjectAndFilesAndWaitForFinished(); + updateProjectAndOpenDocumentsAndWaitForFinished(); auto functionDocument = documents.document(filePathA, projectPartId); auto variableDocument = documents.document(filePathB, projectPartId); updateVisibilty(filePathB, filePathA); @@ -417,7 +419,7 @@ TEST_F(ClangCodeModelServerSlowTest, IsNotCurrentCurrentAndVisibleEditorAnymore) TEST_F(ClangCodeModelServerSlowTest, TranslationUnitAfterUpdateNeedsReparse) { - registerProjectAndFileAndWaitForFinished(filePathA, 2 * AnnotationJobsMultiplier); + updateProjectAndOpenDocumentAndWaitForFinished(filePathA, 2 * AnnotationJobsMultiplier); updateUnsavedContent(filePathA, unsavedContent(filePathAUnsavedVersion1), 1U); ASSERT_THAT(clangServer, HasDirtyDocument(filePathA, projectPartId, 1U, true, true)); @@ -425,32 +427,32 @@ TEST_F(ClangCodeModelServerSlowTest, TranslationUnitAfterUpdateNeedsReparse) TEST_F(ClangCodeModelServerSlowTest, TakeOverJobsOnProjectPartChange) { - registerProjectAndFileAndWaitForFinished(filePathC, 2 * AnnotationJobsMultiplier); + updateProjectAndOpenDocumentAndWaitForFinished(filePathC, 2 * AnnotationJobsMultiplier); updateVisibilty(filePathB, filePathB); // Disable processing jobs requestReferences(); expectReferences(); - changeProjectPartArguments(); // Here we do not want to loose the RequestReferences job + updateProjectPartWithArguments(); // Here we do not want to loose the RequestReferences job updateVisibilty(filePathC, filePathC); // Enable processing jobs } TEST_F(ClangCodeModelServerSlowTest, TakeOverJobsOnProjectPartIdChange) { - registerProjectPart(projectPartId); - registerProjectPart(projectPartId2); - registerFile(filePathC, projectPartId, 0); + updateProjectPart(projectPartId); + updateProjectPart(projectPartId2); + openDocument(filePathC, projectPartId, 0); requestReferences(); expectReferences(); - registerFile(filePathC, projectPartId2); // Here we do not want to loose the RequestReferences job + openDocument(filePathC, projectPartId2); // Here we do not want to loose the RequestReferences job } void ClangCodeModelServer::SetUp() { clangServer.setClient(&mockClangCodeModelClient); - clangServer.setUpdateDocumentAnnotationsTimeOutInMsForTestsOnly(0); + clangServer.setUpdateAnnotationsTimeOutInMsForTestsOnly(0); clangServer.setUpdateVisibleButNotCurrentDocumentsTimeOutInMsForTestsOnly(0); } @@ -470,83 +472,81 @@ bool ClangCodeModelServer::waitUntilAllJobsFinished(int timeOutInMs) return ProcessEventUtilities::processEventsUntilTrue(noJobsRunningAnymore, timeOutInMs); } -void ClangCodeModelServer::registerProjectAndFilesAndWaitForFinished( - int expectedDocumentAnnotationsChangedMessages) +void ClangCodeModelServer::updateProjectAndOpenDocumentsAndWaitForFinished(int expectedAnnotationsdMessages) { - registerProjectPart(); - registerFiles(expectedDocumentAnnotationsChangedMessages); + updateProjectPart(); + openDocuments(expectedAnnotationsdMessages); ASSERT_TRUE(waitUntilAllJobsFinished()); } -void ClangCodeModelServer::registerFile(const Utf8String &filePath, - int expectedDocumentAnnotationsChangedMessages) +void ClangCodeModelServer::openDocument(const Utf8String &filePath, + int expectedAnnotationsMessages) { - registerFile(filePath, projectPartId, expectedDocumentAnnotationsChangedMessages); + openDocument(filePath, projectPartId, expectedAnnotationsMessages); } -void ClangCodeModelServer::registerFile(const Utf8String &filePath, +void ClangCodeModelServer::openDocument(const Utf8String &filePath, const Utf8String &projectPartId, - int expectedDocumentAnnotationsChangedMessages) + int expectedAnnotationsMessages) { const FileContainer fileContainer(filePath, projectPartId); - const RegisterTranslationUnitForEditorMessage message({fileContainer}, filePath, {filePath}); + const DocumentsOpenedMessage message({fileContainer}, filePath, {filePath}); - expectDocumentAnnotationsChanged(expectedDocumentAnnotationsChangedMessages); + expectAnnotations(expectedAnnotationsMessages); - clangServer.registerTranslationUnitsForEditor(message); + clangServer.documentsOpened(message); } -void ClangCodeModelServer::registerFiles(int expectedDocumentAnnotationsChangedMessages) +void ClangCodeModelServer::openDocuments(int expectedAnnotationsMessages) { const FileContainer fileContainerA(filePathA, projectPartId); const FileContainer fileContainerB(filePathB, projectPartId); - const RegisterTranslationUnitForEditorMessage message({fileContainerA, - fileContainerB}, - filePathA, - {filePathA, filePathB}); + const DocumentsOpenedMessage message({fileContainerA, fileContainerB}, + filePathA, + {filePathA, filePathB}); - expectDocumentAnnotationsChanged(expectedDocumentAnnotationsChangedMessages); + expectAnnotations(expectedAnnotationsMessages); - clangServer.registerTranslationUnitsForEditor(message); + clangServer.documentsOpened(message); } -void ClangCodeModelServer::expectDocumentAnnotationsChanged(int count) +void ClangCodeModelServer::expectAnnotations(int count) { - EXPECT_CALL(mockClangCodeModelClient, documentAnnotationsChanged(_)).Times(count); + EXPECT_CALL(mockClangCodeModelClient, annotations(_)).Times(count); } -void ClangCodeModelServer::registerFileWithUnsavedContent(const Utf8String &filePath, - const Utf8String &unsavedContent) +void ClangCodeModelServer::openDocumentWithUnsavedContent(const Utf8String &filePath, + const Utf8String &unsavedContent) { const FileContainer fileContainer(filePath, projectPartId, unsavedContent, true); - const RegisterTranslationUnitForEditorMessage message({fileContainer}, filePath, {filePath}); + const DocumentsOpenedMessage message({fileContainer}, filePath, {filePath}); - clangServer.registerTranslationUnitsForEditor(message); + clangServer.documentsOpened(message); } -void ClangCodeModelServer::completeCode(const Utf8String &filePath, - uint line, - uint column, - const Utf8String &projectPartId) +void ClangCodeModelServer::requestCompletions(const Utf8String &filePath, + uint line, + uint column, + const Utf8String &projectPartId) { Utf8String theProjectPartId = projectPartId; if (theProjectPartId.isEmpty()) theProjectPartId = this->projectPartId; - const CompleteCodeMessage message(filePath, line, column, theProjectPartId); + const RequestCompletionsMessage message(filePath, line, column, theProjectPartId); - clangServer.completeCode(message); + clangServer.requestCompletions(message); } -void ClangCodeModelServer::completeCodeInFileA() +void ClangCodeModelServer::requestCompletionsInFileA() { - completeCode(filePathA, 20, 1); + requestCompletions(filePathA, 20, 1); } -void ClangCodeModelServer::completeCodeInFileB() +void ClangCodeModelServer::requestCompletionsInFileB() { - completeCode(filePathB, 35, 1); + requestCompletions(filePathB, 35, 1); } bool ClangCodeModelServer::isSupportiveTranslationUnitInitialized(const Utf8String &filePath) @@ -570,7 +570,7 @@ DocumentProcessor ClangCodeModelServer::documentProcessorForFile(const Utf8Strin void ClangCodeModelServer::expectCompletion(const CodeCompletion &completion) { EXPECT_CALL(mockClangCodeModelClient, - codeCompleted(Field(&CodeCompletedMessage::codeCompletions, + completions(Field(&CompletionsMessage::codeCompletions, Contains(completion)))) .Times(1); } @@ -609,7 +609,7 @@ void ClangCodeModelServer::expectNoCompletionWithUnsavedMethod() CodeCompletion::FunctionCompletionKind); EXPECT_CALL(mockClangCodeModelClient, - codeCompleted(Field(&CodeCompletedMessage::codeCompletions, + completions(Field(&CompletionsMessage::codeCompletions, Not(Contains(completion))))) .Times(1); } @@ -630,14 +630,12 @@ void ClangCodeModelServer::expectReferences() void ClangCodeModelServer::expectFollowSymbol() { - const ClangBackEnd::SourceRangeContainer classDefinition{ - {filePathC, 40, 7}, - {filePathC, 40, 10} - }; + const ClangBackEnd::FollowSymbolResult classDefinition + = ClangBackEnd::SourceRangeContainer({filePathC, 40, 7}, {filePathC, 40, 10}); EXPECT_CALL(mockClangCodeModelClient, followSymbol( - Field(&FollowSymbolMessage::sourceRange, + Field(&FollowSymbolMessage::result, Eq(classDefinition)))) .Times(1); } @@ -651,11 +649,11 @@ void ClangCodeModelServer::expectCompletionFromFileA() expectCompletion(completion); } -void ClangCodeModelServer::requestDocumentAnnotations(const Utf8String &filePath) +void ClangCodeModelServer::requestAnnotations(const Utf8String &filePath) { - const RequestDocumentAnnotationsMessage message({filePath, projectPartId}); + const RequestAnnotationsMessage message({filePath, projectPartId}); - clangServer.requestDocumentAnnotations(message); + clangServer.requestAnnotations(message); } void ClangCodeModelServer::requestReferences(quint32 documentRevision) @@ -676,7 +674,7 @@ void ClangCodeModelServer::requestFollowSymbol(quint32 documentRevision) clangServer.requestFollowSymbol(message); } -void ClangCodeModelServer::expectDocumentAnnotationsChangedForFileBWithSpecificHighlightingMark() +void ClangCodeModelServer::expectAnnotationsForFileBWithSpecificHighlightingMark() { HighlightingTypes types; types.mainHighlightingType = ClangBackEnd::HighlightingType::Function; @@ -684,80 +682,79 @@ void ClangCodeModelServer::expectDocumentAnnotationsChangedForFileBWithSpecificH types.mixinHighlightingTypes.push_back(ClangBackEnd::HighlightingType::FunctionDefinition); const TokenInfoContainer tokenInfo(1, 6, 8, types); EXPECT_CALL(mockClangCodeModelClient, - documentAnnotationsChanged( - Field(&DocumentAnnotationsChangedMessage::tokenInfos, + annotations( + Field(&AnnotationsMessage::tokenInfos, PartlyContains(tokenInfo)))).Times(AnnotationJobsMultiplier); } void ClangCodeModelServer::updateUnsavedContent(const Utf8String &filePath, - const Utf8String &fileContent, - quint32 revisionNumber) + const Utf8String &fileContent, + quint32 revisionNumber) { const FileContainer fileContainer(filePath, projectPartId, fileContent, true, revisionNumber); - const UpdateTranslationUnitsForEditorMessage message({fileContainer}); + const DocumentsChangedMessage message({fileContainer}); - clangServer.updateTranslationUnitsForEditor(message); + clangServer.documentsChanged(message); } void ClangCodeModelServer::removeUnsavedFile(const Utf8String &filePath) { const FileContainer fileContainer(filePath, projectPartId, Utf8StringVector(), 74); - const UpdateTranslationUnitsForEditorMessage message({fileContainer}); + const DocumentsChangedMessage message({fileContainer}); - clangServer.updateTranslationUnitsForEditor(message); + clangServer.documentsChanged(message); } -void ClangCodeModelServer::unregisterFile(const Utf8String &filePath) +void ClangCodeModelServer::closeDocument(const Utf8String &filePath) { const QVector fileContainers = {FileContainer(filePath, projectPartId)}; - const UnregisterTranslationUnitsForEditorMessage message(fileContainers); + const DocumentsClosedMessage message(fileContainers); - clangServer.unregisterTranslationUnitsForEditor(message); + clangServer.documentsClosed(message); } -void ClangCodeModelServer::registerProjectPart() +void ClangCodeModelServer::updateProjectPart() { - registerProjectPart(projectPartId); + updateProjectPart(projectPartId); } -void ClangCodeModelServer::registerProjectPart(const Utf8String &projectPartId) +void ClangCodeModelServer::updateProjectPart(const Utf8String &projectPartId) { - RegisterProjectPartsForEditorMessage message({ProjectPartContainer(projectPartId)}); + ProjectPartsUpdatedMessage message({ProjectPartContainer(projectPartId)}); - clangServer.registerProjectPartsForEditor(message); + clangServer.projectPartsUpdated(message); } -void ClangCodeModelServer::registerProjectAndFile(const Utf8String &filePath, - int expectedDocumentAnnotationsChangedMessages) +void ClangCodeModelServer::updateProjectAndOpenDocument(const Utf8String &filePath, + int expectedAnnotationsMessages) { - registerProjectPart(); - registerFile(filePath, expectedDocumentAnnotationsChangedMessages); + updateProjectPart(); + openDocument(filePath, expectedAnnotationsMessages); } -void ClangCodeModelServer::registerProjectAndFileAndWaitForFinished( - const Utf8String &filePath, - int expectedDocumentAnnotationsChangedMessages) +void ClangCodeModelServer::updateProjectAndOpenDocumentAndWaitForFinished( + const Utf8String &filePath, int expectedAnnotationsMessages) { - registerProjectAndFile(filePath, expectedDocumentAnnotationsChangedMessages); + updateProjectAndOpenDocument(filePath, expectedAnnotationsMessages); ASSERT_TRUE(waitUntilAllJobsFinished()); } -void ClangCodeModelServer::changeProjectPartArguments() +void ClangCodeModelServer::updateProjectPartWithArguments() { const ProjectPartContainer projectPartContainer(projectPartId, {Utf8StringLiteral("-DArgumentDefinition")}); - const RegisterProjectPartsForEditorMessage message({projectPartContainer}); + const ProjectPartsUpdatedMessage message({projectPartContainer}); - clangServer.registerProjectPartsForEditor(message); + clangServer.projectPartsUpdated(message); } void ClangCodeModelServer::updateVisibilty(const Utf8String ¤tEditor, - const Utf8String &additionalVisibleEditor) + const Utf8String &additionalVisibleEditor) { - const UpdateVisibleTranslationUnitsMessage message(currentEditor, - {currentEditor, additionalVisibleEditor}); + const DocumentVisibilityChangedMessage message(currentEditor, + {currentEditor, additionalVisibleEditor}); - clangServer.updateVisibleTranslationUnits(message); + clangServer.documentVisibilityChanged(message); } const Utf8String ClangCodeModelServer::unsavedContent(const QString &unsavedFilePath) diff --git a/tests/unit/unittest/clangcompletecodejob-test.cpp b/tests/unit/unittest/clangcompletecodejob-test.cpp index fd7113a2eb5..2b23dfc09d5 100644 --- a/tests/unit/unittest/clangcompletecodejob-test.cpp +++ b/tests/unit/unittest/clangcompletecodejob-test.cpp @@ -38,7 +38,7 @@ namespace { class CompleteCodeJob : public ClangAsyncJobTest { protected: - void SetUp() override { BaseSetUp(JobRequest::Type::CompleteCode, job); } + void SetUp() override { BaseSetUp(JobRequest::Type::RequestCompletions, job); } protected: ClangBackEnd::CompleteCodeJob job; @@ -65,7 +65,7 @@ TEST_F(CompleteCodeJob, SendAnnotations) { job.setContext(jobContextWithMockClient); job.prepareAsyncRun(); - EXPECT_CALL(mockIpcClient, codeCompleted(_)).Times(1); + EXPECT_CALL(mockIpcClient, completions(_)).Times(1); job.runAsync(); @@ -79,8 +79,8 @@ TEST_F(CompleteCodeJob, ForwardTicketNumber) job.setContext(jobContextWithMockClient); job.prepareAsyncRun(); EXPECT_CALL(mockIpcClient, - codeCompleted(Field(&CodeCompletedMessage::ticketNumber, - Eq(jobRequest.ticketNumber)))) + completions(Field(&CompletionsMessage::ticketNumber, + Eq(jobRequest.ticketNumber)))) .Times(1); job.runAsync(); @@ -92,7 +92,7 @@ TEST_F(CompleteCodeJob, DontSendCompletionsIfDocumentWasClosed) { job.setContext(jobContextWithMockClient); job.prepareAsyncRun(); - EXPECT_CALL(mockIpcClient, codeCompleted(_)).Times(0); + EXPECT_CALL(mockIpcClient, completions(_)).Times(0); job.runAsync(); documents.remove({FileContainer{filePath, projectPartId}}); diff --git a/tests/unit/unittest/clangdocumentprocessor-test.cpp b/tests/unit/unittest/clangdocumentprocessor-test.cpp index d18803eb4bb..d441688c752 100644 --- a/tests/unit/unittest/clangdocumentprocessor-test.cpp +++ b/tests/unit/unittest/clangdocumentprocessor-test.cpp @@ -72,7 +72,7 @@ TEST_F(DocumentProcessor, ProcessEmpty) TEST_F(DocumentProcessorSlowTest, ProcessSingleJob) { const JobRequest jobRequest - = documentProcessor->createJobRequest(JobRequest::Type::UpdateDocumentAnnotations); + = documentProcessor->createJobRequest(JobRequest::Type::UpdateAnnotations); documentProcessor->addJob(jobRequest); const JobRequests jobsStarted = documentProcessor->process(); diff --git a/tests/unit/unittest/clangdocumentprocessors-test.cpp b/tests/unit/unittest/clangdocumentprocessors-test.cpp index 0e16ab1f4e0..8142d9d408a 100644 --- a/tests/unit/unittest/clangdocumentprocessors-test.cpp +++ b/tests/unit/unittest/clangdocumentprocessors-test.cpp @@ -157,7 +157,7 @@ TEST_F(DocumentProcessors, ProcessEmpty) TEST_F(DocumentProcessorsSlowTest, ProcessSingle) { DocumentProcessor documentProcessor = documentProcessors.create(document); - documentProcessor.addJob(JobRequest::Type::UpdateDocumentAnnotations); + documentProcessor.addJob(JobRequest::Type::UpdateAnnotations); const JobRequests jobsStarted = documentProcessors.process(); diff --git a/tests/unit/unittest/clangfollowsymbol-test.cpp b/tests/unit/unittest/clangfollowsymbol-test.cpp index f42e8e63993..9df7349306c 100644 --- a/tests/unit/unittest/clangfollowsymbol-test.cpp +++ b/tests/unit/unittest/clangfollowsymbol-test.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -55,6 +56,7 @@ using ::ClangBackEnd::Document; using ::ClangBackEnd::UnsavedFiles; using ::ClangBackEnd::ReferencesResult; using ::ClangBackEnd::SourceRangeContainer; +using ::ClangBackEnd::FollowSymbolResult; namespace { const Utf8String sourceFilePath = Utf8StringLiteral(TESTDATA_DIR"/followsymbol_main.cpp"); @@ -131,12 +133,12 @@ public: class FollowSymbol : public ::testing::Test { protected: - SourceRangeContainer followSymbol(uint line, uint column) + FollowSymbolResult followSymbol(uint line, uint column) { return document.translationUnit().followSymbol(line, column); } - SourceRangeContainer followHeaderSymbol(uint line, uint column) + FollowSymbolResult followHeaderSymbol(uint line, uint column) { return headerDocument.translationUnit().followSymbol(line, column); } diff --git a/tests/unit/unittest/clangjobqueue-test.cpp b/tests/unit/unittest/clangjobqueue-test.cpp index de0161c713c..b5758dc25b9 100644 --- a/tests/unit/unittest/clangjobqueue-test.cpp +++ b/tests/unit/unittest/clangjobqueue-test.cpp @@ -90,7 +90,7 @@ protected: TEST_F(JobQueue, AddJob) { const JobRequest jobRequest = createJobRequest(filePath1, - JobRequest::Type::UpdateDocumentAnnotations); + JobRequest::Type::UpdateAnnotations); jobQueue.add(jobRequest); @@ -100,7 +100,7 @@ TEST_F(JobQueue, AddJob) TEST_F(JobQueue, DoNotAddDuplicate) { const JobRequest request = createJobRequest(filePath1, - JobRequest::Type::UpdateDocumentAnnotations); + JobRequest::Type::UpdateAnnotations); jobQueue.add(request); const bool added = jobQueue.add(request); @@ -115,7 +115,7 @@ TEST_F(JobQueue, DoNotAddDuplicateForWhichAJobIsAlreadyRunning) }); const bool added = jobQueue.add(createJobRequest(filePath1, - JobRequest::Type::UpdateDocumentAnnotations)); + JobRequest::Type::UpdateAnnotations)); ASSERT_FALSE(added); } @@ -127,7 +127,7 @@ TEST_F(JobQueue, DoNotAddForNotExistingDocument) }); const bool added = jobQueue.add(createJobRequest(Utf8StringLiteral("notExistingDocument.cpp"), - JobRequest::Type::UpdateDocumentAnnotations)); + JobRequest::Type::UpdateAnnotations)); ASSERT_FALSE(added); } @@ -136,7 +136,7 @@ TEST_F(JobQueue, DoNotAddForNotIntactDocument) { document.setHasParseOrReparseFailed(true); const bool added = jobQueue.add(createJobRequest(filePath1, - JobRequest::Type::UpdateDocumentAnnotations)); + JobRequest::Type::UpdateAnnotations)); ASSERT_FALSE(added); } @@ -150,7 +150,7 @@ TEST_F(JobQueue, CancelDuringAddForNotIntactDocument) }); - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateAnnotations)); ASSERT_TRUE(canceled); } @@ -164,7 +164,7 @@ TEST_F(JobQueue, ProcessEmpty) TEST_F(JobQueue, ProcessSingleJob) { - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateAnnotations)); const JobRequests jobsToRun = jobQueue.processQueue(); @@ -174,7 +174,7 @@ TEST_F(JobQueue, ProcessSingleJob) TEST_F(JobQueue, ProcessUntilEmpty) { - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateAnnotations)); jobQueue.add(createJobRequest(filePath1, JobRequest::Type::ParseSupportiveTranslationUnit)); JobRequests jobsToRun; @@ -191,7 +191,7 @@ TEST_F(JobQueue, ProcessUntilEmpty) TEST_F(JobQueue, RemoveRequestsForClosedDocuments) { - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateAnnotations)); removeDocument(); const JobRequests jobsToRun = jobQueue.processQueue(); @@ -202,7 +202,7 @@ TEST_F(JobQueue, RemoveRequestsForClosedDocuments) TEST_F(JobQueue, RemoveRequestsForClosedProject) { - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateAnnotations)); removeProject(); const JobRequests jobsToRun = jobQueue.processQueue(); @@ -213,7 +213,7 @@ TEST_F(JobQueue, RemoveRequestsForClosedProject) TEST_F(JobQueue, RemoveRequestsForOudatedUnsavedFiles) { - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateAnnotations)); updateUnsavedFiles(); const JobRequests jobsToRun = jobQueue.processQueue(); @@ -224,7 +224,7 @@ TEST_F(JobQueue, RemoveRequestsForOudatedUnsavedFiles) TEST_F(JobQueue, RemoveRequestsForChangedDocumentRevision) { - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateAnnotations)); updateDocumentRevision(); const JobRequests jobsToRun = jobQueue.processQueue(); @@ -235,7 +235,7 @@ TEST_F(JobQueue, RemoveRequestsForChangedDocumentRevision) TEST_F(JobQueue, RemoveRequestsForOudatedProject) { - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateAnnotations)); updateProject(); const JobRequests jobsToRun = jobQueue.processQueue(); @@ -247,7 +247,7 @@ TEST_F(JobQueue, RemoveRequestsForOudatedProject) TEST_F(JobQueue, RemoveRequestsForNotIntactDocuments) { const Utf8String filePath = createTranslationUnitForDeletedFile(); - jobQueue.add(createJobRequest(filePath, JobRequest::Type::UpdateDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath, JobRequest::Type::UpdateAnnotations)); const JobRequests jobsToRun = jobQueue.processQueue(); @@ -257,7 +257,7 @@ TEST_F(JobQueue, RemoveRequestsForNotIntactDocuments) TEST_F(JobQueue, CancelRequestsForNotIntactDocuments) { - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateAnnotations)); document.setHasParseOrReparseFailed(true); bool canceled = false; jobQueue.setCancelJobRequest([&canceled](const JobRequest &) { @@ -272,8 +272,8 @@ TEST_F(JobQueue, CancelRequestsForNotIntactDocuments) TEST_F(JobQueue, PrioritizeCurrentDocumentOverNotCurrent) { resetVisibilityAndCurrentEditor(); - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations)); - jobQueue.add(createJobRequest(filePath2, JobRequest::Type::UpdateDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateAnnotations)); + jobQueue.add(createJobRequest(filePath2, JobRequest::Type::UpdateAnnotations)); documents.setUsedByCurrentEditor(filePath2); jobQueue.prioritizeRequests(); @@ -284,8 +284,8 @@ TEST_F(JobQueue, PrioritizeCurrentDocumentOverNotCurrent) TEST_F(JobQueue, PrioritizeVisibleDocumentsOverNotVisible) { resetVisibilityAndCurrentEditor(); - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations)); - jobQueue.add(createJobRequest(filePath2, JobRequest::Type::UpdateDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateAnnotations)); + jobQueue.add(createJobRequest(filePath2, JobRequest::Type::UpdateAnnotations)); documents.setVisibleInEditors({filePath2}); jobQueue.prioritizeRequests(); @@ -296,8 +296,8 @@ TEST_F(JobQueue, PrioritizeVisibleDocumentsOverNotVisible) TEST_F(JobQueue, PrioritizeCurrentDocumentOverVisible) { resetVisibilityAndCurrentEditor(); - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations)); - jobQueue.add(createJobRequest(filePath2, JobRequest::Type::UpdateDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateAnnotations)); + jobQueue.add(createJobRequest(filePath2, JobRequest::Type::UpdateAnnotations)); documents.setVisibleInEditors({filePath1, filePath2}); documents.setUsedByCurrentEditor(filePath2); @@ -308,7 +308,7 @@ TEST_F(JobQueue, PrioritizeCurrentDocumentOverVisible) TEST_F(JobQueue, RunNothingForNotCurrentOrVisibleDocument) { - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateAnnotations)); documents.setVisibleInEditors({}); documents.setUsedByCurrentEditor(Utf8StringLiteral("aNonExistingFilePath")); @@ -319,8 +319,8 @@ TEST_F(JobQueue, RunNothingForNotCurrentOrVisibleDocument) TEST_F(JobQueue, RunOnlyOneJobPerTranslationUnitIfMultipleAreInQueue) { - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations)); - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::RequestDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::RequestAnnotations)); const JobRequests jobsToRun = jobQueue.processQueue(); @@ -335,10 +335,10 @@ TEST_F(JobQueue, RunJobsForDistinctTranslationUnits) const TranslationUnit alternativeTu = document.translationUnits().createAndAppend(); document.translationUnits().updateParseTimePoint(alternativeTu.id(), Clock::now()); jobQueue.add(createJobRequest(filePath1, - JobRequest::Type::UpdateDocumentAnnotations, + JobRequest::Type::UpdateAnnotations, PreferredTranslationUnit::RecentlyParsed)); jobQueue.add(createJobRequest(filePath1, - JobRequest::Type::UpdateDocumentAnnotations, + JobRequest::Type::UpdateAnnotations, PreferredTranslationUnit::PreviouslyParsed)); const JobRequests jobsToRun = jobQueue.processQueue(); @@ -348,7 +348,7 @@ TEST_F(JobQueue, RunJobsForDistinctTranslationUnits) } TEST_F(JobQueue, DoNotRunJobForTranslationUnittThatIsBeingProcessed) { - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateAnnotations)); JobRequests jobsToRun = jobQueue.processQueue(); jobQueue.setIsJobRunningForTranslationUnitHandler([](const Utf8String &) { return true; @@ -359,9 +359,9 @@ TEST_F(JobQueue, DoNotRunJobForTranslationUnittThatIsBeingProcessed) ASSERT_THAT(jobsToRun.size(), Eq(0)); } -TEST_F(JobQueue, RequestUpdateDocumentAnnotationsOutdatableByUnsavedFileChange) +TEST_F(JobQueue, RequestUpdateAnnotationsOutdatableByUnsavedFileChange) { - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateAnnotations)); updateUnsavedFiles(); const JobRequests jobsToStart = jobQueue.processQueue(); @@ -369,9 +369,9 @@ TEST_F(JobQueue, RequestUpdateDocumentAnnotationsOutdatableByUnsavedFileChange) ASSERT_THAT(jobsToStart.size(), Eq(0)); } -TEST_F(JobQueue, RequestUpdateDocumentAnnotationsOutdatableByProjectRemoval) +TEST_F(JobQueue, RequestUpdateAnnotationsOutdatableByProjectRemoval) { - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateAnnotations)); removeProject(); const JobRequests jobsToStart = jobQueue.processQueue(); @@ -379,9 +379,9 @@ TEST_F(JobQueue, RequestUpdateDocumentAnnotationsOutdatableByProjectRemoval) ASSERT_THAT(jobsToStart.size(), Eq(0)); } -TEST_F(JobQueue, RequestUpdateDocumentAnnotationsOutdatableByProjectChange) +TEST_F(JobQueue, RequestUpdateAnnotationsOutdatableByProjectChange) { - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateAnnotations)); updateProject(); const JobRequests jobsToStart = jobQueue.processQueue(); @@ -389,9 +389,9 @@ TEST_F(JobQueue, RequestUpdateDocumentAnnotationsOutdatableByProjectChange) ASSERT_THAT(jobsToStart.size(), Eq(0)); } -TEST_F(JobQueue, RequestUpdateDocumentAnnotationsOutdatableByDocumentClose) +TEST_F(JobQueue, RequestUpdateAnnotationsOutdatableByDocumentClose) { - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateAnnotations)); removeDocument(); const JobRequests jobsToStart = jobQueue.processQueue(); @@ -399,9 +399,9 @@ TEST_F(JobQueue, RequestUpdateDocumentAnnotationsOutdatableByDocumentClose) ASSERT_THAT(jobsToStart.size(), Eq(0)); } -TEST_F(JobQueue, RequestUpdateDocumentAnnotationsOutdatableByNotIntactDocument) +TEST_F(JobQueue, RequestUpdateAnnotationsOutdatableByNotIntactDocument) { - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::UpdateAnnotations)); document.setHasParseOrReparseFailed(true); const JobRequests jobsToStart = jobQueue.processQueue(); @@ -411,7 +411,7 @@ TEST_F(JobQueue, RequestUpdateDocumentAnnotationsOutdatableByNotIntactDocument) TEST_F(JobQueue, RequestCompleteCodeOutdatableByDocumentClose) { - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::CompleteCode)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::RequestCompletions)); removeDocument(); const JobRequests jobsToStart = jobQueue.processQueue(); @@ -422,7 +422,7 @@ TEST_F(JobQueue, RequestCompleteCodeOutdatableByDocumentClose) TEST_F(JobQueue, RequestCompleteCodeNotOutdatableByUnsavedFilesChange) { pretendParsedTranslationUnit(); - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::CompleteCode)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::RequestCompletions)); updateUnsavedFiles(); const JobRequests jobsToStart = jobQueue.processQueue(); @@ -433,7 +433,7 @@ TEST_F(JobQueue, RequestCompleteCodeNotOutdatableByUnsavedFilesChange) TEST_F(JobQueue, RequestCompleteCodeNotOutdatableByDocumentRevisionChange) { pretendParsedTranslationUnit(); - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::CompleteCode)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::RequestCompletions)); updateDocumentRevision(); const JobRequests jobsToStart = jobQueue.processQueue(); @@ -443,7 +443,7 @@ TEST_F(JobQueue, RequestCompleteCodeNotOutdatableByDocumentRevisionChange) TEST_F(JobQueue, RequestCompleteCodeOutdatableByDocumentRevisionChange) { - jobQueue.add(createJobRequest(filePath1, JobRequest::Type::RequestDocumentAnnotations)); + jobQueue.add(createJobRequest(filePath1, JobRequest::Type::RequestAnnotations)); updateDocumentRevision(); const JobRequests jobsToStart = jobQueue.processQueue(); diff --git a/tests/unit/unittest/clangjobs-test.cpp b/tests/unit/unittest/clangjobs-test.cpp index cf3507d1087..3288b216d42 100644 --- a/tests/unit/unittest/clangjobs-test.cpp +++ b/tests/unit/unittest/clangjobs-test.cpp @@ -83,7 +83,7 @@ TEST_F(Jobs, ProcessEmptyQueue) TEST_F(JobsSlowTest, ProcessQueueWithSingleJob) { - jobs.add(document, JobRequest::Type::UpdateDocumentAnnotations); + jobs.add(document, JobRequest::Type::UpdateAnnotations); const JobRequests jobsStarted = jobs.process(); @@ -93,9 +93,9 @@ TEST_F(JobsSlowTest, ProcessQueueWithSingleJob) TEST_F(JobsSlowTest, ProcessQueueUntilEmpty) { - jobs.add(document, JobRequest::Type::UpdateDocumentAnnotations); - jobs.add(document, JobRequest::Type::UpdateDocumentAnnotations); - jobs.add(document, JobRequest::Type::UpdateDocumentAnnotations); + jobs.add(document, JobRequest::Type::UpdateAnnotations); + jobs.add(document, JobRequest::Type::UpdateAnnotations); + jobs.add(document, JobRequest::Type::UpdateAnnotations); jobs.process(); @@ -104,7 +104,7 @@ TEST_F(JobsSlowTest, ProcessQueueUntilEmpty) TEST_F(JobsSlowTest, IsJobRunning) { - jobs.add(document, JobRequest::Type::UpdateDocumentAnnotations); + jobs.add(document, JobRequest::Type::UpdateAnnotations); jobs.process(); const bool isJobRunning = jobs.isJobRunningForTranslationUnit(document.translationUnit().id()); diff --git a/tests/unit/unittest/clangrequestdocumentannotationsjob-test.cpp b/tests/unit/unittest/clangrequestannotationsjob-test.cpp similarity index 74% rename from tests/unit/unittest/clangrequestdocumentannotationsjob-test.cpp rename to tests/unit/unittest/clangrequestannotationsjob-test.cpp index 5e2d77fee41..76740d041a2 100644 --- a/tests/unit/unittest/clangrequestdocumentannotationsjob-test.cpp +++ b/tests/unit/unittest/clangrequestannotationsjob-test.cpp @@ -25,7 +25,7 @@ #include "clangasyncjob-base.h" -#include +#include using namespace ClangBackEnd; @@ -33,23 +33,23 @@ using testing::_; namespace { -class RequestDocumentAnnotationsJob : public ClangAsyncJobTest +class RequestAnnotationsJob : public ClangAsyncJobTest { protected: - void SetUp() override { BaseSetUp(JobRequest::Type::RequestDocumentAnnotations, job); } + void SetUp() override { BaseSetUp(JobRequest::Type::RequestAnnotations, job); } protected: - ClangBackEnd::RequestDocumentAnnotationsJob job; + ClangBackEnd::RequestAnnotationsJob job; }; -TEST_F(RequestDocumentAnnotationsJob, PrepareAsyncRun) +TEST_F(RequestAnnotationsJob, PrepareAsyncRun) { job.setContext(jobContext); ASSERT_TRUE(job.prepareAsyncRun()); } -TEST_F(RequestDocumentAnnotationsJob, RunAsync) +TEST_F(RequestAnnotationsJob, RunAsync) { job.setContext(jobContext); job.prepareAsyncRun(); @@ -59,22 +59,22 @@ TEST_F(RequestDocumentAnnotationsJob, RunAsync) ASSERT_TRUE(waitUntilJobFinished(job)); } -TEST_F(RequestDocumentAnnotationsJob, SendAnnotations) +TEST_F(RequestAnnotationsJob, SendAnnotations) { job.setContext(jobContextWithMockClient); job.prepareAsyncRun(); - EXPECT_CALL(mockIpcClient, documentAnnotationsChanged(_)).Times(1); + EXPECT_CALL(mockIpcClient, annotations(_)).Times(1); job.runAsync(); ASSERT_TRUE(waitUntilJobFinished(job)); } -TEST_F(RequestDocumentAnnotationsJob, DontSendAnnotationsIfDocumentWasClosed) +TEST_F(RequestAnnotationsJob, DontSendAnnotationsIfDocumentWasClosed) { job.setContext(jobContextWithMockClient); job.prepareAsyncRun(); - EXPECT_CALL(mockIpcClient, documentAnnotationsChanged(_)).Times(0); + EXPECT_CALL(mockIpcClient, annotations(_)).Times(0); job.runAsync(); documents.remove({FileContainer{filePath, projectPartId}}); diff --git a/tests/unit/unittest/clangresumedocumentjob-test.cpp b/tests/unit/unittest/clangresumedocumentjob-test.cpp index 11a9e49072f..9582b0c0d1f 100644 --- a/tests/unit/unittest/clangresumedocumentjob-test.cpp +++ b/tests/unit/unittest/clangresumedocumentjob-test.cpp @@ -83,7 +83,7 @@ TEST_F(ResumeDocumentJob, SendsAnnotationsAfterResume) suspendDocument(); job.setContext(jobContextWithMockClient); job.prepareAsyncRun(); - EXPECT_CALL(mockIpcClient, documentAnnotationsChanged(_)).Times(1); + EXPECT_CALL(mockIpcClient, annotations(_)).Times(1); job.runAsync(); ASSERT_TRUE(waitUntilJobFinished(job)); diff --git a/tests/unit/unittest/clangupdatedocumentannotationsjob-test.cpp b/tests/unit/unittest/clangupdateannotationsjob-test.cpp similarity index 73% rename from tests/unit/unittest/clangupdatedocumentannotationsjob-test.cpp rename to tests/unit/unittest/clangupdateannotationsjob-test.cpp index 1378cce878f..8c6ee421fde 100644 --- a/tests/unit/unittest/clangupdatedocumentannotationsjob-test.cpp +++ b/tests/unit/unittest/clangupdateannotationsjob-test.cpp @@ -25,7 +25,7 @@ #include "clangasyncjob-base.h" -#include +#include using namespace ClangBackEnd; @@ -34,25 +34,25 @@ using testing::_; namespace { -class UpdateDocumentAnnotationsJob : public ClangAsyncJobTest +class UpdateAnnotationsJob : public ClangAsyncJobTest { protected: - void SetUp() override { BaseSetUp(JobRequest::Type::UpdateDocumentAnnotations, job); } + void SetUp() override { BaseSetUp(JobRequest::Type::UpdateAnnotations, job); } protected: - ClangBackEnd::UpdateDocumentAnnotationsJob job; + ClangBackEnd::UpdateAnnotationsJob job; }; -using UpdateDocumentAnnotationsJobSlowTest = UpdateDocumentAnnotationsJob; +using UpdateAnnotationsJobSlowTest = UpdateAnnotationsJob; -TEST_F(UpdateDocumentAnnotationsJob, PrepareAsyncRun) +TEST_F(UpdateAnnotationsJob, PrepareAsyncRun) { job.setContext(jobContext); ASSERT_TRUE(job.prepareAsyncRun()); } -TEST_F(UpdateDocumentAnnotationsJobSlowTest, RunAsync) +TEST_F(UpdateAnnotationsJobSlowTest, RunAsync) { job.setContext(jobContext); job.prepareAsyncRun(); @@ -62,22 +62,22 @@ TEST_F(UpdateDocumentAnnotationsJobSlowTest, RunAsync) ASSERT_TRUE(waitUntilJobFinished(job)); } -TEST_F(UpdateDocumentAnnotationsJobSlowTest, SendAnnotations) +TEST_F(UpdateAnnotationsJobSlowTest, SendAnnotations) { job.setContext(jobContextWithMockClient); job.prepareAsyncRun(); - EXPECT_CALL(mockIpcClient, documentAnnotationsChanged(_)).Times(1); + EXPECT_CALL(mockIpcClient, annotations(_)).Times(1); job.runAsync(); ASSERT_TRUE(waitUntilJobFinished(job)); } -TEST_F(UpdateDocumentAnnotationsJobSlowTest, DontSendAnnotationsIfDocumentWasClosed) +TEST_F(UpdateAnnotationsJobSlowTest, DontSendAnnotationsIfDocumentWasClosed) { job.setContext(jobContextWithMockClient); job.prepareAsyncRun(); - EXPECT_CALL(mockIpcClient, documentAnnotationsChanged(_)).Times(0); + EXPECT_CALL(mockIpcClient, annotations(_)).Times(0); job.runAsync(); documents.remove({FileContainer{filePath, projectPartId}}); @@ -85,11 +85,11 @@ TEST_F(UpdateDocumentAnnotationsJobSlowTest, DontSendAnnotationsIfDocumentWasClo ASSERT_TRUE(waitUntilJobFinished(job)); } -TEST_F(UpdateDocumentAnnotationsJobSlowTest, DontSendAnnotationsIfDocumentRevisionChanged) +TEST_F(UpdateAnnotationsJobSlowTest, DontSendAnnotationsIfDocumentRevisionChanged) { job.setContext(jobContextWithMockClient); job.prepareAsyncRun(); - EXPECT_CALL(mockIpcClient, documentAnnotationsChanged(_)).Times(0); + EXPECT_CALL(mockIpcClient, annotations(_)).Times(0); job.runAsync(); documents.update({FileContainer(filePath, projectPartId, Utf8String(), true, 99)}); @@ -97,7 +97,7 @@ TEST_F(UpdateDocumentAnnotationsJobSlowTest, DontSendAnnotationsIfDocumentRevisi ASSERT_TRUE(waitUntilJobFinished(job)); } -TEST_F(UpdateDocumentAnnotationsJobSlowTest, UpdatesTranslationUnit) +TEST_F(UpdateAnnotationsJobSlowTest, UpdatesTranslationUnit) { const TimePoint timePointBefore = document.lastProjectPartChangeTimePoint(); const QSet dependendOnFilesBefore = document.dependedFilePaths(); diff --git a/tests/unit/unittest/clientserverinprocess-test.cpp b/tests/unit/unittest/clientserverinprocess-test.cpp index 1b0743c558d..68dd598e593 100644 --- a/tests/unit/unittest/clientserverinprocess-test.cpp +++ b/tests/unit/unittest/clientserverinprocess-test.cpp @@ -95,137 +95,136 @@ TEST_F(ClientServerInProcess, SendAliveMessage) scheduleClientMessages(); } -TEST_F(ClientServerInProcess, SendRegisterTranslationUnitForEditorMessage) +TEST_F(ClientServerInProcess, SendDocumentsOpenedMessage) { - ClangBackEnd::RegisterTranslationUnitForEditorMessage message({fileContainer}, - filePath, - {filePath}); + ClangBackEnd::DocumentsOpenedMessage message({fileContainer}, filePath, {filePath}); - EXPECT_CALL(mockClangCodeModelServer, registerTranslationUnitsForEditor(message)) + EXPECT_CALL(mockClangCodeModelServer, documentsOpened(message)) .Times(1); - serverProxy.registerTranslationUnitsForEditor(message); + serverProxy.documentsOpened(message); scheduleServerMessages(); } TEST_F(ClientServerInProcess, SendUpdateTranslationUnitsForEditorMessage) { - ClangBackEnd::UpdateTranslationUnitsForEditorMessage message({fileContainer}); + ClangBackEnd::DocumentsChangedMessage message({fileContainer}); - EXPECT_CALL(mockClangCodeModelServer, updateTranslationUnitsForEditor(message)) + EXPECT_CALL(mockClangCodeModelServer, documentsChanged(message)) .Times(1); - serverProxy.updateTranslationUnitsForEditor(message); + serverProxy.documentsChanged(message); scheduleServerMessages(); } -TEST_F(ClientServerInProcess, SendUnregisterTranslationUnitsForEditorMessage) +TEST_F(ClientServerInProcess, SendDocumentsClosedMessage) { - ClangBackEnd::UnregisterTranslationUnitsForEditorMessage message({fileContainer}); + ClangBackEnd::DocumentsClosedMessage message({fileContainer}); - EXPECT_CALL(mockClangCodeModelServer, unregisterTranslationUnitsForEditor(message)) + EXPECT_CALL(mockClangCodeModelServer, documentsClosed(message)) .Times(1); - serverProxy.unregisterTranslationUnitsForEditor(message); + serverProxy.documentsClosed(message); scheduleServerMessages(); } TEST_F(ClientServerInProcess, SendRegisterUnsavedFilesForEditorMessage) { - ClangBackEnd::RegisterUnsavedFilesForEditorMessage message({fileContainer}); + ClangBackEnd::UnsavedFilesUpdatedMessage message({fileContainer}); - EXPECT_CALL(mockClangCodeModelServer, registerUnsavedFilesForEditor(message)) + EXPECT_CALL(mockClangCodeModelServer, unsavedFilesUpdated(message)) .Times(1); - serverProxy.registerUnsavedFilesForEditor(message); + serverProxy.unsavedFilesUpdated(message); scheduleServerMessages(); } TEST_F(ClientServerInProcess, SendUnregisterUnsavedFilesForEditorMessage) { - ClangBackEnd::UnregisterUnsavedFilesForEditorMessage message({fileContainer}); + ClangBackEnd::UnsavedFilesRemovedMessage message({fileContainer}); - EXPECT_CALL(mockClangCodeModelServer, unregisterUnsavedFilesForEditor(message)) + EXPECT_CALL(mockClangCodeModelServer, unsavedFilesRemoved(message)) .Times(1); - serverProxy.unregisterUnsavedFilesForEditor(message); + serverProxy.unsavedFilesRemoved(message); scheduleServerMessages(); } TEST_F(ClientServerInProcess, SendCompleteCodeMessage) { - ClangBackEnd::CompleteCodeMessage message(Utf8StringLiteral("foo.cpp"), 24, 33, Utf8StringLiteral("do what I want")); + ClangBackEnd::RequestCompletionsMessage message(Utf8StringLiteral("foo.cpp"), 24, 33, Utf8StringLiteral("do what I want")); - EXPECT_CALL(mockClangCodeModelServer, completeCode(message)) + EXPECT_CALL(mockClangCodeModelServer, requestCompletions(message)) .Times(1); - serverProxy.completeCode(message); + serverProxy.requestCompletions(message); scheduleServerMessages(); } -TEST_F(ClientServerInProcess, SendRequestDocumentAnnotationsMessage) +TEST_F(ClientServerInProcess, SendRequestAnnotationsMessage) { - ClangBackEnd::RequestDocumentAnnotationsMessage message({Utf8StringLiteral("foo.cpp"), - Utf8StringLiteral("projectId")}); + ClangBackEnd::RequestAnnotationsMessage message( + {Utf8StringLiteral("foo.cpp"), Utf8StringLiteral("projectId")}); - EXPECT_CALL(mockClangCodeModelServer, requestDocumentAnnotations(message)) + EXPECT_CALL(mockClangCodeModelServer, requestAnnotations(message)) .Times(1); - serverProxy.requestDocumentAnnotations(message); + serverProxy.requestAnnotations(message); scheduleServerMessages(); } -TEST_F(ClientServerInProcess, SendCodeCompletedMessage) +TEST_F(ClientServerInProcess, SendCompletionsMessage) { ClangBackEnd::CodeCompletions codeCompletions({Utf8StringLiteral("newFunction()")}); - ClangBackEnd::CodeCompletedMessage message(codeCompletions, - ClangBackEnd::CompletionCorrection::NoCorrection, - 1); + ClangBackEnd::CompletionsMessage message(codeCompletions, + ClangBackEnd::CompletionCorrection::NoCorrection, + 1); - EXPECT_CALL(mockClangCodeModelClient, codeCompleted(message)) + EXPECT_CALL(mockClangCodeModelClient, completions(message)) .Times(1); - clientProxy.codeCompleted(message); + clientProxy.completions(message); scheduleClientMessages(); } -TEST_F(ClientServerInProcess, SendRegisterProjectPartsForEditorMessage) +TEST_F(ClientServerInProcess, SendProjectPartsUpdatedMessage) { ClangBackEnd::ProjectPartContainer projectContainer(Utf8StringLiteral(TESTDATA_DIR"/complete.pro")); - ClangBackEnd::RegisterProjectPartsForEditorMessage message({projectContainer}); + ClangBackEnd::ProjectPartsUpdatedMessage message({projectContainer}); - EXPECT_CALL(mockClangCodeModelServer, registerProjectPartsForEditor(message)) + EXPECT_CALL(mockClangCodeModelServer, projectPartsUpdated(message)) .Times(1); - serverProxy.registerProjectPartsForEditor(message); + serverProxy.projectPartsUpdated(message); scheduleServerMessages(); } -TEST_F(ClientServerInProcess, SendUnregisterProjectPartsForEditorMessage) +TEST_F(ClientServerInProcess, SendProjectPartsRemovedMessage) { - ClangBackEnd::UnregisterProjectPartsForEditorMessage message({Utf8StringLiteral(TESTDATA_DIR"/complete.pro")}); + ClangBackEnd::ProjectPartsRemovedMessage message({Utf8StringLiteral(TESTDATA_DIR"/complete.pro")}); - EXPECT_CALL(mockClangCodeModelServer, unregisterProjectPartsForEditor(message)) + EXPECT_CALL(mockClangCodeModelServer, projectPartsRemoved(message)) .Times(1); - serverProxy.unregisterProjectPartsForEditor(message); + serverProxy.projectPartsRemoved(message); scheduleServerMessages(); } -TEST_F(ClientServerInProcess, UpdateVisibleTranslationUnitsMessage) +TEST_F(ClientServerInProcess, DocumentVisibilityChangedMessage) { - ClangBackEnd::UpdateVisibleTranslationUnitsMessage message(Utf8StringLiteral(TESTDATA_DIR"/fileone.cpp"), - {Utf8StringLiteral(TESTDATA_DIR"/fileone.cpp"), - Utf8StringLiteral(TESTDATA_DIR"/filetwo.cpp")}); + ClangBackEnd::DocumentVisibilityChangedMessage + message(Utf8StringLiteral(TESTDATA_DIR "/fileone.cpp"), + {Utf8StringLiteral(TESTDATA_DIR "/fileone.cpp"), + Utf8StringLiteral(TESTDATA_DIR "/filetwo.cpp")}); - EXPECT_CALL(mockClangCodeModelServer, updateVisibleTranslationUnits(message)) + EXPECT_CALL(mockClangCodeModelServer, documentVisibilityChanged(message)) .Times(1); - serverProxy.updateVisibleTranslationUnits(message); + serverProxy.documentVisibilityChanged(message); scheduleServerMessages(); } -TEST_F(ClientServerInProcess, SendDocumentAnnotationsChangedMessage) +TEST_F(ClientServerInProcess, SendAnnotationsMessage) { ClangBackEnd::HighlightingTypes types; types.mainHighlightingType = ClangBackEnd::HighlightingType::Keyword; @@ -239,18 +238,16 @@ TEST_F(ClientServerInProcess, SendDocumentAnnotationsChangedMessage) {}, {}); - ClangBackEnd::DocumentAnnotationsChangedMessage message(fileContainer, - {diagnostic}, - {}, - {tokenInfo}, - QVector()); + ClangBackEnd::AnnotationsMessage message(fileContainer, + {diagnostic}, + {}, + {tokenInfo}, + QVector()); - - - EXPECT_CALL(mockClangCodeModelClient, documentAnnotationsChanged(message)) + EXPECT_CALL(mockClangCodeModelClient, annotations(message)) .Times(1); - clientProxy.documentAnnotationsChanged(message); + clientProxy.annotations(message); scheduleClientMessages(); } diff --git a/tests/unit/unittest/clientserveroutsideprocess-test.cpp b/tests/unit/unittest/clientserveroutsideprocess-test.cpp index 3f10186ae06..2dfe6a281bb 100644 --- a/tests/unit/unittest/clientserveroutsideprocess-test.cpp +++ b/tests/unit/unittest/clientserveroutsideprocess-test.cpp @@ -92,64 +92,64 @@ TEST_F(ClientServerOutsideProcessSlowTest, RestartProcessAfterTermination) ASSERT_THAT(clientSpy, SizeIs(1)); } -TEST_F(ClientServerOutsideProcess, SendRegisterTranslationUnitForEditorMessage) +TEST_F(ClientServerOutsideProcess, SendDocumentsOpenedMessage) { auto filePath = Utf8StringLiteral("foo.cpp"); ClangBackEnd::FileContainer fileContainer(filePath, Utf8StringLiteral("projectId")); - ClangBackEnd::RegisterTranslationUnitForEditorMessage registerTranslationUnitForEditorMessage({fileContainer}, - filePath, - {filePath}); - EchoMessage echoMessage(registerTranslationUnitForEditorMessage); + ClangBackEnd::DocumentsOpenedMessage documentsOpenedMessage({fileContainer}, + filePath, + {filePath}); + EchoMessage echoMessage(documentsOpenedMessage); EXPECT_CALL(mockClangCodeModelClient, echo(echoMessage)); - client.serverProxy().registerTranslationUnitsForEditor(registerTranslationUnitForEditorMessage); + client.serverProxy().documentsOpened(documentsOpenedMessage); ASSERT_TRUE(client.waitForEcho()); } -TEST_F(ClientServerOutsideProcess, SendUnregisterTranslationUnitsForEditorMessage) +TEST_F(ClientServerOutsideProcess, SendDocumentsClosedMessage) { FileContainer fileContainer(Utf8StringLiteral("foo.cpp"), Utf8StringLiteral("projectId")); - ClangBackEnd::UnregisterTranslationUnitsForEditorMessage unregisterTranslationUnitsForEditorMessage ({fileContainer}); - EchoMessage echoMessage(unregisterTranslationUnitsForEditorMessage); + ClangBackEnd::DocumentsClosedMessage documentsClosedMessage({fileContainer}); + EchoMessage echoMessage(documentsClosedMessage); EXPECT_CALL(mockClangCodeModelClient, echo(echoMessage)); - client.serverProxy().unregisterTranslationUnitsForEditor(unregisterTranslationUnitsForEditorMessage); + client.serverProxy().documentsClosed(documentsClosedMessage); ASSERT_TRUE(client.waitForEcho()); } TEST_F(ClientServerOutsideProcess, SendCompleteCodeMessage) { - CompleteCodeMessage codeCompleteMessage(Utf8StringLiteral("foo.cpp"), 24, 33, Utf8StringLiteral("do what I want")); + RequestCompletionsMessage codeCompleteMessage(Utf8StringLiteral("foo.cpp"), 24, 33, Utf8StringLiteral("do what I want")); EchoMessage echoMessage(codeCompleteMessage); EXPECT_CALL(mockClangCodeModelClient, echo(echoMessage)); - client.serverProxy().completeCode(codeCompleteMessage); + client.serverProxy().requestCompletions(codeCompleteMessage); ASSERT_TRUE(client.waitForEcho()); } -TEST_F(ClientServerOutsideProcess, SendRegisterProjectPartsForEditorMessage) +TEST_F(ClientServerOutsideProcess, SendProjectPartsUpdatedMessage) { ClangBackEnd::ProjectPartContainer projectContainer(Utf8StringLiteral(TESTDATA_DIR"/complete.pro")); - ClangBackEnd::RegisterProjectPartsForEditorMessage registerProjectPartsForEditorMessage({projectContainer}); - EchoMessage echoMessage(registerProjectPartsForEditorMessage); + ClangBackEnd::ProjectPartsUpdatedMessage projectPartsUpdatedMessage({projectContainer}); + EchoMessage echoMessage(projectPartsUpdatedMessage); EXPECT_CALL(mockClangCodeModelClient, echo(echoMessage)); - client.serverProxy().registerProjectPartsForEditor(registerProjectPartsForEditorMessage); + client.serverProxy().projectPartsUpdated(projectPartsUpdatedMessage); ASSERT_TRUE(client.waitForEcho()); } -TEST_F(ClientServerOutsideProcess, SendUnregisterProjectPartsForEditorMessage) +TEST_F(ClientServerOutsideProcess, SendProjectPartsRemovedMessage) { - ClangBackEnd::UnregisterProjectPartsForEditorMessage unregisterProjectPartsForEditorMessage({Utf8StringLiteral(TESTDATA_DIR"/complete.pro")}); - EchoMessage echoMessage(unregisterProjectPartsForEditorMessage); + ClangBackEnd::ProjectPartsRemovedMessage projectPartsRemovedMessage({Utf8StringLiteral(TESTDATA_DIR"/complete.pro")}); + EchoMessage echoMessage(projectPartsRemovedMessage); EXPECT_CALL(mockClangCodeModelClient, echo(echoMessage)); - client.serverProxy().unregisterProjectPartsForEditor(unregisterProjectPartsForEditorMessage); + client.serverProxy().projectPartsRemoved(projectPartsRemovedMessage); ASSERT_TRUE(client.waitForEcho()); } diff --git a/tests/unit/unittest/dummyclangipcclient.h b/tests/unit/unittest/dummyclangipcclient.h index e840b0a6c7a..b58fd912842 100644 --- a/tests/unit/unittest/dummyclangipcclient.h +++ b/tests/unit/unittest/dummyclangipcclient.h @@ -34,8 +34,8 @@ public: void alive() override {} void echo(const ClangBackEnd::EchoMessage &) override {} - void codeCompleted(const ClangBackEnd::CodeCompletedMessage &) override {} - void documentAnnotationsChanged(const ClangBackEnd::DocumentAnnotationsChangedMessage &) override {} + void completions(const ClangBackEnd::CompletionsMessage &) override {} + void annotations(const ClangBackEnd::AnnotationsMessage &) override {} void references(const ClangBackEnd::ReferencesMessage &) override {} void followSymbol(const ClangBackEnd::FollowSymbolMessage &) override {} void tooltip(const ClangBackEnd::ToolTipMessage &) override {} diff --git a/tests/unit/unittest/gtest-creator-printing.cpp b/tests/unit/unittest/gtest-creator-printing.cpp index c3e02240fe4..a6d6118bccc 100644 --- a/tests/unit/unittest/gtest-creator-printing.cpp +++ b/tests/unit/unittest/gtest-creator-printing.cpp @@ -228,7 +228,7 @@ std::ostream &operator<<(std::ostream &os, const SourceLocationsContainer &conta return os; } -std::ostream &operator<<(std::ostream &os, const RegisterProjectPartsForEditorMessage &message) +std::ostream &operator<<(std::ostream &os, const ProjectPartsUpdatedMessage &message) { os << "(" << message.projectContainers @@ -237,18 +237,28 @@ std::ostream &operator<<(std::ostream &os, const RegisterProjectPartsForEditorMe return os; } +std::ostream &operator<<(std::ostream &os, const FollowSymbolResult &result) +{ + os << "(" + << result.range + << ", " << result.isPureDeclarationForUsage + << ")"; + + return os; +} + std::ostream &operator<<(std::ostream &os, const FollowSymbolMessage &message) { os << "(" << message.fileContainer << ", " << message.ticketNumber << ", " - << message.sourceRange << ", " + << message.result << ", " << ")"; return os; } -std::ostream &operator<<(std::ostream &os, const CompleteCodeMessage &message) +std::ostream &operator<<(std::ostream &os, const RequestCompletionsMessage &message) { os << "(" << message.filePath << ", " @@ -264,9 +274,9 @@ std::ostream &operator<<(std::ostream &os, const CompleteCodeMessage &message) return os; } -std::ostream &operator<<(std::ostream &os, const RegisterTranslationUnitForEditorMessage &message) +std::ostream &operator<<(std::ostream &os, const DocumentsOpenedMessage &message) { - os << "RegisterTranslationUnitForEditorMessage(" + os << "DocumentsOpenedMessage(" << message.fileContainers << ", " << message.currentEditorFilePath << ", " << message.visibleEditorFilePaths << ")"; @@ -301,7 +311,7 @@ static const char *completionCorrectionToText(CompletionCorrection correction) } #undef RETURN_TEXT_FOR_CASE -std::ostream &operator<<(std::ostream &os, const CodeCompletedMessage &message) +std::ostream &operator<<(std::ostream &os, const CompletionsMessage &message) { os << "(" << message.codeCompletions << ", " @@ -313,9 +323,9 @@ std::ostream &operator<<(std::ostream &os, const CodeCompletedMessage &message) return os; } -std::ostream &operator<<(std::ostream &os, const DocumentAnnotationsChangedMessage &message) +std::ostream &operator<<(std::ostream &os, const AnnotationsMessage &message) { - os << "DocumentAnnotationsChangedMessage(" + os << "AnnotationsMessage(" << message.fileContainer << "," << message.diagnostics.size() << "," << !message.firstHeaderErrorDiagnostic.text.isEmpty() @@ -354,7 +364,7 @@ std::ostream &operator<<(std::ostream &os, const EchoMessage &/*message*/) return os << "()"; } -std::ostream &operator<<(std::ostream &os, const UnregisterProjectPartsForEditorMessage &message) +std::ostream &operator<<(std::ostream &os, const ProjectPartsRemovedMessage &message) { os << "(" << message.projectPartIds @@ -363,7 +373,7 @@ std::ostream &operator<<(std::ostream &os, const UnregisterProjectPartsForEditor return os; } -std::ostream &operator<<(std::ostream &os, const UnregisterTranslationUnitsForEditorMessage &message) +std::ostream &operator<<(std::ostream &os, const DocumentsClosedMessage &message) { os << "(" << message.fileContainers @@ -617,7 +627,7 @@ std::ostream &operator<<(std::ostream &out, const ProjectPartPch &projectPartPch return out; } -std::ostream &operator<<(std::ostream &os, const RegisterUnsavedFilesForEditorMessage &message) +std::ostream &operator<<(std::ostream &os, const UnsavedFilesUpdatedMessage &message) { os << "(" << message.fileContainers @@ -626,7 +636,7 @@ std::ostream &operator<<(std::ostream &os, const RegisterUnsavedFilesForEditorMe return os; } -std::ostream &operator<<(std::ostream &os, const RequestDocumentAnnotationsMessage &message) +std::ostream &operator<<(std::ostream &os, const RequestAnnotationsMessage &message) { os << "(" << message.fileContainer.filePath << "," @@ -801,7 +811,7 @@ std::ostream &operator<<(std::ostream &os, const SourceRangeWithTextContainer &c return os; } -std::ostream &operator<<(std::ostream &os, const UnregisterUnsavedFilesForEditorMessage &message) +std::ostream &operator<<(std::ostream &os, const UnsavedFilesRemovedMessage &message) { os << "(" << message.fileContainers @@ -817,16 +827,16 @@ std::ostream &operator<<(std::ostream &out, const UpdateProjectPartsMessage &mes << ")"; } -std::ostream &operator<<(std::ostream &os, const UpdateTranslationUnitsForEditorMessage &message) +std::ostream &operator<<(std::ostream &os, const DocumentsChangedMessage &message) { - os << "UpdateTranslationUnitsForEditorMessage(" + os << "DocumentsChangedMessage(" << message.fileContainers << ")"; return os; } -std::ostream &operator<<(std::ostream &os, const UpdateVisibleTranslationUnitsMessage &message) +std::ostream &operator<<(std::ostream &os, const DocumentVisibilityChangedMessage &message) { os << "(" << message.currentEditorFilePath << ", " diff --git a/tests/unit/unittest/gtest-creator-printing.h b/tests/unit/unittest/gtest-creator-printing.h index 6404764544b..a7c200daad5 100644 --- a/tests/unit/unittest/gtest-creator-printing.h +++ b/tests/unit/unittest/gtest-creator-printing.h @@ -97,20 +97,21 @@ class FilePathId; class FilePath; class WatcherEntry; class SourceLocationsContainer; -class RegisterProjectPartsForEditorMessage; +class ProjectPartsUpdatedMessage; class CancelMessage; class AliveMessage; -class CodeCompletedMessage; +class CompletionsMessage; class EchoMessage; -class DocumentAnnotationsChangedMessage; +class AnnotationsMessage; class ReferencesMessage; class ToolTipMessage; +class FollowSymbolResult; class FollowSymbolMessage; -class CompleteCodeMessage; +class RequestCompletionsMessage; class EndMessage; -class RegisterTranslationUnitForEditorMessage; -class UnregisterProjectPartsForEditorMessage; -class UnregisterTranslationUnitsForEditorMessage; +class DocumentsOpenedMessage; +class ProjectPartsRemovedMessage; +class DocumentsClosedMessage; class CodeCompletion; class CodeCompletionChunk; class DiagnosticContainer; @@ -125,9 +126,9 @@ class NativeFilePath; class PrecompiledHeadersUpdatedMessage; class ProjectPartContainer; class ProjectPartPch; -class RegisterUnsavedFilesForEditorMessage; +class UnsavedFilesUpdatedMessage; class RemoveProjectPartsMessage; -class RequestDocumentAnnotationsMessage; +class RequestAnnotationsMessage; class RequestFollowSymbolMessage; class RequestReferencesMessage; class RequestToolTipMessage; @@ -144,10 +145,10 @@ class SourceRangeWithTextContainer; class TokenInfo; template class TokenProcessor; -class UnregisterUnsavedFilesForEditorMessage; +class UnsavedFilesRemovedMessage; class UpdateProjectPartsMessage; -class UpdateTranslationUnitsForEditorMessage; -class UpdateVisibleTranslationUnitsMessage; +class DocumentsChangedMessage; +class DocumentVisibilityChangedMessage; class FilePath; template class AbstractFilePathView; @@ -169,20 +170,21 @@ std::ostream &operator<<(std::ostream &out, const SourceLocationEntry &entry); std::ostream &operator<<(std::ostream &out, const IdPaths &idPaths); std::ostream &operator<<(std::ostream &out, const WatcherEntry &entry); std::ostream &operator<<(std::ostream &out, const SourceLocationsContainer &container); -std::ostream &operator<<(std::ostream &out, const RegisterProjectPartsForEditorMessage &message); +std::ostream &operator<<(std::ostream &out, const ProjectPartsUpdatedMessage &message); std::ostream &operator<<(std::ostream &out, const CancelMessage &message); std::ostream &operator<<(std::ostream &out, const AliveMessage &message); -std::ostream &operator<<(std::ostream &out, const CodeCompletedMessage &message); +std::ostream &operator<<(std::ostream &out, const CompletionsMessage &message); std::ostream &operator<<(std::ostream &out, const EchoMessage &message); -std::ostream &operator<<(std::ostream &out, const DocumentAnnotationsChangedMessage &message); +std::ostream &operator<<(std::ostream &out, const AnnotationsMessage &message); std::ostream &operator<<(std::ostream &out, const ReferencesMessage &message); std::ostream &operator<<(std::ostream &out, const ToolTipMessage &message); +std::ostream &operator<<(std::ostream &out, const FollowSymbolResult &result); std::ostream &operator<<(std::ostream &out, const FollowSymbolMessage &message); -std::ostream &operator<<(std::ostream &out, const CompleteCodeMessage &message); +std::ostream &operator<<(std::ostream &out, const RequestCompletionsMessage &message); std::ostream &operator<<(std::ostream &out, const EndMessage &message); -std::ostream &operator<<(std::ostream &out, const RegisterTranslationUnitForEditorMessage &message); -std::ostream &operator<<(std::ostream &out, const UnregisterProjectPartsForEditorMessage &message); -std::ostream &operator<<(std::ostream &out, const UnregisterTranslationUnitsForEditorMessage &message); +std::ostream &operator<<(std::ostream &out, const DocumentsOpenedMessage &message); +std::ostream &operator<<(std::ostream &out, const ProjectPartsRemovedMessage &message); +std::ostream &operator<<(std::ostream &out, const DocumentsClosedMessage &message); std::ostream &operator<<(std::ostream &out, const CodeCompletion &message); std::ostream &operator<<(std::ostream &out, const CodeCompletionChunk &chunk); std::ostream &operator<<(std::ostream &out, const DiagnosticContainer &container); @@ -198,9 +200,9 @@ std::ostream &operator<<(std::ostream &out, const NativeFilePath &filePath); std::ostream &operator<<(std::ostream &out, const PrecompiledHeadersUpdatedMessage &message); std::ostream &operator<<(std::ostream &out, const ProjectPartContainer &container); std::ostream &operator<<(std::ostream &out, const ProjectPartPch &projectPartPch); -std::ostream &operator<<(std::ostream &out, const RegisterUnsavedFilesForEditorMessage &message); +std::ostream &operator<<(std::ostream &out, const UnsavedFilesUpdatedMessage &message); std::ostream &operator<<(std::ostream &out, const RemoveProjectPartsMessage &message); -std::ostream &operator<<(std::ostream &out, const RequestDocumentAnnotationsMessage &message); +std::ostream &operator<<(std::ostream &out, const RequestAnnotationsMessage &message); std::ostream &operator<<(std::ostream &out, const RequestFollowSymbolMessage &message); std::ostream &operator<<(std::ostream &out, const RequestReferencesMessage &message); std::ostream &operator<<(std::ostream &out, const RequestToolTipMessage &message); @@ -215,10 +217,10 @@ std::ostream &operator<<(std::ostream &out, const SourceRangesAndDiagnosticsForQ std::ostream &operator<<(std::ostream &out, const SourceRangesContainer &container); std::ostream &operator<<(std::ostream &out, const SourceRangesForQueryMessage &message); std::ostream &operator<<(std::ostream &out, const SourceRangeWithTextContainer &container); -std::ostream &operator<<(std::ostream &out, const UnregisterUnsavedFilesForEditorMessage &message); +std::ostream &operator<<(std::ostream &out, const UnsavedFilesRemovedMessage &message); std::ostream &operator<<(std::ostream &out, const UpdateProjectPartsMessage &message); -std::ostream &operator<<(std::ostream &out, const UpdateTranslationUnitsForEditorMessage &message); -std::ostream &operator<<(std::ostream &out, const UpdateVisibleTranslationUnitsMessage &message); +std::ostream &operator<<(std::ostream &out, const DocumentsChangedMessage &message); +std::ostream &operator<<(std::ostream &out, const DocumentVisibilityChangedMessage &message); std::ostream &operator<<(std::ostream &out, const FilePath &filePath); std::ostream &operator<<(std::ostream &out, const FilePathId &filePathId); std::ostream &operator<<(std::ostream &out, const TokenInfo& tokenInfo); diff --git a/tests/unit/unittest/mockclangcodemodelclient.h b/tests/unit/unittest/mockclangcodemodelclient.h index 3b5a3cfbf5a..9244e05eb8b 100644 --- a/tests/unit/unittest/mockclangcodemodelclient.h +++ b/tests/unit/unittest/mockclangcodemodelclient.h @@ -37,10 +37,10 @@ public: void()); MOCK_METHOD1(echo, void(const ClangBackEnd::EchoMessage &message)); - MOCK_METHOD1(codeCompleted, - void(const ClangBackEnd::CodeCompletedMessage &message)); - MOCK_METHOD1(documentAnnotationsChanged, - void(const ClangBackEnd::DocumentAnnotationsChangedMessage &message)); + MOCK_METHOD1(completions, + void(const ClangBackEnd::CompletionsMessage &message)); + MOCK_METHOD1(annotations, + void(const ClangBackEnd::AnnotationsMessage &message)); MOCK_METHOD1(references, void(const ClangBackEnd::ReferencesMessage &message)); MOCK_METHOD1(followSymbol, diff --git a/tests/unit/unittest/mockclangcodemodelserver.h b/tests/unit/unittest/mockclangcodemodelserver.h index 468f683bf53..56d48fac580 100644 --- a/tests/unit/unittest/mockclangcodemodelserver.h +++ b/tests/unit/unittest/mockclangcodemodelserver.h @@ -33,30 +33,35 @@ class MockClangCodeModelServer : public ClangBackEnd::ClangCodeModelServerInterf public: MOCK_METHOD0(end, void()); - MOCK_METHOD1(registerTranslationUnitsForEditor, - void(const ClangBackEnd::RegisterTranslationUnitForEditorMessage &message)); - MOCK_METHOD1(updateTranslationUnitsForEditor, - void(const ClangBackEnd::UpdateTranslationUnitsForEditorMessage &message)); - MOCK_METHOD1(unregisterTranslationUnitsForEditor, - void(const ClangBackEnd::UnregisterTranslationUnitsForEditorMessage &message)); - MOCK_METHOD1(registerProjectPartsForEditor, - void(const ClangBackEnd::RegisterProjectPartsForEditorMessage &message)); - MOCK_METHOD1(unregisterProjectPartsForEditor, - void(const ClangBackEnd::UnregisterProjectPartsForEditorMessage &message)); - MOCK_METHOD1(registerUnsavedFilesForEditor, - void(const ClangBackEnd::RegisterUnsavedFilesForEditorMessage &message)); - MOCK_METHOD1(unregisterUnsavedFilesForEditor, - void(const ClangBackEnd::UnregisterUnsavedFilesForEditorMessage &message)); - MOCK_METHOD1(completeCode, - void(const ClangBackEnd::CompleteCodeMessage &message)); - MOCK_METHOD1(requestDocumentAnnotations, - void(const ClangBackEnd::RequestDocumentAnnotationsMessage &message)); + + MOCK_METHOD1(documentsOpened, + void(const ClangBackEnd::DocumentsOpenedMessage &message)); + MOCK_METHOD1(documentsChanged, + void(const ClangBackEnd::DocumentsChangedMessage &message)); + MOCK_METHOD1(documentsClosed, + void(const ClangBackEnd::DocumentsClosedMessage &message)); + MOCK_METHOD1(documentVisibilityChanged, + void(const ClangBackEnd::DocumentVisibilityChangedMessage &message)); + + MOCK_METHOD1(projectPartsUpdated, + void(const ClangBackEnd::ProjectPartsUpdatedMessage &message)); + MOCK_METHOD1(projectPartsRemoved, + void(const ClangBackEnd::ProjectPartsRemovedMessage &message)); + + MOCK_METHOD1(unsavedFilesUpdated, + void(const ClangBackEnd::UnsavedFilesUpdatedMessage &message)); + MOCK_METHOD1(unsavedFilesRemoved, + void(const ClangBackEnd::UnsavedFilesRemovedMessage &message)); + + MOCK_METHOD1(requestCompletions, + void(const ClangBackEnd::RequestCompletionsMessage &message)); + MOCK_METHOD1(requestAnnotations, + void(const ClangBackEnd::RequestAnnotationsMessage &message)); MOCK_METHOD1(requestReferences, void(const ClangBackEnd::RequestReferencesMessage &message)); MOCK_METHOD1(requestFollowSymbol, void(const ClangBackEnd::RequestFollowSymbolMessage &message)); MOCK_METHOD1(requestToolTip, void(const ClangBackEnd::RequestToolTipMessage &message)); - MOCK_METHOD1(updateVisibleTranslationUnits, - void(const ClangBackEnd::UpdateVisibleTranslationUnitsMessage &message)); + }; diff --git a/tests/unit/unittest/readandwritemessageblock-test.cpp b/tests/unit/unittest/readandwritemessageblock-test.cpp index 9a1bebb0788..bceeab7038e 100644 --- a/tests/unit/unittest/readandwritemessageblock-test.cpp +++ b/tests/unit/unittest/readandwritemessageblock-test.cpp @@ -54,7 +54,7 @@ protected: template void CompareMessage(const Type &message); - ClangBackEnd::MessageEnvelop writeCodeCompletedMessage(); + ClangBackEnd::MessageEnvelop writeCompletionsMessage(); void popLastCharacterFromBuffer(); void pushLastCharacterToBuffer(); void readPartialMessage(); @@ -190,38 +190,36 @@ TEST_F(ReadAndWriteMessageBlock, CompareAliveMessage) CompareMessage(ClangBackEnd::AliveMessage()); } -TEST_F(ReadAndWriteMessageBlock, CompareRegisterTranslationUnitForEditorMessage) +TEST_F(ReadAndWriteMessageBlock, CompareDocumentsOpenedMessage) { - CompareMessage(ClangBackEnd::RegisterTranslationUnitForEditorMessage({fileContainer}, filePath, {filePath})); + CompareMessage(ClangBackEnd::DocumentsOpenedMessage({fileContainer}, filePath, {filePath})); } -TEST_F(ReadAndWriteMessageBlock, CompareUpdateTranslationUnitForEditorMessage) +TEST_F(ReadAndWriteMessageBlock, CompareDocumentsChangedMessage) { - CompareMessage(ClangBackEnd::UpdateTranslationUnitsForEditorMessage({fileContainer})); + CompareMessage(ClangBackEnd::DocumentsChangedMessage({fileContainer})); } -TEST_F(ReadAndWriteMessageBlock, CompareUnregisterFileForEditorMessage) +TEST_F(ReadAndWriteMessageBlock, CompareDocumentsClosedMessage) { - CompareMessage(ClangBackEnd::UnregisterTranslationUnitsForEditorMessage({fileContainer})); + CompareMessage(ClangBackEnd::DocumentsClosedMessage({fileContainer})); } -TEST_F(ReadAndWriteMessageBlock, CompareCompleteCodeMessage) +TEST_F(ReadAndWriteMessageBlock, CompareRequestCompletionsMessage) { - CompareMessage(ClangBackEnd::CompleteCodeMessage(Utf8StringLiteral("foo.cpp"), 24, 33, Utf8StringLiteral("do what I want"))); + CompareMessage(ClangBackEnd::RequestCompletionsMessage(Utf8StringLiteral("foo.cpp"), 24, 33, Utf8StringLiteral("do what I want"))); } -TEST_F(ReadAndWriteMessageBlock, CompareCodeCompletedMessage) +TEST_F(ReadAndWriteMessageBlock, CompareCompletionsMessage) { ClangBackEnd::CodeCompletions codeCompletions({Utf8StringLiteral("newFunction()")}); - CompareMessage( - ClangBackEnd::CodeCompletedMessage(codeCompletions, - ClangBackEnd::CompletionCorrection::NoCorrection, - 1) - ); + CompareMessage(ClangBackEnd::CompletionsMessage(codeCompletions, + ClangBackEnd::CompletionCorrection::NoCorrection, + 1)); } -TEST_F(ReadAndWriteMessageBlock, CompareDocumentAnnotationsChangedMessage) +TEST_F(ReadAndWriteMessageBlock, CompareAnnotationsMessage) { ClangBackEnd::DiagnosticContainer diagnostic(Utf8StringLiteral("don't do that"), Utf8StringLiteral("warning"), @@ -236,39 +234,39 @@ TEST_F(ReadAndWriteMessageBlock, CompareDocumentAnnotationsChangedMessage) types.mainHighlightingType = ClangBackEnd::HighlightingType::Keyword; ClangBackEnd::TokenInfoContainer tokenInfo(1, 1, 1, types); - CompareMessage(ClangBackEnd::DocumentAnnotationsChangedMessage(fileContainer, - {diagnostic}, - {}, - {tokenInfo}, - QVector())); + CompareMessage(ClangBackEnd::AnnotationsMessage(fileContainer, + {diagnostic}, + {}, + {tokenInfo}, + QVector())); } -TEST_F(ReadAndWriteMessageBlock, CompareRegisterUnsavedFilesForEditorMessage) +TEST_F(ReadAndWriteMessageBlock, CompareUnsavedFilesUpdatedMessage) { - CompareMessage(ClangBackEnd::RegisterUnsavedFilesForEditorMessage({fileContainer})); + CompareMessage(ClangBackEnd::UnsavedFilesUpdatedMessage({fileContainer})); } -TEST_F(ReadAndWriteMessageBlock, CompareUnregisterUnsavedFilesForEditorMessage) +TEST_F(ReadAndWriteMessageBlock, CompareUnsavedFilesRemovedMessage) { - CompareMessage(ClangBackEnd::UnregisterUnsavedFilesForEditorMessage({fileContainer})); + CompareMessage(ClangBackEnd::UnsavedFilesRemovedMessage({fileContainer})); } -TEST_F(ReadAndWriteMessageBlock, CompareRequestDocumentAnnotations) +TEST_F(ReadAndWriteMessageBlock, CompareRequestAnnotationsMessage) { - CompareMessage(ClangBackEnd::RequestDocumentAnnotationsMessage(fileContainer)); + CompareMessage(ClangBackEnd::RequestAnnotationsMessage(fileContainer)); } -TEST_F(ReadAndWriteMessageBlock, CompareRequestReferences) +TEST_F(ReadAndWriteMessageBlock, CompareRequestReferencesMessage) { CompareMessage(ClangBackEnd::RequestReferencesMessage{fileContainer, 13, 37}); } -TEST_F(ReadAndWriteMessageBlock, CompareRequestFollowSymbol) +TEST_F(ReadAndWriteMessageBlock, CompareRequestFollowSymbolMessage) { CompareMessage(ClangBackEnd::RequestFollowSymbolMessage{fileContainer, 13, 37}); } -TEST_F(ReadAndWriteMessageBlock, CompareReferences) +TEST_F(ReadAndWriteMessageBlock, CompareReferencesMessage) { const QVector references{ true, @@ -280,7 +278,7 @@ TEST_F(ReadAndWriteMessageBlock, CompareReferences) TEST_F(ReadAndWriteMessageBlock, GetInvalidMessageForAPartialBuffer) { - writeCodeCompletedMessage(); + writeCompletionsMessage(); popLastCharacterFromBuffer(); buffer.seek(0); @@ -289,7 +287,7 @@ TEST_F(ReadAndWriteMessageBlock, GetInvalidMessageForAPartialBuffer) TEST_F(ReadAndWriteMessageBlock, ReadMessageAfterInterruption) { - const auto writeMessage = writeCodeCompletedMessage(); + const auto writeMessage = writeCompletionsMessage(); popLastCharacterFromBuffer(); buffer.seek(0); readPartialMessage(); @@ -298,9 +296,9 @@ TEST_F(ReadAndWriteMessageBlock, ReadMessageAfterInterruption) ASSERT_EQ(readMessageBlock.read(), writeMessage); } -ClangBackEnd::MessageEnvelop ReadAndWriteMessageBlock::writeCodeCompletedMessage() +ClangBackEnd::MessageEnvelop ReadAndWriteMessageBlock::writeCompletionsMessage() { - ClangBackEnd::CodeCompletedMessage message( + ClangBackEnd::CompletionsMessage message( ClangBackEnd::CodeCompletions({Utf8StringLiteral("newFunction()")}), ClangBackEnd::CompletionCorrection::NoCorrection, 1); diff --git a/tests/unit/unittest/unittest.pro b/tests/unit/unittest/unittest.pro index 622b9e00cde..88d56062506 100644 --- a/tests/unit/unittest/unittest.pro +++ b/tests/unit/unittest/unittest.pro @@ -117,7 +117,7 @@ SOURCES += \ clangjobs-test.cpp \ clangparsesupportivetranslationunitjob-test.cpp \ clangreferencescollector-test.cpp \ - clangrequestdocumentannotationsjob-test.cpp \ + clangrequestannotationsjob-test.cpp \ clangrequestreferencesjob-test.cpp \ clangresumedocumentjob-test.cpp \ clangstring-test.cpp \ @@ -126,7 +126,7 @@ SOURCES += \ clangtooltipinfo-test.cpp \ clangtranslationunits-test.cpp \ clangtranslationunit-test.cpp \ - clangupdatedocumentannotationsjob-test.cpp \ + clangupdateannotationsjob-test.cpp \ codecompleter-test.cpp \ codecompletionsextractor-test.cpp \ completionchunkstotextconverter-test.cpp \