diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index 5f883feab9d43874410b2af3b6872099791fba19..1a510b6bd2dfc7b5c838c61c9256efad30dae576 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -794,6 +794,21 @@ bool CreateBindings::visit(BaseClass *b) return false; } +bool CreateBindings::visit(UsingDeclaration *u) +{ + if (u->name()) { + if (const QualifiedNameId *q = u->name()->asQualifiedNameId()) { + if (const NameId *unqualifiedId = q->unqualifiedNameId()->asNameId()) { + if (ClassOrNamespace *delegate = _currentClassOrNamespace->lookupType(q)) { + ClassOrNamespace *b = _currentClassOrNamespace->findOrCreateType(unqualifiedId); + b->addUsing(delegate); + } + } + } + } + return false; +} + bool CreateBindings::visit(UsingNamespaceDirective *u) { if (ClassOrNamespace *e = _currentClassOrNamespace->lookupType(u->name())) { diff --git a/src/libs/cplusplus/LookupContext.h b/src/libs/cplusplus/LookupContext.h index 060d7ab0066ddeb50c9054d238974d1b1789ce6d..195fea8275f98b81ba752482af5c26ec5a08c017 100644 --- a/src/libs/cplusplus/LookupContext.h +++ b/src/libs/cplusplus/LookupContext.h @@ -170,6 +170,7 @@ protected: virtual bool visit(Function *); virtual bool visit(BaseClass *b); virtual bool visit(UsingNamespaceDirective *u); + virtual bool visit(UsingDeclaration *u); virtual bool visit(NamespaceAlias *a); virtual bool visit(ObjCClass *klass);