From df540d56114a3327aa687157a62d060a688d0d5d Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Fri, 5 Feb 2021 15:13:30 +0100 Subject: [PATCH] Remove the inline keyword when moving implementation to cpp Since the implementation has been moved to the cpp file, then the inline keyword has to be removed otherwise it will cause a build error. Change-Id: I145bbaeb02674bd68501f1a41787bd4aa2a75f53 Fixes: QTCREATORBUG-20703 Reviewed-by: Christian Kandeler --- src/plugins/cppeditor/cppeditorplugin.h | 2 + src/plugins/cppeditor/cppquickfix_test.cpp | 90 ++++++++++++++++++++-- src/plugins/cppeditor/cppquickfixes.cpp | 4 + 3 files changed, 91 insertions(+), 5 deletions(-) diff --git a/src/plugins/cppeditor/cppeditorplugin.h b/src/plugins/cppeditor/cppeditorplugin.h index 9666b6c2f96..523c8e46a5e 100644 --- a/src/plugins/cppeditor/cppeditorplugin.h +++ b/src/plugins/cppeditor/cppeditorplugin.h @@ -194,6 +194,8 @@ private slots: void test_quickfix_MoveFuncDefOutside_macroUses(); void test_quickfix_MoveFuncDefOutside_template(); void test_quickfix_MoveFuncDefOutside_unnamedTemplate(); + void test_quickfix_MoveFuncDefOutside_MemberFuncToCpp_Static(); + void test_quickfix_MoveFuncDefOutside_MemberFuncToCpp_WithInlinePartOfName(); void test_quickfix_MoveAllFuncDefOutside_MemberFuncToCpp(); void test_quickfix_MoveAllFuncDefOutside_MemberFuncOutside(); diff --git a/src/plugins/cppeditor/cppquickfix_test.cpp b/src/plugins/cppeditor/cppquickfix_test.cpp index 0fcbe92e985..849201d8a56 100644 --- a/src/plugins/cppeditor/cppquickfix_test.cpp +++ b/src/plugins/cppeditor/cppquickfix_test.cpp @@ -5897,7 +5897,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncToCpp() "};\n"; expected = "class Foo {\n" - " inline int number() const;\n" + " int number() const;\n" "\n" " void bar();\n" "};\n"; @@ -5920,6 +5920,86 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncToCpp() QuickFixOperationTest(testDocuments, &factory); } +void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncToCpp_Static() +{ + QList testDocuments; + QByteArray original; + QByteArray expected; + + // Header File + original = + "class Foo {\n" + " static inline int numbe@r() const\n" + " {\n" + " return 5;\n" + " }\n" + "\n" + " void bar();\n" + "};\n"; + expected = + "class Foo {\n" + " static int number() const;\n" + "\n" + " void bar();\n" + "};\n"; + testDocuments << QuickFixTestDocument::create("file.h", original, expected); + + // Source File + original = + "#include \"file.h\"\n"; + expected = + "#include \"file.h\"\n" + "\n" + "int Foo::number() const\n" + "{\n" + " return 5;\n" + "}\n"; + testDocuments << QuickFixTestDocument::create("file.cpp", original, expected); + + MoveFuncDefOutside factory; + QuickFixOperationTest(testDocuments, &factory); +} + +void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncToCpp_WithInlinePartOfName() +{ + QList testDocuments; + QByteArray original; + QByteArray expected; + + // Header File + original = + "class Foo {\n" + " static inline int numbe@r_inline () const\n" + " {\n" + " return 5;\n" + " }\n" + "\n" + " void bar();\n" + "};\n"; + expected = + "class Foo {\n" + " static int number_inline () const;\n" + "\n" + " void bar();\n" + "};\n"; + testDocuments << QuickFixTestDocument::create("file.h", original, expected); + + // Source File + original = + "#include \"file.h\"\n"; + expected = + "#include \"file.h\"\n" + "\n" + "int Foo::number_inline() const\n" + "{\n" + " return 5;\n" + "}\n"; + testDocuments << QuickFixTestDocument::create("file.cpp", original, expected); + + MoveFuncDefOutside factory; + QuickFixOperationTest(testDocuments, &factory); +} + void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncToCppInsideNS() { QList testDocuments; @@ -5984,7 +6064,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncOutside1() QByteArray expected = "class Foo {\n" " void f1();\n" - " inline int f2@() const;\n" + " int f2@() const;\n" " void f3();\n" " void f4();\n" "};\n" @@ -6062,7 +6142,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncToCppNS() expected = "namespace MyNs {\n" "class Foo {\n" - " inline int number() const;\n" + " int number() const;\n" "};\n" "}\n"; testDocuments << QuickFixTestDocument::create("file.h", original, expected); @@ -6103,7 +6183,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncToCppNSUsing() expected = "namespace MyNs {\n" "class Foo {\n" - " inline int number() const;\n" + " int number() const;\n" "};\n" "}\n"; testDocuments << QuickFixTestDocument::create("file.h", original, expected); @@ -6140,7 +6220,7 @@ void CppEditorPlugin::test_quickfix_MoveFuncDefOutside_MemberFuncOutsideWithNs() QByteArray expected = "namespace MyNs {\n" "class Foo {\n" - " inline int number() const;\n" + " int number() const;\n" "};\n" "\n" "int Foo::number() const\n" diff --git a/src/plugins/cppeditor/cppquickfixes.cpp b/src/plugins/cppeditor/cppquickfixes.cpp index 1be833ad671..b7aa2f5d417 100644 --- a/src/plugins/cppeditor/cppquickfixes.cpp +++ b/src/plugins/cppeditor/cppquickfixes.cpp @@ -6262,6 +6262,10 @@ public: } else { QString textFuncDecl = m_fromFile->textOf(funcAST); textFuncDecl.truncate(startPosition - m_fromFile->startOf(funcAST)); + if (textFuncDecl.left(7) == QLatin1String("inline ")) + textFuncDecl = textFuncDecl.mid(7); + else + textFuncDecl.replace(" inline ", QLatin1String(" ")); textFuncDecl = textFuncDecl.trimmed() + QLatin1Char(';'); m_fromFileChangeSet.replace(m_fromFile->range(funcAST), textFuncDecl); }