CPlusPlus: Do not try to qualify the names of template parameters

These always appear as written.

Task-number: QTCREATORBUG-28186
Change-Id: Iea8cc99ee6c17c1320817977fdb96ae1f730bc45
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Christian Kandeler
2022-11-29 17:01:55 +01:00
parent 7c0bc1384c
commit a09e87b3d3
3 changed files with 25 additions and 0 deletions

View File

@@ -189,6 +189,8 @@ LookupContext &LookupContext::operator=(const LookupContext &other)
QList<const Name *> LookupContext::fullyQualifiedName(Symbol *symbol, InlineNamespacePolicy policy) QList<const Name *> LookupContext::fullyQualifiedName(Symbol *symbol, InlineNamespacePolicy policy)
{ {
if (symbol->asTypenameArgument())
return {symbol->name()};
QList<const Name *> qualifiedName = path(symbol->enclosingScope(), policy); QList<const Name *> qualifiedName = path(symbol->enclosingScope(), policy);
addNames(symbol->name(), &qualifiedName, /*add all names*/ true); addNames(symbol->name(), &qualifiedName, /*add all names*/ true);
return qualifiedName; return qualifiedName;

View File

@@ -6869,6 +6869,28 @@ void QuickfixTest::testMoveFuncDefOutsideTemplate()
QuickFixOperationTest(singleDocument(original, expected), &factory); QuickFixOperationTest(singleDocument(original, expected), &factory);
} }
void QuickfixTest::testMoveFuncDefOutsideMemberFunctionTemplate()
{
const QByteArray original = R"(
struct S {
template<typename In>
void @foo(In in) { (void)in; }
};
)";
const QByteArray expected = R"(
struct S {
template<typename In>
void foo(In in);
};
template<typename In>
void S::foo(In in) { (void)in; }
)";
MoveFuncDefOutside factory;
QuickFixOperationTest(singleDocument(original, expected), &factory);
}
void QuickfixTest::testMoveFuncDefOutsideTemplateSpecializedClass() void QuickfixTest::testMoveFuncDefOutsideTemplateSpecializedClass()
{ {
QByteArray original = R"( QByteArray original = R"(

View File

@@ -169,6 +169,7 @@ private slots:
void testMoveFuncDefOutsideRespectWsInOperatorNames2(); void testMoveFuncDefOutsideRespectWsInOperatorNames2();
void testMoveFuncDefOutsideMacroUses(); void testMoveFuncDefOutsideMacroUses();
void testMoveFuncDefOutsideTemplate(); void testMoveFuncDefOutsideTemplate();
void testMoveFuncDefOutsideMemberFunctionTemplate();
void testMoveFuncDefOutsideTemplateSpecializedClass(); void testMoveFuncDefOutsideTemplateSpecializedClass();
void testMoveFuncDefOutsideUnnamedTemplate(); void testMoveFuncDefOutsideUnnamedTemplate();
void testMoveFuncDefOutsideMemberFuncToCppStatic(); void testMoveFuncDefOutsideMemberFuncToCppStatic();