summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLorenz Haas <lykurg@gmail.com>2013-05-30 17:32:15 +0200
committerErik Verbruggen <erik.verbruggen@digia.com>2013-06-04 15:54:19 +0200
commitcc1b66f1cc7971a67fada98a375e3ad241ec981c (patch)
tree5a9bb13b5cdc80e037fe9bd482504a7578874582 /src
parent1738ff64a6b8efa571567a9ed58716b895a931b3 (diff)
downloadqt-creator-cc1b66f1cc7971a67fada98a375e3ad241ec981c.tar.gz
CppTools: Open InsertionPointLocator::methodDefinition for symbols
Remove restricted use of declarations and add an option to define if SymbolFinder should be used to find a matching definition for symbol. Change-Id: If5cf5b11926e116766dd60dd3726b4fcf2e1c9f5 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/cpptools/insertionpointlocator.cpp15
-rw-r--r--src/plugins/cpptools/insertionpointlocator.h3
2 files changed, 11 insertions, 7 deletions
diff --git a/src/plugins/cpptools/insertionpointlocator.cpp b/src/plugins/cpptools/insertionpointlocator.cpp
index 08d9722086..f7118a2cfe 100644
--- a/src/plugins/cpptools/insertionpointlocator.cpp
+++ b/src/plugins/cpptools/insertionpointlocator.cpp
@@ -363,7 +363,7 @@ public:
: ASTVisitor(translationUnit)
{}
- void operator()(Declaration *decl, unsigned *line, unsigned *column)
+ void operator()(Symbol *decl, unsigned *line, unsigned *column)
{
// default to end of file
_bestToken.maybeSet(-1, translationUnit()->ast()->lastToken());
@@ -470,7 +470,7 @@ static Declaration *isNonVirtualFunctionDeclaration(Symbol *s)
return declaration;
}
-static InsertionLocation nextToSurroundingDefinitions(Declaration *declaration, const CppRefactoringChanges &changes)
+static InsertionLocation nextToSurroundingDefinitions(Symbol *declaration, const CppRefactoringChanges &changes)
{
InsertionLocation noResult;
Class *klass = declaration->enclosingClass();
@@ -545,15 +545,18 @@ static InsertionLocation nextToSurroundingDefinitions(Declaration *declaration,
return InsertionLocation(QString::fromUtf8(definitionFunction->fileName()), prefix, suffix, line, column);
}
-QList<InsertionLocation> InsertionPointLocator::methodDefinition(Declaration *declaration) const
+QList<InsertionLocation> InsertionPointLocator::methodDefinition(Symbol *declaration,
+ bool useSymbolFinder) const
{
QList<InsertionLocation> result;
if (!declaration)
return result;
- CppTools::SymbolFinder symbolFinder;
- if (symbolFinder.findMatchingDefinition(declaration, m_refactoringChanges.snapshot(), true))
- return result;
+ if (useSymbolFinder) {
+ CppTools::SymbolFinder symbolFinder;
+ if (symbolFinder.findMatchingDefinition(declaration, m_refactoringChanges.snapshot(), true))
+ return result;
+ }
const InsertionLocation location = nextToSurroundingDefinitions(declaration, m_refactoringChanges);
if (location.isValid()) {
diff --git a/src/plugins/cpptools/insertionpointlocator.h b/src/plugins/cpptools/insertionpointlocator.h
index da9799744b..f5ea46d26d 100644
--- a/src/plugins/cpptools/insertionpointlocator.h
+++ b/src/plugins/cpptools/insertionpointlocator.h
@@ -98,7 +98,8 @@ public:
const CPlusPlus::Class *clazz,
AccessSpec xsSpec) const;
- QList<InsertionLocation> methodDefinition(CPlusPlus::Declaration *declaration) const;
+ QList<InsertionLocation> methodDefinition(CPlusPlus::Symbol *declaration,
+ bool useSymbolFinder = true) const;
private:
CppRefactoringChanges m_refactoringChanges;