summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/LookupContext.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2010-06-01 14:00:02 +0200
committerRoberto Raggi <roberto.raggi@nokia.com>2010-06-01 14:00:02 +0200
commited501b9bc3532f0128defa69805b0eb42d277fb7 (patch)
treef01a2ed0772ec0472a6b22c9fe2e1b51a1121412 /src/libs/cplusplus/LookupContext.cpp
parent284fc63236825151a8ea08a1575c6c42c27fe6c5 (diff)
downloadqt-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.cpp18
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;