diff options
| author | Roberto Raggi <qtc-committer@nokia.com> | 2009-01-24 23:07:42 +0100 |
|---|---|---|
| committer | Roberto Raggi <qtc-committer@nokia.com> | 2009-01-24 23:07:42 +0100 |
| commit | a90545126fb63ed05fc559d50dbbb215dcd3f25e (patch) | |
| tree | 32aa9eec68bc2214bd51052e043188c93a2f87ac | |
| parent | 926fc06266565fee619c106e8187006a68a7a03d (diff) | |
| download | qt-creator-a90545126fb63ed05fc559d50dbbb215dcd3f25e.tar.gz | |
Fixes: Lookup of qualified name ids.
| -rw-r--r-- | src/libs/cplusplus/LookupContext.cpp | 41 |
1 files changed, 20 insertions, 21 deletions
diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index 2941489e01..01d4e13b4e 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -162,8 +162,26 @@ QList<Symbol *> LookupContext::resolve(Name *name, const QList<Scope *> &visible if (QualifiedNameId *q = name->asQualifiedNameId()) { QList<Symbol *> candidates; QList<Scope *> scopes = visibleScopes; - Identifier *id = identifier(name); + for (unsigned i = 0; i < q->nameCount(); ++i) { + Name *name = q->nameAt(i); + if (i + 1 == q->nameCount()) + candidates = resolve(name, scopes, mode); + else + candidates = resolveClassOrNamespace(name, scopes); + + if (candidates.isEmpty() || i + 1 == q->nameCount()) + break; + + scopes.clear(); + foreach (Symbol *candidate, candidates) { + if (ScopedSymbol *scoped = candidate->asScopedSymbol()) { + expand(scoped->members(), visibleScopes, &scopes); + } + } + } + + Identifier *id = identifier(name); foreach (Scope *scope, visibleScopes) { Symbol *symbol = scope->lookat(id); for (; symbol; symbol = symbol->next()) { @@ -189,26 +207,7 @@ QList<Symbol *> LookupContext::resolve(Name *name, const QList<Scope *> &visible } } - for (unsigned i = 0; i < q->nameCount(); ++i) { - Name *name = q->nameAt(i); - - if (i + 1 == q->nameCount()) - candidates += resolve(name, scopes, mode); - else - candidates += resolveClassOrNamespace(name, scopes); - - if (candidates.isEmpty() || i + 1 == q->nameCount()) - return candidates; - - scopes.clear(); - foreach (Symbol *candidate, candidates) { - if (ScopedSymbol *scoped = candidate->asScopedSymbol()) { - expand(scoped->members(), visibleScopes, &scopes); - } - } - } - - return QList<Symbol *>(); + return candidates; } QList<Symbol *> candidates; |
