diff --git a/src/plugins/cppeditor/cppeditor.qrc b/src/plugins/cppeditor/cppeditor.qrc
index 31e223d2c3e..bbd85581f44 100644
--- a/src/plugins/cppeditor/cppeditor.qrc
+++ b/src/plugins/cppeditor/cppeditor.qrc
@@ -135,5 +135,34 @@
testcases/MoveDeclarationOutOfIfTest/if-else/original_file.cpp
testcases/MoveDeclarationOutOfIfTest/if-else-if/expected_file.cpp
testcases/MoveDeclarationOutOfIfTest/if-else-if/original_file.cpp
+ testcases/AssignToLocalVariableTest/free-function/expected_file.cpp
+ testcases/AssignToLocalVariableTest/free-function/original_file.cpp
+ testcases/AssignToLocalVariableTest/member-function/expected_file.cpp
+ testcases/AssignToLocalVariableTest/member-function/original_file.cpp
+ testcases/AssignToLocalVariableTest/new-expression/expected_file.cpp
+ testcases/AssignToLocalVariableTest/new-expression/original_file.cpp
+ testcases/AssignToLocalVariableTest/no-function-in-expression/original_file.cpp
+ testcases/AssignToLocalVariableTest/no-function-in-function/original_file.cpp
+ testcases/AssignToLocalVariableTest/no-initialization-list/original_file.cpp
+ testcases/AssignToLocalVariableTest/no-return1/original_file.cpp
+ testcases/AssignToLocalVariableTest/no-return2/original_file.cpp
+ testcases/AssignToLocalVariableTest/no-return3/original_file.cpp
+ testcases/AssignToLocalVariableTest/no-return4/original_file.cpp
+ testcases/AssignToLocalVariableTest/no-return5/original_file.cpp
+ testcases/AssignToLocalVariableTest/no-void-function/original_file.cpp
+ testcases/AssignToLocalVariableTest/no-void-member-function/original_file.cpp
+ testcases/AssignToLocalVariableTest/no-void-static-member-function/original_file.cpp
+ testcases/AssignToLocalVariableTest/QTCREATORBUG-10355/description.txt
+ testcases/AssignToLocalVariableTest/QTCREATORBUG-10355/expected_file.cpp
+ testcases/AssignToLocalVariableTest/QTCREATORBUG-10355/original_file.cpp
+ testcases/AssignToLocalVariableTest/QTCREATORBUG-10355-2/description.txt
+ testcases/AssignToLocalVariableTest/QTCREATORBUG-10355-2/expected_file.cpp
+ testcases/AssignToLocalVariableTest/QTCREATORBUG-10355-2/original_file.cpp
+ testcases/AssignToLocalVariableTest/static-member-function/expected_file.cpp
+ testcases/AssignToLocalVariableTest/static-member-function/original_file.cpp
+ testcases/AssignToLocalVariableTest/templates/expected_file.cpp
+ testcases/AssignToLocalVariableTest/templates/expected_file.h
+ testcases/AssignToLocalVariableTest/templates/original_file.cpp
+ testcases/AssignToLocalVariableTest/templates/original_file.h
diff --git a/src/plugins/cppeditor/quickfixes/assigntolocalvariable.cpp b/src/plugins/cppeditor/quickfixes/assigntolocalvariable.cpp
index c3bc3e85daf..c96392d83a9 100644
--- a/src/plugins/cppeditor/quickfixes/assigntolocalvariable.cpp
+++ b/src/plugins/cppeditor/quickfixes/assigntolocalvariable.cpp
@@ -129,10 +129,6 @@ public:
setClangdReplacement({20});
}
-#ifdef WITH_TESTS
- static QObject *createTest();
-#endif
-
private:
void doMatch(const CppQuickFixInterface &interface, QuickFixOperations &result) override
{
@@ -254,262 +250,12 @@ private:
}
};
-#ifdef WITH_TESTS
-using namespace Tests;
-
-class AssignToLocalVariableTest : public QObject
-{
- Q_OBJECT
-
-private slots:
- void testTemplates()
- {
- QList testDocuments;
- QByteArray original;
- QByteArray expected;
-
- // Header File
- original =
- "template \n"
- "class List {\n"
- "public:\n"
- " T first();"
- "};\n"
- ;
- expected = original;
- testDocuments << CppTestDocument::create("file.h", original, expected);
-
- // Source File
- original =
- "#include \"file.h\"\n"
- "void foo() {\n"
- " List list;\n"
- " li@st.first();\n"
- "}\n";
- expected =
- "#include \"file.h\"\n"
- "void foo() {\n"
- " List list;\n"
- " auto localFirst = list.first();\n"
- "}\n";
- testDocuments << CppTestDocument::create("file.cpp", original, expected);
-
- AssignToLocalVariable factory;
- QuickFixOperationTest(testDocuments, &factory);
- }
-
- void test_data()
- {
- QTest::addColumn("original");
- QTest::addColumn("expected");
-
- // Check: Add local variable for a free function.
- QTest::newRow("freeFunction")
- << QByteArray(
- "int foo() {return 1;}\n"
- "void bar() {fo@o();}\n")
- << QByteArray(
- "int foo() {return 1;}\n"
- "void bar() {auto localFoo = foo();}\n");
-
- // Check: Add local variable for a member function.
- QTest::newRow("memberFunction")
- << QByteArray(
- "class Foo {public: int* fooFunc();}\n"
- "void bar() {\n"
- " Foo *f = new Foo;\n"
- " @f->fooFunc();\n"
- "}\n")
- << QByteArray(
- "class Foo {public: int* fooFunc();}\n"
- "void bar() {\n"
- " Foo *f = new Foo;\n"
- " auto localFooFunc = f->fooFunc();\n"
- "}\n");
-
- // Check: Add local variable for a member function, cursor in the middle (QTCREATORBUG-10355)
- QTest::newRow("memberFunction2ndGrade1")
- << QByteArray(
- "struct Foo {int* func();};\n"
- "struct Baz {Foo* foo();};\n"
- "void bar() {\n"
- " Baz *b = new Baz;\n"
- " b->foo@()->func();\n"
- "}")
- << QByteArray(
- "struct Foo {int* func();};\n"
- "struct Baz {Foo* foo();};\n"
- "void bar() {\n"
- " Baz *b = new Baz;\n"
- " auto localFunc = b->foo()->func();\n"
- "}");
-
- // Check: Add local variable for a member function, cursor on function call (QTCREATORBUG-10355)
- QTest::newRow("memberFunction2ndGrade2")
- << QByteArray(
- "struct Foo {int* func();};\n"
- "struct Baz {Foo* foo();};\n"
- "void bar() {\n"
- " Baz *b = new Baz;\n"
- " b->foo()->f@unc();\n"
- "}")
- << QByteArray(
- "struct Foo {int* func();};\n"
- "struct Baz {Foo* foo();};\n"
- "void bar() {\n"
- " Baz *b = new Baz;\n"
- " auto localFunc = b->foo()->func();\n"
- "}");
-
- // Check: Add local variable for a static member function.
- QTest::newRow("staticMemberFunction")
- << QByteArray(
- "class Foo {public: static int* fooFunc();}\n"
- "void bar() {\n"
- " Foo::fooF@unc();\n"
- "}")
- << QByteArray(
- "class Foo {public: static int* fooFunc();}\n"
- "void bar() {\n"
- " auto localFooFunc = Foo::fooFunc();\n"
- "}");
-
- // Check: Add local variable for a new Expression.
- QTest::newRow("newExpression")
- << QByteArray(
- "class Foo {}\n"
- "void bar() {\n"
- " new Fo@o;\n"
- "}")
- << QByteArray(
- "class Foo {}\n"
- "void bar() {\n"
- " auto localFoo = new Foo;\n"
- "}");
-
- // Check: No trigger for function inside member initialization list.
- QTest::newRow("noInitializationList")
- << QByteArray(
- "class Foo\n"
- "{\n"
- " public: Foo : m_i(fooF@unc()) {}\n"
- " int fooFunc() {return 2;}\n"
- " int m_i;\n"
- "};\n")
- << QByteArray();
-
- // Check: No trigger for void functions.
- QTest::newRow("noVoidFunction")
- << QByteArray(
- "void foo() {}\n"
- "void bar() {fo@o();}")
- << QByteArray();
-
- // Check: No trigger for void member functions.
- QTest::newRow("noVoidMemberFunction")
- << QByteArray(
- "class Foo {public: void fooFunc();}\n"
- "void bar() {\n"
- " Foo *f = new Foo;\n"
- " @f->fooFunc();\n"
- "}")
- << QByteArray();
-
- // Check: No trigger for void static member functions.
- QTest::newRow("noVoidStaticMemberFunction")
- << QByteArray(
- "class Foo {public: static void fooFunc();}\n"
- "void bar() {\n"
- " Foo::fo@oFunc();\n"
- "}")
- << QByteArray();
-
- // Check: No trigger for functions in expressions.
- QTest::newRow("noFunctionInExpression")
- << QByteArray(
- "int foo(int a) {return a;}\n"
- "int bar() {return 1;}"
- "void baz() {foo(@bar() + bar());}")
- << QByteArray();
-
- // Check: No trigger for functions in functions. (QTCREATORBUG-9510)
- QTest::newRow("noFunctionInFunction")
- << QByteArray(
- "int foo(int a, int b) {return a + b;}\n"
- "int bar(int a) {return a;}\n"
- "void baz() {\n"
- " int a = foo(ba@r(), bar());\n"
- "}\n")
- << QByteArray();
-
- // Check: No trigger for functions in return statements (classes).
- QTest::newRow("noReturnClass1")
- << QByteArray(
- "class Foo {public: static void fooFunc();}\n"
- "Foo* bar() {\n"
- " return new Fo@o;\n"
- "}")
- << QByteArray();
-
- // Check: No trigger for functions in return statements (classes). (QTCREATORBUG-9525)
- QTest::newRow("noReturnClass2")
- << QByteArray(
- "class Foo {public: int fooFunc();}\n"
- "int bar() {\n"
- " return (new Fo@o)->fooFunc();\n"
- "}")
- << QByteArray();
-
- // Check: No trigger for functions in return statements (functions).
- QTest::newRow("noReturnFunc1")
- << QByteArray(
- "class Foo {public: int fooFunc();}\n"
- "int bar() {\n"
- " return Foo::fooFu@nc();\n"
- "}")
- << QByteArray();
-
- // Check: No trigger for functions in return statements (functions). (QTCREATORBUG-9525)
- QTest::newRow("noReturnFunc2")
- << QByteArray(
- "int bar() {\n"
- " return list.firs@t().foo;\n"
- "}\n")
- << QByteArray();
-
- // Check: No trigger for functions which does not match in signature.
- QTest::newRow("noSignatureMatch")
- << QByteArray(
- "int someFunc(int);\n"
- "\n"
- "void f()\n"
- "{\n"
- " some@Func();\n"
- "}")
- << QByteArray();
- }
-
- void test()
- {
- QFETCH(QByteArray, original);
- QFETCH(QByteArray, expected);
- AssignToLocalVariable factory;
- QuickFixOperationTest(singleDocument(original, expected), &factory);
- }
-};
-
-QObject *AssignToLocalVariable::createTest() { return new AssignToLocalVariableTest; }
-
-#endif // WITH_TESTS
} // namespace
void registerAssignToLocalVariableQuickfix()
{
- CppQuickFixFactory::registerFactory();
+ CppQuickFixFactory::registerFactoryWithStandardTest(
+ "AssignToLocalVariableTest");
}
} // namespace CppEditor::Internal
-
-#ifdef WITH_TESTS
-#include
-#endif
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/QTCREATORBUG-10355-2/description.txt b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/QTCREATORBUG-10355-2/description.txt
new file mode 100644
index 00000000000..847aac5b03c
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/QTCREATORBUG-10355-2/description.txt
@@ -0,0 +1 @@
+Add local variable for a member function, cursor on function call (QTCREATORBUG-10355)
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/QTCREATORBUG-10355-2/expected_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/QTCREATORBUG-10355-2/expected_file.cpp
new file mode 100644
index 00000000000..fe41813daf4
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/QTCREATORBUG-10355-2/expected_file.cpp
@@ -0,0 +1,6 @@
+struct Foo {int* func();};
+struct Baz {Foo* foo();};
+void bar() {
+ Baz *b = new Baz;
+ auto localFunc = b->foo()->func();
+}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/QTCREATORBUG-10355-2/original_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/QTCREATORBUG-10355-2/original_file.cpp
new file mode 100644
index 00000000000..68c9b7a0033
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/QTCREATORBUG-10355-2/original_file.cpp
@@ -0,0 +1,6 @@
+struct Foo {int* func();};
+struct Baz {Foo* foo();};
+void bar() {
+ Baz *b = new Baz;
+ b->foo()->f@unc();
+}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/QTCREATORBUG-10355/description.txt b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/QTCREATORBUG-10355/description.txt
new file mode 100644
index 00000000000..c3142544aa3
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/QTCREATORBUG-10355/description.txt
@@ -0,0 +1 @@
+Add local variable for a member function, cursor in the middle (QTCREATORBUG-10355)
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/QTCREATORBUG-10355/expected_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/QTCREATORBUG-10355/expected_file.cpp
new file mode 100644
index 00000000000..fe41813daf4
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/QTCREATORBUG-10355/expected_file.cpp
@@ -0,0 +1,6 @@
+struct Foo {int* func();};
+struct Baz {Foo* foo();};
+void bar() {
+ Baz *b = new Baz;
+ auto localFunc = b->foo()->func();
+}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/QTCREATORBUG-10355/original_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/QTCREATORBUG-10355/original_file.cpp
new file mode 100644
index 00000000000..6ec0cdb925a
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/QTCREATORBUG-10355/original_file.cpp
@@ -0,0 +1,6 @@
+struct Foo {int* func();};
+struct Baz {Foo* foo();};
+void bar() {
+ Baz *b = new Baz;
+ b->foo@()->func();
+}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/free-function/expected_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/free-function/expected_file.cpp
new file mode 100644
index 00000000000..01e037c563c
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/free-function/expected_file.cpp
@@ -0,0 +1,2 @@
+int foo() {return 1;}
+void bar() {auto localFoo = foo();}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/free-function/original_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/free-function/original_file.cpp
new file mode 100644
index 00000000000..024f9aa4cd7
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/free-function/original_file.cpp
@@ -0,0 +1,2 @@
+int foo() {return 1;}
+void bar() {fo@o();}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/member-function/expected_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/member-function/expected_file.cpp
new file mode 100644
index 00000000000..390640c6343
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/member-function/expected_file.cpp
@@ -0,0 +1,5 @@
+class Foo {public: int* fooFunc();}
+void bar() {
+ Foo *f = new Foo;
+ auto localFooFunc = f->fooFunc();
+}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/member-function/original_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/member-function/original_file.cpp
new file mode 100644
index 00000000000..d3f50b3cd1b
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/member-function/original_file.cpp
@@ -0,0 +1,5 @@
+class Foo {public: int* fooFunc();}
+void bar() {
+ Foo *f = new Foo;
+ @f->fooFunc();
+}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/new-expression/expected_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/new-expression/expected_file.cpp
new file mode 100644
index 00000000000..aa58547d106
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/new-expression/expected_file.cpp
@@ -0,0 +1,4 @@
+class Foo {}
+void bar() {
+ auto localFoo = new Foo;
+}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/new-expression/original_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/new-expression/original_file.cpp
new file mode 100644
index 00000000000..8a8a943135e
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/new-expression/original_file.cpp
@@ -0,0 +1,4 @@
+class Foo {}
+void bar() {
+ new Fo@o;
+}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-function-in-expression/original_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-function-in-expression/original_file.cpp
new file mode 100644
index 00000000000..5bb1b026546
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-function-in-expression/original_file.cpp
@@ -0,0 +1,3 @@
+int foo(int a) {return a;}
+int bar() {return 1;}
+void baz() {foo(@bar() + bar());}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-function-in-function/original_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-function-in-function/original_file.cpp
new file mode 100644
index 00000000000..ba960df1823
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-function-in-function/original_file.cpp
@@ -0,0 +1,5 @@
+int foo(int a, int b) {return a + b;}
+int bar(int a) {return a;}
+void baz() {
+ int a = foo(ba@r(), bar());
+}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-initialization-list/original_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-initialization-list/original_file.cpp
new file mode 100644
index 00000000000..1a3999ee399
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-initialization-list/original_file.cpp
@@ -0,0 +1,6 @@
+class Foo
+{
+public: Foo : m_i(fooF@unc()) {}
+ int fooFunc() {return 2;}
+ int m_i;
+};
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-return1/original_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-return1/original_file.cpp
new file mode 100644
index 00000000000..7c8ea4ea220
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-return1/original_file.cpp
@@ -0,0 +1,4 @@
+class Foo {public: static void fooFunc();}
+Foo* bar() {
+ return new Fo@o;
+}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-return2/original_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-return2/original_file.cpp
new file mode 100644
index 00000000000..bd08f30e054
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-return2/original_file.cpp
@@ -0,0 +1,4 @@
+class Foo {public: int fooFunc();}
+int bar() {
+ return (new Fo@o)->fooFunc();
+}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-return3/original_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-return3/original_file.cpp
new file mode 100644
index 00000000000..c1b158b7196
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-return3/original_file.cpp
@@ -0,0 +1,4 @@
+class Foo {public: int fooFunc();}
+int bar() {
+ return Foo::fooFu@nc();
+}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-return4/original_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-return4/original_file.cpp
new file mode 100644
index 00000000000..10db9418df0
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-return4/original_file.cpp
@@ -0,0 +1,3 @@
+int bar() {
+ return list.firs@t().foo;
+}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-return5/original_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-return5/original_file.cpp
new file mode 100644
index 00000000000..94e36ff0824
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-return5/original_file.cpp
@@ -0,0 +1,6 @@
+int someFunc(int);
+
+void f()
+{
+ some@Func();
+}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-void-function/original_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-void-function/original_file.cpp
new file mode 100644
index 00000000000..5a89b3845d4
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-void-function/original_file.cpp
@@ -0,0 +1,2 @@
+void foo() {}
+void bar() {fo@o();}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-void-member-function/original_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-void-member-function/original_file.cpp
new file mode 100644
index 00000000000..44e48653d32
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-void-member-function/original_file.cpp
@@ -0,0 +1,5 @@
+class Foo {public: void fooFunc();}
+void bar() {
+ Foo *f = new Foo;
+ @f->fooFunc();
+}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-void-static-member-function/original_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-void-static-member-function/original_file.cpp
new file mode 100644
index 00000000000..b8e7acfc8cb
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/no-void-static-member-function/original_file.cpp
@@ -0,0 +1,4 @@
+class Foo {public: static void fooFunc();}
+void bar() {
+ Foo::fo@oFunc();
+}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/static-member-function/expected_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/static-member-function/expected_file.cpp
new file mode 100644
index 00000000000..729504eb098
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/static-member-function/expected_file.cpp
@@ -0,0 +1,4 @@
+class Foo {public: static int* fooFunc();}
+void bar() {
+ auto localFooFunc = Foo::fooFunc();
+}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/static-member-function/original_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/static-member-function/original_file.cpp
new file mode 100644
index 00000000000..35456edf248
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/static-member-function/original_file.cpp
@@ -0,0 +1,4 @@
+class Foo {public: static int* fooFunc();}
+void bar() {
+ Foo::fooF@unc();
+}
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/templates/expected_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/templates/expected_file.cpp
new file mode 100644
index 00000000000..2be442238d9
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/templates/expected_file.cpp
@@ -0,0 +1,5 @@
+#include "file.h"
+void foo() {
+ List list;
+ auto localFirst = list.first();
+};
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/templates/expected_file.h b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/templates/expected_file.h
new file mode 100644
index 00000000000..536137ba5bb
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/templates/expected_file.h
@@ -0,0 +1,5 @@
+template
+class List {
+public:
+ T first();
+};
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/templates/original_file.cpp b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/templates/original_file.cpp
new file mode 100644
index 00000000000..bf3b13b2f59
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/templates/original_file.cpp
@@ -0,0 +1,5 @@
+#include "file.h"
+void foo() {
+ List list;
+ li@st.first();
+};
diff --git a/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/templates/original_file.h b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/templates/original_file.h
new file mode 100644
index 00000000000..536137ba5bb
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/AssignToLocalVariableTest/templates/original_file.h
@@ -0,0 +1,5 @@
+template
+class List {
+public:
+ T first();
+};