diff options
| author | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-05-26 15:44:01 +0200 |
|---|---|---|
| committer | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-05-26 15:51:29 +0200 |
| commit | 54e09a1802c2b426bad923233e6f907359a71a00 (patch) | |
| tree | 514ab6693a71f3dc6643f78732a8b90fa3c38c68 /src/plugins/cpptools/cppcodecompletion.cpp | |
| parent | b39d48fcc96a130bb2996451c20d8483e4f9ece0 (diff) | |
| download | qt-creator-54e09a1802c2b426bad923233e6f907359a71a00.tar.gz | |
Changed C++ code completion to use the new LookupContext.
Diffstat (limited to 'src/plugins/cpptools/cppcodecompletion.cpp')
| -rw-r--r-- | src/plugins/cpptools/cppcodecompletion.cpp | 36 |
1 files changed, 14 insertions, 22 deletions
diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp index 88ca3b7558..afd2b7b77d 100644 --- a/src/plugins/cpptools/cppcodecompletion.cpp +++ b/src/plugins/cpptools/cppcodecompletion.cpp @@ -46,7 +46,6 @@ #include <TranslationUnit.h> #include <cplusplus/ResolveExpression.h> -#include <cplusplus/DeprecatedLookupContext.h> #include <cplusplus/MatchingText.h> #include <cplusplus/Overview.h> #include <cplusplus/ExpressionUnderCursor.h> @@ -1459,11 +1458,6 @@ bool CppCodeCompletion::completeQtMethod(const QList<LookupItem> &results, const LookupContext &context = typeOfExpression.context(); - DeprecatedLookupContext depContext(typeOfExpression.scope()->owner(), - context.expressionDocument(), - context.thisDocument(), - context.snapshot()); - ConvertToCompletionItem toCompletionItem(this); Overview o; o.setShowReturnTypes(false); @@ -1487,26 +1481,24 @@ bool CppCodeCompletion::completeQtMethod(const QList<LookupItem> &results, if (! b) continue; - const QList<Symbol *> classObjects = b->symbols(); + QList<ClassOrNamespace *>todo; + QSet<ClassOrNamespace *> processed; + QList<Scope *> scopes; + todo.append(b); + while (!todo.isEmpty()) { + ClassOrNamespace *binding = todo.takeLast(); + if (!processed.contains(binding)) { + processed.insert(binding); - if (classObjects.isEmpty()) - continue; + foreach (Symbol *s, binding->symbols()) + if (Class *clazz = s->asClass()) + scopes.append(clazz->members()); - Class *klass = 0; - foreach (Symbol *c, classObjects) { - klass = c->asClass(); - if (klass != 0) - break; + todo.append(binding->usings()); + } } - if (! klass) - continue; - - QList<Scope *> todo; - const QList<Scope *> visibleScopes = depContext.visibleScopes(p); - depContext.expand(klass->members(), visibleScopes, &todo); - - foreach (Scope *scope, todo) { + foreach (Scope *scope, scopes) { if (! scope->isClassScope()) continue; |
