CppEditor: Clean up cppvirtualfunctionassistprovider.cpp

- Moves the findMatchingClassDeclaration() call from
  FollowSymbolUnderCursor::findLink into VirtualFunctionsAssistProcessor
  since we already have a SymbolFinder there
- Make canLookupVirtualFunctionOverrides a class member because we plan
  to add some methods
- Better parameter names/order for FunctionHelper::overrides()

Change-Id: I0a93ff5445352d47e808adad45485e520f06946e
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
This commit is contained in:
Nikolai Kosjar
2013-10-25 15:04:51 +02:00
parent 8f0be66d3d
commit 65f13fe05c
3 changed files with 74 additions and 36 deletions

View File

@@ -132,12 +132,16 @@ public:
IAssistProposal *perform(const IAssistInterface *)
{
QTC_ASSERT(m_params.startClass, return 0);
QTC_ASSERT(m_params.function, return 0);
QTC_ASSERT(!m_params.snapshot.isEmpty(), return 0);
Class *functionsClass = m_finder.findMatchingClassDeclaration(m_params.function,
m_params.snapshot);
if (!functionsClass)
return 0;
const QList<Symbol *> overrides
= FunctionHelper::overrides(m_params.startClass, m_params.function, m_params.snapshot);
= FunctionHelper::overrides(m_params.function, functionsClass, m_params.snapshot);
if (overrides.isEmpty())
return 0;
@@ -250,19 +254,19 @@ bool FunctionHelper::isPureVirtualFunction(const Function *function, const Snaps
return isVirtualFunction_helper(function, snapshot, PureVirtual);
}
QList<Symbol *> FunctionHelper::overrides(Class *startClass, Function *function,
QList<Symbol *> FunctionHelper::overrides(Function *function, Class *functionsClass,
const Snapshot &snapshot)
{
QList<Symbol *> result;
QTC_ASSERT(startClass && function, return result);
QTC_ASSERT(function && functionsClass, return result);
FullySpecifiedType referenceType = function->type();
const Name *referenceName = function->name();
QTC_ASSERT(referenceName && referenceType.isValid(), return result);
// Find overrides
CppEditor::Internal::CppClass cppClass = CppClass(startClass);
cppClass.lookupDerived(startClass, snapshot);
CppEditor::Internal::CppClass cppClass = CppClass(functionsClass);
cppClass.lookupDerived(functionsClass, snapshot);
QList<CppClass> l;
l << cppClass;