diff options
author | Erik Verbruggen <erik.verbruggen@digia.com> | 2013-05-02 14:55:56 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2013-06-04 15:24:33 +0200 |
commit | ca291fbc7ba860b1856b45eff5a02daa56a39d65 (patch) | |
tree | 0795f101ce78b9373d368687ce89fbe984d68f0d /src/plugins/cpptools/abstracteditorsupport.cpp | |
parent | 6a4a9266225d1e2570f602e11e3218c9667f9570 (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.cpp | 28 |
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(); } |