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 ClangCodeModel {
namespace Internal { namespace Internal {
class DummyBackendSender : public BackendSender class DummyBackendSender : public ClangBackEnd::ClangCodeModelServerInterface
{ {
public: public:
DummyBackendSender() : BackendSender(nullptr) {}
void end() override {} void end() override {}
void registerTranslationUnitsForEditor(const RegisterTranslationUnitForEditorMessage &) override {} void registerTranslationUnitsForEditor(const RegisterTranslationUnitForEditorMessage &) override {}
void updateTranslationUnitsForEditor(const UpdateTranslationUnitsForEditorMessage &) override {} void updateTranslationUnitsForEditor(const UpdateTranslationUnitsForEditorMessage &) override {}
@@ -87,10 +85,10 @@ public:
void requestDocumentAnnotations(const RequestDocumentAnnotationsMessage &) override {} void requestDocumentAnnotations(const RequestDocumentAnnotationsMessage &) override {}
void requestReferences(const RequestReferencesMessage &) override {} void requestReferences(const RequestReferencesMessage &) override {}
void requestFollowSymbol(const RequestFollowSymbolMessage &) override {} void requestFollowSymbol(const RequestFollowSymbolMessage &) override {}
void requestToolTip(const RequestToolTipMessage &) override {}
void updateVisibleTranslationUnits(const UpdateVisibleTranslationUnitsMessage &) override {} void updateVisibleTranslationUnits(const UpdateVisibleTranslationUnitsMessage &) override {}
}; };
BackendCommunicator::BackendCommunicator() BackendCommunicator::BackendCommunicator()
: m_connection(&m_receiver) : m_connection(&m_receiver)
, m_sender(new DummyBackendSender()) , m_sender(new DummyBackendSender())

View File

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