From d9108d1ae2223a3640ad1098ef6f7aec6421cd5c Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 15 Jan 2024 12:01:25 +0100 Subject: [PATCH] LanguageClient: Hide plugin class definition in cpp As part of that, move test object creation closer to tested code. Change-Id: I60f1e431fbdd4ebc2a01ab6ed0c779c288c81b06 Reviewed-by: David Schulz --- src/plugins/languageclient/CMakeLists.txt | 2 +- src/plugins/languageclient/languageclient.qbs | 1 - .../languageclient/languageclientplugin.cpp | 38 +++++++++++++------ .../languageclient/languageclientplugin.h | 36 ------------------ src/plugins/languageclient/snippet.cpp | 28 ++++++++++++-- src/plugins/languageclient/snippet.h | 4 ++ 6 files changed, 55 insertions(+), 54 deletions(-) delete mode 100644 src/plugins/languageclient/languageclientplugin.h diff --git a/src/plugins/languageclient/CMakeLists.txt b/src/plugins/languageclient/CMakeLists.txt index 3bde89f27e3..a74bc330267 100644 --- a/src/plugins/languageclient/CMakeLists.txt +++ b/src/plugins/languageclient/CMakeLists.txt @@ -23,7 +23,7 @@ add_qtc_plugin(LanguageClient languageclientinterface.cpp languageclientinterface.h languageclientmanager.cpp languageclientmanager.h languageclientoutline.cpp languageclientoutline.h - languageclientplugin.cpp languageclientplugin.h + languageclientplugin.cpp languageclientquickfix.cpp languageclientquickfix.h languageclientsettings.cpp languageclientsettings.h languageclientsymbolsupport.cpp languageclientsymbolsupport.h diff --git a/src/plugins/languageclient/languageclient.qbs b/src/plugins/languageclient/languageclient.qbs index 5bb5e1ac11e..96a88629f0d 100644 --- a/src/plugins/languageclient/languageclient.qbs +++ b/src/plugins/languageclient/languageclient.qbs @@ -46,7 +46,6 @@ QtcPlugin { "languageclientoutline.cpp", "languageclientoutline.h", "languageclientplugin.cpp", - "languageclientplugin.h", "languageclientquickfix.cpp", "languageclientquickfix.h", "languageclientsettings.cpp", diff --git a/src/plugins/languageclient/languageclientplugin.cpp b/src/plugins/languageclient/languageclientplugin.cpp index 3574921d2eb..90cc408fe05 100644 --- a/src/plugins/languageclient/languageclientplugin.cpp +++ b/src/plugins/languageclient/languageclientplugin.cpp @@ -1,33 +1,41 @@ // Copyright (C) 2018 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 -#include "languageclientplugin.h" - #include "callhierarchy.h" #include "languageclientmanager.h" +#include "languageclientoutline.h" #include "languageclientsettings.h" #include "languageclienttr.h" +#include "snippet.h" #include #include +#include + #include #include namespace LanguageClient { -static LanguageClientPlugin *m_instance = nullptr; - -LanguageClientPlugin::LanguageClientPlugin() +class LanguageClientPlugin final : public ExtensionSystem::IPlugin { - m_instance = this; - qRegisterMetaType(); -} + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "LanguageClient.json") -LanguageClientPlugin::~LanguageClientPlugin() -{ - m_instance = nullptr; -} +public: + LanguageClientPlugin() + { + qRegisterMetaType(); + } + +private: + void initialize() final; + void extensionsInitialized() final; + ShutdownFlag aboutToShutdown() final; + + LanguageClientOutlineWidgetFactory m_outlineFactory; +}; void LanguageClientPlugin::initialize() { @@ -37,6 +45,10 @@ void LanguageClientPlugin::initialize() setupLanguageClientProjectPanel(); setupLanguageClientManager(this); +#ifdef WITH_TESTS + addTestCreator(&createSnippetParsingTest); +#endif + LanguageClientSettings::registerClientType({Constants::LANGUAGECLIENT_STDIO_SETTINGS_ID, Tr::tr("Generic StdIO Language Server"), []() { return new StdIOSettings; }}); @@ -65,3 +77,5 @@ ExtensionSystem::IPlugin::ShutdownFlag LanguageClientPlugin::aboutToShutdown() } } // namespace LanguageClient + +#include "languageclientplugin.moc" diff --git a/src/plugins/languageclient/languageclientplugin.h b/src/plugins/languageclient/languageclientplugin.h deleted file mode 100644 index d5c21c4b0ed..00000000000 --- a/src/plugins/languageclient/languageclientplugin.h +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (C) 2018 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#pragma once - -#include "languageclientoutline.h" - -#include - -namespace LanguageClient { - -class LanguageClientPlugin : public ExtensionSystem::IPlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "LanguageClient.json") -public: - LanguageClientPlugin(); - ~LanguageClientPlugin() override; - - // IPlugin interface -private: - void initialize() override; - void extensionsInitialized() override; - ShutdownFlag aboutToShutdown() override; - -private: - LanguageClientOutlineWidgetFactory m_outlineFactory; - -#ifdef WITH_TESTS -private slots: - void testSnippetParsing_data(); - void testSnippetParsing(); -#endif -}; - -} // namespace LanguageClient diff --git a/src/plugins/languageclient/snippet.cpp b/src/plugins/languageclient/snippet.cpp index 0f7674f651b..7a0fd211316 100644 --- a/src/plugins/languageclient/snippet.cpp +++ b/src/plugins/languageclient/snippet.cpp @@ -3,8 +3,6 @@ #include "snippet.h" -#include "languageclientplugin.h" - #ifdef WITH_TESTS #include #endif @@ -201,8 +199,20 @@ struct SnippetPart }; Q_DECLARE_METATYPE(SnippetPart); +namespace LanguageClient { + using Parts = QList; -void LanguageClient::LanguageClientPlugin::testSnippetParsing_data() + +class SnippetParsingTest final : public QObject +{ + Q_OBJECT + +private slots: + void testSnippetParsing_data(); + void testSnippetParsing(); +}; + +void SnippetParsingTest::testSnippetParsing_data() { QTest::addColumn("input"); QTest::addColumn("success"); @@ -234,7 +244,7 @@ void LanguageClient::LanguageClientPlugin::testSnippetParsing_data() << Parts{SnippetPart("foo", 1), SnippetPart("bar", 1)}; } -void LanguageClient::LanguageClientPlugin::testSnippetParsing() +void SnippetParsingTest::testSnippetParsing() { QFETCH(QString, input); QFETCH(bool, success); @@ -259,4 +269,14 @@ void LanguageClient::LanguageClientPlugin::testSnippetParsing() for (int i = 0; i < parts.count(); ++i) rangesCompare(snippet.parts.at(i), parts.at(i)); } + +QObject *createSnippetParsingTest() +{ + return new SnippetParsingTest; +} + +} // namespace LanguageClient + +#include "snippet.moc" + #endif diff --git a/src/plugins/languageclient/snippet.h b/src/plugins/languageclient/snippet.h index d3bb792ab54..6abba9fd5c3 100644 --- a/src/plugins/languageclient/snippet.h +++ b/src/plugins/languageclient/snippet.h @@ -11,4 +11,8 @@ namespace LanguageClient { LANGUAGECLIENT_EXPORT TextEditor::SnippetParseResult parseSnippet(const QString &snippet); +#ifdef WITH_TESTS +QObject *createSnippetParsingTest(); +#endif + } // namespace LanguageClient