CppEditorDocument: Return covariant return type

As a virtual method overload, completionAssistProvider() can return a
covariant return type. This preserves type information and eliminates
a qobject_cast<> in CppEditorWidget.

Change-Id: I3b29b0fa4e876bbcc43f628e6e0bbf4d73d3f689
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
Bernhard Beschow
2017-10-22 22:24:47 +02:00
parent 886c76e10f
commit 66944dc4e9
3 changed files with 3 additions and 4 deletions

View File

@@ -136,7 +136,7 @@ bool CppEditorDocument::isObjCEnabled() const
return m_isObjCEnabled;
}
TextEditor::CompletionAssistProvider *CppEditorDocument::completionAssistProvider() const
CppTools::CppCompletionAssistProvider *CppEditorDocument::completionAssistProvider() const
{
return m_completionAssistProvider;
}

View File

@@ -52,7 +52,7 @@ public:
explicit CppEditorDocument();
bool isObjCEnabled() const;
TextEditor::CompletionAssistProvider *completionAssistProvider() const override;
CppTools::CppCompletionAssistProvider *completionAssistProvider() const override;
TextEditor::IAssistProvider *quickFixAssistProvider() const override;
void recalculateSemanticInfoDetached();

View File

@@ -1001,8 +1001,7 @@ void CppEditorWidget::updateSemanticInfo(const SemanticInfo &semanticInfo,
AssistInterface *CppEditorWidget::createAssistInterface(AssistKind kind, AssistReason reason) const
{
if (kind == Completion) {
if (CppCompletionAssistProvider *cap = qobject_cast<CppCompletionAssistProvider *>(
cppEditorDocument()->completionAssistProvider())) {
if (CppCompletionAssistProvider *cap = cppEditorDocument()->completionAssistProvider()) {
LanguageFeatures features = LanguageFeatures::defaultFeatures();
if (Document::Ptr doc = d->m_lastSemanticInfo.doc)
features = doc->languageFeatures();