diff options
Diffstat (limited to 'src/libs/cplusplus')
-rw-r--r-- | src/libs/cplusplus/LookupContext.cpp | 19 | ||||
-rw-r--r-- | src/libs/cplusplus/LookupContext.h | 7 |
2 files changed, 18 insertions, 8 deletions
diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index 2846ea5955..2658b87b32 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -60,15 +60,22 @@ static void addNames(const Name *name, QList<const Name *> *names, bool addAllNa } } -static void path_helper(Symbol *symbol, QList<const Name *> *names) +static void path_helper(Symbol *symbol, + QList<const Name *> *names, + LookupContext::InlineNamespacePolicy policy) { if (! symbol) return; - path_helper(symbol->enclosingScope(), names); + path_helper(symbol->enclosingScope(), names, policy); if (symbol->name()) { if (symbol->isClass() || symbol->isNamespace()) { + if (policy == LookupContext::HideInlineNamespaces) { + auto ns = symbol->asNamespace(); + if (ns && ns->isInline()) + return; + } addNames(symbol->name(), names); } else if (symbol->isObjCClass() || symbol->isObjCBaseClass() || symbol->isObjCProtocol() @@ -206,17 +213,17 @@ LookupContext &LookupContext::operator=(const LookupContext &other) return *this; } -QList<const Name *> LookupContext::fullyQualifiedName(Symbol *symbol) +QList<const Name *> LookupContext::fullyQualifiedName(Symbol *symbol, InlineNamespacePolicy policy) { - QList<const Name *> qualifiedName = path(symbol->enclosingScope()); + QList<const Name *> qualifiedName = path(symbol->enclosingScope(), policy); addNames(symbol->name(), &qualifiedName, /*add all names*/ true); return qualifiedName; } -QList<const Name *> LookupContext::path(Symbol *symbol) +QList<const Name *> LookupContext::path(Symbol *symbol, InlineNamespacePolicy policy) { QList<const Name *> names; - path_helper(symbol, &names); + path_helper(symbol, &names, policy); return names; } diff --git a/src/libs/cplusplus/LookupContext.h b/src/libs/cplusplus/LookupContext.h index e3224f1bab..fbdcad2a25 100644 --- a/src/libs/cplusplus/LookupContext.h +++ b/src/libs/cplusplus/LookupContext.h @@ -314,8 +314,11 @@ public: QSharedPointer<CreateBindings> bindings() const { return _bindings; } - static QList<const Name *> fullyQualifiedName(Symbol *symbol); - static QList<const Name *> path(Symbol *symbol); + enum InlineNamespacePolicy { ShowInlineNamespaces, HideInlineNamespaces }; + static QList<const Name *> fullyQualifiedName( + Symbol *symbol, InlineNamespacePolicy policy = ShowInlineNamespaces); + static QList<const Name *> path(Symbol *symbol, + InlineNamespacePolicy policy = ShowInlineNamespaces); static const Name *minimalName(Symbol *symbol, ClassOrNamespace *target, Control *control); |