Clang: Fix crash when backend is not yet started

Due to DummyBackendSender not overriding requestToolTip() the base
implementation was called which assumed a connected backend.

To avoid this in future, derive DummyBackendSender from
ClangCodeModelServerInterface so the compiler will warn about not
overridden functions.

Task-number: QTCREATORBUG-19644
Change-Id: Ifd846cbe581092e1688719119dad5003da66d0a3
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
Nikolai Kosjar
2018-01-24 13:02:43 +01:00
parent b500bba6af
commit 8836f2a6dc
2 changed files with 3 additions and 5 deletions

View File

@@ -70,11 +70,9 @@ static QString backendProcessPath()
namespace ClangCodeModel {
namespace Internal {
class DummyBackendSender : public BackendSender
class DummyBackendSender : public ClangBackEnd::ClangCodeModelServerInterface
{
public:
DummyBackendSender() : BackendSender(nullptr) {}
void end() override {}
void registerTranslationUnitsForEditor(const RegisterTranslationUnitForEditorMessage &) override {}
void updateTranslationUnitsForEditor(const UpdateTranslationUnitsForEditorMessage &) override {}
@@ -87,10 +85,10 @@ public:
void requestDocumentAnnotations(const RequestDocumentAnnotationsMessage &) override {}
void requestReferences(const RequestReferencesMessage &) override {}
void requestFollowSymbol(const RequestFollowSymbolMessage &) override {}
void requestToolTip(const RequestToolTipMessage &) override {}
void updateVisibleTranslationUnits(const UpdateVisibleTranslationUnitsMessage &) override {}
};
BackendCommunicator::BackendCommunicator()
: m_connection(&m_receiver)
, m_sender(new DummyBackendSender())

View File

@@ -147,7 +147,7 @@ private:
BackendReceiver m_receiver;
ClangBackEnd::ClangCodeModelConnectionClient m_connection;
QTimer m_backendStartTimeOut;
QScopedPointer<BackendSender> m_sender;
QScopedPointer<ClangBackEnd::ClangCodeModelServerInterface> m_sender;
int m_connectedCount = 0;
};