summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppcodecompletion.cpp
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2010-05-26 15:44:01 +0200
committerErik Verbruggen <erik.verbruggen@nokia.com>2010-05-26 15:51:29 +0200
commit54e09a1802c2b426bad923233e6f907359a71a00 (patch)
tree514ab6693a71f3dc6643f78732a8b90fa3c38c68 /src/plugins/cpptools/cppcodecompletion.cpp
parentb39d48fcc96a130bb2996451c20d8483e4f9ece0 (diff)
downloadqt-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.cpp36
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;