diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index 28fe3d8bcb7..c878f3658aa 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -217,13 +217,7 @@ QList LookupContext::fullyQualifiedName(Symbol *symbol, InlineName { QList qualifiedName = path(symbol->enclosingScope(), policy); QList symbolNames; - addNames(symbol->name(), &symbolNames, /*add all names*/ true); - if (const UsingDeclaration * const usingDecl = symbol->asUsingDeclaration()) { - if (!symbolNames.isEmpty()) - qualifiedName << symbolNames.last(); - } else { - qualifiedName << symbolNames; - } + addNames(symbol->name(), &qualifiedName, /*add all names*/ true); return qualifiedName; } @@ -818,7 +812,7 @@ void CreateBindings::lookupInScope(const Name *name, Scope *scope, continue; // skip using namespace directives else if (! id->match(s->identifier())) continue; - else if (s->name() && s->name()->isQualifiedNameId() && !s->asUsingDeclaration()) + else if (s->name() && s->name()->isQualifiedNameId()) continue; // skip qualified ids. if (Q_UNLIKELY(debug)) { diff --git a/src/plugins/cppeditor/cppquickfix_test.cpp b/src/plugins/cppeditor/cppquickfix_test.cpp index 4ad18cdc963..deeb31ff5ed 100644 --- a/src/plugins/cppeditor/cppquickfix_test.cpp +++ b/src/plugins/cppeditor/cppquickfix_test.cpp @@ -4322,6 +4322,7 @@ void Foo::otherFunc() QuickFixOperationTest(testDocuments, &factory); } +// FIXME: QTCREATORBUG-14524. void CppEditorPlugin::test_quickfix_InsertDefFromDecl_usingDecl() { QList testDocuments; @@ -4346,7 +4347,7 @@ void @func(const S &s); expected = R"( #include "file.h" -void func(const S &s) +void func(const N::S &s) { } @@ -4355,6 +4356,33 @@ void func(const S &s) InsertDefFromDecl factory; QuickFixOperationTest(testDocuments, &factory); + + testDocuments.clear(); + original = R"( +namespace N1 { +namespace N2 { struct S; } +using N2::S; +} + +void @func(const N1::S &s); +)"; + expected = original; + testDocuments << QuickFixTestDocument::create("file.h", original, expected); + + // Source File + original = R"( +#include "file.h" +)"; + expected = R"( +#include "file.h" + +void func(const N1::N2::S &s) +{ + +} +)"; + testDocuments << QuickFixTestDocument::create("file.cpp", original, expected); + QuickFixOperationTest(testDocuments, &factory); } /// Find right implementation file. (QTCREATORBUG-10728)