diff options
author | Roberto Raggi <roberto.raggi@nokia.com> | 2010-06-01 14:00:02 +0200 |
---|---|---|
committer | Roberto Raggi <roberto.raggi@nokia.com> | 2010-06-01 14:00:02 +0200 |
commit | ed501b9bc3532f0128defa69805b0eb42d277fb7 (patch) | |
tree | f01a2ed0772ec0472a6b22c9fe2e1b51a1121412 /src/libs/cplusplus/LookupContext.cpp | |
parent | 284fc63236825151a8ea08a1575c6c42c27fe6c5 (diff) | |
download | qt-creator-ed501b9bc3532f0128defa69805b0eb42d277fb7.tar.gz |
Look at the injected class name.
Diffstat (limited to 'src/libs/cplusplus/LookupContext.cpp')
-rw-r--r-- | src/libs/cplusplus/LookupContext.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index 7e352db117..21cecac309 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -376,9 +376,18 @@ void ClassOrNamespace::lookup_helper(const Name *name, ClassOrNamespace *binding if (binding && ! processed->contains(binding)) { processed->insert(binding); + const Identifier *nameId = name->identifier(); + foreach (Symbol *s, binding->symbols()) { - if (ScopedSymbol *scoped = s->asScopedSymbol()) + if (ScopedSymbol *scoped = s->asScopedSymbol()) { + if (Class *klass = scoped->asClass()) { + if (const Identifier *id = klass->identifier()) { + if (nameId && nameId->isEqualTo(id)) + result->append(klass); + } + } _factory->lookupInScope(name, scoped->members(), result, templateId); + } } foreach (Enum *e, binding->enums()) @@ -486,6 +495,13 @@ ClassOrNamespace *ClassOrNamespace::lookupType_helper(const Name *name, if (name->isNameId() || name->isTemplateNameId()) { flush(); + foreach (Symbol *s, symbols()) { + if (Class *klass = s->asClass()) { + if (klass->identifier() && klass->identifier()->isEqualTo(name->identifier())) + return this; + } + } + if (ClassOrNamespace *e = nestedType(name)) return e; |