From e5982d9c3d0d048302fc5f6ebf6b82d8071bec21 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 28 Jan 2021 17:59:57 +0100 Subject: [PATCH] CPlusPlus: Revert name minimization fix This effetively reverts 87ec0f349f, which had unwanted side effects. Change-Id: I03438c18f43b07a6560416af746132bc4471fbb7 Reviewed-by: Christian Stenger --- src/libs/cplusplus/LookupContext.cpp | 10 ++------ src/plugins/cppeditor/cppquickfix_test.cpp | 30 +++++++++++++++++++++- 2 files changed, 31 insertions(+), 9 deletions(-) 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)