aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cpptools/abstracteditorsupport.cpp
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@digia.com>2013-05-02 14:55:56 +0200
committerNikolai Kosjar <nikolai.kosjar@digia.com>2013-06-04 15:24:33 +0200
commitca291fbc7ba860b1856b45eff5a02daa56a39d65 (patch)
tree0795f101ce78b9373d368687ce89fbe984d68f0d /src/plugins/cpptools/abstracteditorsupport.cpp
parent6a4a9266225d1e2570f602e11e3218c9667f9570 (diff)
C++: fix functionAt(), moved it, and added test.
Thanks to Jesper K. Pedersen for the fix! Change-Id: Ie49c3352e26a9632b1500596b00d559bfe932dff Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Diffstat (limited to 'src/plugins/cpptools/abstracteditorsupport.cpp')
-rw-r--r--src/plugins/cpptools/abstracteditorsupport.cpp28
1 files changed, 6 insertions, 22 deletions
diff --git a/src/plugins/cpptools/abstracteditorsupport.cpp b/src/plugins/cpptools/abstracteditorsupport.cpp
index 6410473e34..cdbd86f342 100644
--- a/src/plugins/cpptools/abstracteditorsupport.cpp
+++ b/src/plugins/cpptools/abstracteditorsupport.cpp
@@ -55,29 +55,13 @@ QString AbstractEditorSupport::functionAt(const CppModelManagerInterface *modelM
const QString &fileName,
int line, int column)
{
- const CPlusPlus::Snapshot snapshot = modelManager->snapshot();
- const CPlusPlus::Document::Ptr document = snapshot.document(fileName);
- if (!document)
+ if (!modelManager)
return QString();
- if (const CPlusPlus::Symbol *symbol = document->lastVisibleSymbolAt(line, column))
- if (const CPlusPlus::Scope *scope = symbol->enclosingScope())
- if (const CPlusPlus::Scope *functionScope = scope->enclosingFunction())
- if (const CPlusPlus::Symbol *function = functionScope) {
- const CPlusPlus::Overview o;
- QString rc = o.prettyName(function->name());
- // Prepend namespace "Foo::Foo::foo()" up to empty root namespace
- for (const CPlusPlus::Symbol *owner = function->enclosingNamespace();
- owner; owner = owner->enclosingNamespace()) {
- const QString name = o.prettyName(owner->name());
- if (name.isEmpty()) {
- break;
- } else {
- rc.prepend(QLatin1String("::"));
- rc.prepend(name);
- }
- }
- return rc;
- }
+
+ const CPlusPlus::Snapshot snapshot = modelManager->snapshot();
+ if (const CPlusPlus::Document::Ptr document = snapshot.document(fileName))
+ return document->functionAt(line, column);
+
return QString();
}