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();