diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2022-11-29 17:01:55 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2022-12-01 12:18:42 +0000 |
commit | a09e87b3d341c171e35c1b053256cd450160c086 (patch) | |
tree | c37fd5649dbd1da07c97286f1c7194853196f2e9 | |
parent | 7c0bc1384c3c2209e6e13eb1e26d4d3dbf07ed9d (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.cpp | 2 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppquickfix_test.cpp | 22 | ||||
-rw-r--r-- | src/plugins/cppeditor/cppquickfix_test.h | 1 |
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(); |