diff options
Diffstat (limited to 'src/libs/cplusplus/LookupContext.cpp')
-rw-r--r-- | src/libs/cplusplus/LookupContext.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index c5d6dedc96..2cd4dea274 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -304,8 +304,18 @@ ClassOrNamespace *ClassOrNamespace::globalNamespace() const return e; } +QList<Symbol *> ClassOrNamespace::find(const Name *name) +{ + return lookup_helper(name, false); +} + QList<Symbol *> ClassOrNamespace::lookup(const Name *name) { + return lookup_helper(name, true); +} + +QList<Symbol *> ClassOrNamespace::lookup_helper(const Name *name, bool searchInEnclosingScope) +{ QList<Symbol *> result; if (! name) return result; @@ -317,7 +327,7 @@ QList<Symbol *> ClassOrNamespace::lookup(const Name *name) binding = globalNamespace(); if (q->nameCount() == 1) - return binding->lookup(q->unqualifiedNameId()); + return binding->find(q->unqualifiedNameId()); binding = binding->lookupClassOrNamespace(q->nameAt(0)); @@ -325,7 +335,7 @@ QList<Symbol *> ClassOrNamespace::lookup(const Name *name) binding = binding->findClassOrNamespace(q->nameAt(index)); if (binding) - result = binding->lookup(q->unqualifiedNameId()); + result = binding->find(q->unqualifiedNameId()); return result; } @@ -335,7 +345,7 @@ QList<Symbol *> ClassOrNamespace::lookup(const Name *name) do { lookup_helper(name, binding, &result, &processed, /*templateId = */ 0); binding = binding->_parent; - } while (binding); + } while (searchInEnclosingScope && binding); return result; } |