From a09e87b3d341c171e35c1b053256cd450160c086 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 29 Nov 2022 17:01:55 +0100 Subject: [PATCH] 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: Reviewed-by: Qt CI Bot Reviewed-by: Christian Stenger --- src/libs/cplusplus/LookupContext.cpp | 2 ++ src/plugins/cppeditor/cppquickfix_test.cpp | 22 ++++++++++++++++++++++ src/plugins/cppeditor/cppquickfix_test.h | 1 + 3 files changed, 25 insertions(+) diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index db8bf190881..7af376120b5 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -189,6 +189,8 @@ LookupContext &LookupContext::operator=(const LookupContext &other) QList LookupContext::fullyQualifiedName(Symbol *symbol, InlineNamespacePolicy policy) { + if (symbol->asTypenameArgument()) + return {symbol->name()}; QList qualifiedName = path(symbol->enclosingScope(), policy); addNames(symbol->name(), &qualifiedName, /*add all names*/ true); return qualifiedName; diff --git a/src/plugins/cppeditor/cppquickfix_test.cpp b/src/plugins/cppeditor/cppquickfix_test.cpp index a464efedc43..dc5011e2640 100644 --- a/src/plugins/cppeditor/cppquickfix_test.cpp +++ b/src/plugins/cppeditor/cppquickfix_test.cpp @@ -6869,6 +6869,28 @@ void QuickfixTest::testMoveFuncDefOutsideTemplate() QuickFixOperationTest(singleDocument(original, expected), &factory); } +void QuickfixTest::testMoveFuncDefOutsideMemberFunctionTemplate() +{ + const QByteArray original = R"( +struct S { + template + void @foo(In in) { (void)in; } +}; +)"; + const QByteArray expected = R"( +struct S { + template + void foo(In in); +}; + +template +void S::foo(In in) { (void)in; } +)"; + + MoveFuncDefOutside factory; + QuickFixOperationTest(singleDocument(original, expected), &factory); +} + void QuickfixTest::testMoveFuncDefOutsideTemplateSpecializedClass() { QByteArray original = R"( diff --git a/src/plugins/cppeditor/cppquickfix_test.h b/src/plugins/cppeditor/cppquickfix_test.h index 2a72e45df55..ce20f7249e8 100644 --- a/src/plugins/cppeditor/cppquickfix_test.h +++ b/src/plugins/cppeditor/cppquickfix_test.h @@ -169,6 +169,7 @@ private slots: void testMoveFuncDefOutsideRespectWsInOperatorNames2(); void testMoveFuncDefOutsideMacroUses(); void testMoveFuncDefOutsideTemplate(); + void testMoveFuncDefOutsideMemberFunctionTemplate(); void testMoveFuncDefOutsideTemplateSpecializedClass(); void testMoveFuncDefOutsideUnnamedTemplate(); void testMoveFuncDefOutsideMemberFuncToCppStatic();