aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2022-11-29 17:01:55 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2022-12-01 12:18:42 +0000
commita09e87b3d341c171e35c1b053256cd450160c086 (patch)
treec37fd5649dbd1da07c97286f1c7194853196f2e9
parent7c0bc1384c3c2209e6e13eb1e26d4d3dbf07ed9d (diff)
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>
-rw-r--r--src/libs/cplusplus/LookupContext.cpp2
-rw-r--r--src/plugins/cppeditor/cppquickfix_test.cpp22
-rw-r--r--src/plugins/cppeditor/cppquickfix_test.h1
3 files changed, 25 insertions, 0 deletions
diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp
index db8bf19088..7af376120b 100644
--- a/src/libs/cplusplus/LookupContext.cpp
+++ b/src/libs/cplusplus/LookupContext.cpp
@@ -189,6 +189,8 @@ LookupContext &LookupContext::operator=(const LookupContext &other)
QList<const Name *> LookupContext::fullyQualifiedName(Symbol *symbol, InlineNamespacePolicy policy)
{
+ if (symbol->asTypenameArgument())
+ return {symbol->name()};
QList<const Name *> 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 a464efedc4..dc5011e264 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<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()
{
QByteArray original = R"(
diff --git a/src/plugins/cppeditor/cppquickfix_test.h b/src/plugins/cppeditor/cppquickfix_test.h
index 2a72e45df5..ce20f7249e 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();