summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools')
-rw-r--r--src/plugins/cpptools/cppfollowsymbolundercursor.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/plugins/cpptools/cppfollowsymbolundercursor.cpp b/src/plugins/cpptools/cppfollowsymbolundercursor.cpp
index a21babf852..f7307b59c1 100644
--- a/src/plugins/cpptools/cppfollowsymbolundercursor.cpp
+++ b/src/plugins/cpptools/cppfollowsymbolundercursor.cpp
@@ -111,8 +111,17 @@ VirtualFunctionHelper::VirtualFunctionHelper(TypeOfExpression &typeOfExpression,
bool VirtualFunctionHelper::canLookupVirtualFunctionOverrides(Function *function)
{
m_function = function;
- if (!m_function || !m_baseExpressionAST || !m_expressionDocument || !m_document || !m_scope
- || m_scope->isClass() || m_scope->isFunction() || m_snapshot.isEmpty()) {
+
+ if (!m_document || m_snapshot.isEmpty() || !m_function || !m_scope)
+ return false;
+
+ if (m_scope->isClass() && m_function->isPureVirtual()) {
+ m_staticClassOfFunctionCallExpression = m_scope->asClass();
+ return true;
+ }
+
+ if (!m_baseExpressionAST || !m_expressionDocument
+ || m_scope->isClass() || m_scope->isFunction()) {
return false;
}