aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cppeditor/testcases
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cppeditor/testcases')
-rw-r--r--src/plugins/cppeditor/testcases/move-class/complex/complex.pro2
-rw-r--r--src/plugins/cppeditor/testcases/move-class/complex/complex.pro_expected4
-rw-r--r--src/plugins/cppeditor/testcases/move-class/complex/main.cpp11
-rw-r--r--src/plugins/cppeditor/testcases/move-class/complex/main.cpp_expected11
-rw-r--r--src/plugins/cppeditor/testcases/move-class/complex/theclass.cpp_expected20
-rw-r--r--src/plugins/cppeditor/testcases/move-class/complex/theclass.h_expected29
-rw-r--r--src/plugins/cppeditor/testcases/move-class/complex/theheader.h30
-rw-r--r--src/plugins/cppeditor/testcases/move-class/complex/theheader.h_expected18
-rw-r--r--src/plugins/cppeditor/testcases/move-class/complex/thesource.cpp19
-rw-r--r--src/plugins/cppeditor/testcases/move-class/complex/thesource.cpp_expected15
-rw-r--r--src/plugins/cppeditor/testcases/move-class/decl-in-source/decl-in-source.pro2
-rw-r--r--src/plugins/cppeditor/testcases/move-class/decl-in-source/decl-in-source.pro_expected3
-rw-r--r--src/plugins/cppeditor/testcases/move-class/decl-in-source/theclass.h_expected11
-rw-r--r--src/plugins/cppeditor/testcases/move-class/decl-in-source/theheader.h4
-rw-r--r--src/plugins/cppeditor/testcases/move-class/decl-in-source/thesource.cpp8
-rw-r--r--src/plugins/cppeditor/testcases/move-class/decl-in-source/thesource.cpp_expected6
-rw-r--r--src/plugins/cppeditor/testcases/move-class/header-only/header-only.pro2
-rw-r--r--src/plugins/cppeditor/testcases/move-class/header-only/header-only.pro_expected3
-rw-r--r--src/plugins/cppeditor/testcases/move-class/header-only/theclass.h_expected10
-rw-r--r--src/plugins/cppeditor/testcases/move-class/header-only/theheader.h7
-rw-r--r--src/plugins/cppeditor/testcases/move-class/header-only/theheader.h_expected7
-rw-r--r--src/plugins/cppeditor/testcases/move-class/header-only/thesource.cpp3
-rw-r--r--src/plugins/cppeditor/testcases/move-class/header-only/thesource.cpp_expected3
-rw-r--r--src/plugins/cppeditor/testcases/move-class/match1/TheClass.h2
-rw-r--r--src/plugins/cppeditor/testcases/move-class/match1/match1.pro1
-rw-r--r--src/plugins/cppeditor/testcases/move-class/match2/match2.pro1
-rw-r--r--src/plugins/cppeditor/testcases/move-class/match2/theclass.h2
-rw-r--r--src/plugins/cppeditor/testcases/move-class/match3/match3.pro1
-rw-r--r--src/plugins/cppeditor/testcases/move-class/match3/the_class.h2
-rw-r--r--src/plugins/cppeditor/testcases/move-class/nested/main.cpp6
-rw-r--r--src/plugins/cppeditor/testcases/move-class/nested/nested.pro1
-rw-r--r--src/plugins/cppeditor/testcases/move-class/single/single.pro1
-rw-r--r--src/plugins/cppeditor/testcases/move-class/single/theheader.h2
-rw-r--r--src/plugins/cppeditor/testcases/move-class/template/template.pro1
-rw-r--r--src/plugins/cppeditor/testcases/move-class/template/template.pro_expected2
-rw-r--r--src/plugins/cppeditor/testcases/move-class/template/theclass.h_expected11
-rw-r--r--src/plugins/cppeditor/testcases/move-class/template/theheader.h7
-rw-r--r--src/plugins/cppeditor/testcases/move-class/template/theheader.h_expected6
-rw-r--r--src/plugins/cppeditor/testcases/reorder-member-impls/already-sorted/already-sorted.pro1
-rw-r--r--src/plugins/cppeditor/testcases/reorder-member-impls/already-sorted/header.h9
-rw-r--r--src/plugins/cppeditor/testcases/reorder-member-impls/already-sorted/header.h_expected9
-rw-r--r--src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/different-locations.pro2
-rw-r--r--src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/header.h15
-rw-r--r--src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/header.h_expected15
-rw-r--r--src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/impl1.cpp5
-rw-r--r--src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/impl1.cpp_expected5
-rw-r--r--src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/impl2.cpp6
-rw-r--r--src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/impl2.cpp_expected6
-rw-r--r--src/plugins/cppeditor/testcases/reorder-member-impls/no-out-of-line/header.h5
-rw-r--r--src/plugins/cppeditor/testcases/reorder-member-impls/no-out-of-line/header.h_expected5
-rw-r--r--src/plugins/cppeditor/testcases/reorder-member-impls/no-out-of-line/no-out-of-line.pro1
-rw-r--r--src/plugins/cppeditor/testcases/reorder-member-impls/templates/header.h10
-rw-r--r--src/plugins/cppeditor/testcases/reorder-member-impls/templates/header.h_expected10
-rw-r--r--src/plugins/cppeditor/testcases/reorder-member-impls/templates/templates.pro1
54 files changed, 379 insertions, 0 deletions
diff --git a/src/plugins/cppeditor/testcases/move-class/complex/complex.pro b/src/plugins/cppeditor/testcases/move-class/complex/complex.pro
new file mode 100644
index 0000000000..efdac1a69a
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/complex/complex.pro
@@ -0,0 +1,2 @@
+HEADERS = theheader.h
+SOURCES = thesource.cpp main.cpp
diff --git a/src/plugins/cppeditor/testcases/move-class/complex/complex.pro_expected b/src/plugins/cppeditor/testcases/move-class/complex/complex.pro_expected
new file mode 100644
index 0000000000..9a7a013363
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/complex/complex.pro_expected
@@ -0,0 +1,4 @@
+HEADERS = theheader.h \
+ theclass.h
+SOURCES = thesource.cpp main.cpp \
+ theclass.cpp
diff --git a/src/plugins/cppeditor/testcases/move-class/complex/main.cpp b/src/plugins/cppeditor/testcases/move-class/complex/main.cpp
new file mode 100644
index 0000000000..2934727d74
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/complex/main.cpp
@@ -0,0 +1,11 @@
+#include "theheader.h"
+
+namespace Project {
+namespace Internal {
+bool TheClass::needsDefinition = true;
+}
+}
+
+int main()
+{
+}
diff --git a/src/plugins/cppeditor/testcases/move-class/complex/main.cpp_expected b/src/plugins/cppeditor/testcases/move-class/complex/main.cpp_expected
new file mode 100644
index 0000000000..10bdcd280a
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/complex/main.cpp_expected
@@ -0,0 +1,11 @@
+#include "theheader.h"
+
+namespace Project {
+namespace Internal {
+
+}
+}
+
+int main()
+{
+}
diff --git a/src/plugins/cppeditor/testcases/move-class/complex/theclass.cpp_expected b/src/plugins/cppeditor/testcases/move-class/complex/theclass.cpp_expected
new file mode 100644
index 0000000000..5cb8bbb375
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/complex/theclass.cpp_expected
@@ -0,0 +1,20 @@
+
+#include "theclass.h"
+
+namespace Project {
+namespace Internal {
+
+bool TheClass::needsDefinition = true;
+
+class TheClass::Private
+{
+ void func();
+ int m_member = 0;
+};
+
+void TheClass::defined() {}
+
+void TheClass::Private::func() {}
+
+} // namespace Internal
+} // namespace Project
diff --git a/src/plugins/cppeditor/testcases/move-class/complex/theclass.h_expected b/src/plugins/cppeditor/testcases/move-class/complex/theclass.h_expected
new file mode 100644
index 0000000000..c7db776d27
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/complex/theclass.h_expected
@@ -0,0 +1,29 @@
+#ifndef PROJECT_INTERNAL_THECLASS_H
+#define PROJECT_INTERNAL_THECLASS_H
+
+namespace Project {
+namespace Internal {
+
+class TheClass
+{
+public:
+ TheClass() = default;
+
+ void defined();
+ void undefined();
+
+ template<typename T> T defaultValue() const;
+private:
+ class Private;
+ class Undefined;
+ static inline bool doesNotNeedDefinition = true;
+ static bool needsDefinition;
+ int m_value = 0;
+};
+
+template<typename T> T TheClass::defaultValue() const { return T(); }
+
+} // namespace Internal
+} // namespace Project
+
+#endif // PROJECT_INTERNAL_THECLASS_H
diff --git a/src/plugins/cppeditor/testcases/move-class/complex/theheader.h b/src/plugins/cppeditor/testcases/move-class/complex/theheader.h
new file mode 100644
index 0000000000..93f0d47a81
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/complex/theheader.h
@@ -0,0 +1,30 @@
+#ifndef THE_HEADER_H
+#define THE_HEADER_H
+
+namespace Project {
+namespace Internal {
+
+class SomeClass {};
+class TheClass
+{
+public:
+ TheClass() = default;
+
+ void defined();
+ void undefined();
+
+ template<typename T> T defaultValue() const;
+private:
+ class Private;
+ class Undefined;
+ static inline bool doesNotNeedDefinition = true;
+ static bool needsDefinition;
+ int m_value = 0;
+};
+
+template<typename T> T TheClass::defaultValue() const { return T(); }
+
+}
+}
+
+#endif
diff --git a/src/plugins/cppeditor/testcases/move-class/complex/theheader.h_expected b/src/plugins/cppeditor/testcases/move-class/complex/theheader.h_expected
new file mode 100644
index 0000000000..65bf2ec7f4
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/complex/theheader.h_expected
@@ -0,0 +1,18 @@
+#ifndef THE_HEADER_H
+#define THE_HEADER_H
+
+#include "theclass.h"
+
+
+namespace Project {
+namespace Internal {
+
+class SomeClass {};
+
+
+
+
+}
+}
+
+#endif
diff --git a/src/plugins/cppeditor/testcases/move-class/complex/thesource.cpp b/src/plugins/cppeditor/testcases/move-class/complex/thesource.cpp
new file mode 100644
index 0000000000..645b6a4b13
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/complex/thesource.cpp
@@ -0,0 +1,19 @@
+#include "theheader.h"
+
+namespace Project {
+namespace Internal {
+
+static void someFunction() {}
+
+class TheClass::Private
+{
+ void func();
+ int m_member = 0;
+};
+
+void TheClass::defined() {}
+
+void TheClass::Private::func() {}
+
+}
+}
diff --git a/src/plugins/cppeditor/testcases/move-class/complex/thesource.cpp_expected b/src/plugins/cppeditor/testcases/move-class/complex/thesource.cpp_expected
new file mode 100644
index 0000000000..d84f180808
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/complex/thesource.cpp_expected
@@ -0,0 +1,15 @@
+#include "theheader.h"
+
+namespace Project {
+namespace Internal {
+
+static void someFunction() {}
+
+
+
+
+
+
+
+}
+}
diff --git a/src/plugins/cppeditor/testcases/move-class/decl-in-source/decl-in-source.pro b/src/plugins/cppeditor/testcases/move-class/decl-in-source/decl-in-source.pro
new file mode 100644
index 0000000000..d527c86ef3
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/decl-in-source/decl-in-source.pro
@@ -0,0 +1,2 @@
+HEADERS = theheader.h
+SOURCES = thesource.cpp
diff --git a/src/plugins/cppeditor/testcases/move-class/decl-in-source/decl-in-source.pro_expected b/src/plugins/cppeditor/testcases/move-class/decl-in-source/decl-in-source.pro_expected
new file mode 100644
index 0000000000..969d1fdb80
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/decl-in-source/decl-in-source.pro_expected
@@ -0,0 +1,3 @@
+HEADERS = theheader.h \
+ theclass.h
+SOURCES = thesource.cpp
diff --git a/src/plugins/cppeditor/testcases/move-class/decl-in-source/theclass.h_expected b/src/plugins/cppeditor/testcases/move-class/decl-in-source/theclass.h_expected
new file mode 100644
index 0000000000..4af91c47e3
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/decl-in-source/theclass.h_expected
@@ -0,0 +1,11 @@
+#ifndef THECLASS_H
+#define THECLASS_H
+
+class TheClass
+{
+ void func();
+};
+
+void TheClass::func() {}
+
+#endif // THECLASS_H
diff --git a/src/plugins/cppeditor/testcases/move-class/decl-in-source/theheader.h b/src/plugins/cppeditor/testcases/move-class/decl-in-source/theheader.h
new file mode 100644
index 0000000000..9c0f94351f
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/decl-in-source/theheader.h
@@ -0,0 +1,4 @@
+class SomeClass
+{
+ void func();
+};
diff --git a/src/plugins/cppeditor/testcases/move-class/decl-in-source/thesource.cpp b/src/plugins/cppeditor/testcases/move-class/decl-in-source/thesource.cpp
new file mode 100644
index 0000000000..79a7651309
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/decl-in-source/thesource.cpp
@@ -0,0 +1,8 @@
+#include "theheader.h"
+
+class TheClass
+{
+ void func();
+};
+void SomeClass::func() {}
+void TheClass::func() {}
diff --git a/src/plugins/cppeditor/testcases/move-class/decl-in-source/thesource.cpp_expected b/src/plugins/cppeditor/testcases/move-class/decl-in-source/thesource.cpp_expected
new file mode 100644
index 0000000000..e26225d719
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/decl-in-source/thesource.cpp_expected
@@ -0,0 +1,6 @@
+#include "theclass.h"
+#include "theheader.h"
+
+
+void SomeClass::func() {}
+
diff --git a/src/plugins/cppeditor/testcases/move-class/header-only/header-only.pro b/src/plugins/cppeditor/testcases/move-class/header-only/header-only.pro
new file mode 100644
index 0000000000..d527c86ef3
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/header-only/header-only.pro
@@ -0,0 +1,2 @@
+HEADERS = theheader.h
+SOURCES = thesource.cpp
diff --git a/src/plugins/cppeditor/testcases/move-class/header-only/header-only.pro_expected b/src/plugins/cppeditor/testcases/move-class/header-only/header-only.pro_expected
new file mode 100644
index 0000000000..969d1fdb80
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/header-only/header-only.pro_expected
@@ -0,0 +1,3 @@
+HEADERS = theheader.h \
+ theclass.h
+SOURCES = thesource.cpp
diff --git a/src/plugins/cppeditor/testcases/move-class/header-only/theclass.h_expected b/src/plugins/cppeditor/testcases/move-class/header-only/theclass.h_expected
new file mode 100644
index 0000000000..9b1f655f3f
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/header-only/theclass.h_expected
@@ -0,0 +1,10 @@
+#ifndef THECLASS_H
+#define THECLASS_H
+
+class TheClass {
+ void func();
+};
+
+void TheClass::func() {}
+
+#endif // THECLASS_H
diff --git a/src/plugins/cppeditor/testcases/move-class/header-only/theheader.h b/src/plugins/cppeditor/testcases/move-class/header-only/theheader.h
new file mode 100644
index 0000000000..131a6d42a6
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/header-only/theheader.h
@@ -0,0 +1,7 @@
+class SomeClass {
+ void func();
+};
+class TheClass {
+ void func();
+};
+void TheClass::func() {}
diff --git a/src/plugins/cppeditor/testcases/move-class/header-only/theheader.h_expected b/src/plugins/cppeditor/testcases/move-class/header-only/theheader.h_expected
new file mode 100644
index 0000000000..1cf9e1d06c
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/header-only/theheader.h_expected
@@ -0,0 +1,7 @@
+#include "theclass.h"
+
+class SomeClass {
+ void func();
+};
+
+
diff --git a/src/plugins/cppeditor/testcases/move-class/header-only/thesource.cpp b/src/plugins/cppeditor/testcases/move-class/header-only/thesource.cpp
new file mode 100644
index 0000000000..d01e0845ab
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/header-only/thesource.cpp
@@ -0,0 +1,3 @@
+#include "theheader.h"
+
+void SomeClass::func() {}
diff --git a/src/plugins/cppeditor/testcases/move-class/header-only/thesource.cpp_expected b/src/plugins/cppeditor/testcases/move-class/header-only/thesource.cpp_expected
new file mode 100644
index 0000000000..d01e0845ab
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/header-only/thesource.cpp_expected
@@ -0,0 +1,3 @@
+#include "theheader.h"
+
+void SomeClass::func() {}
diff --git a/src/plugins/cppeditor/testcases/move-class/match1/TheClass.h b/src/plugins/cppeditor/testcases/move-class/match1/TheClass.h
new file mode 100644
index 0000000000..11b0cf15d1
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/match1/TheClass.h
@@ -0,0 +1,2 @@
+class SomeClass {};
+class TheClass {};
diff --git a/src/plugins/cppeditor/testcases/move-class/match1/match1.pro b/src/plugins/cppeditor/testcases/move-class/match1/match1.pro
new file mode 100644
index 0000000000..72ccc46616
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/match1/match1.pro
@@ -0,0 +1 @@
+HEADERS = TheClass.h
diff --git a/src/plugins/cppeditor/testcases/move-class/match2/match2.pro b/src/plugins/cppeditor/testcases/move-class/match2/match2.pro
new file mode 100644
index 0000000000..6f982e4f16
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/match2/match2.pro
@@ -0,0 +1 @@
+HEADERS = theclass.h
diff --git a/src/plugins/cppeditor/testcases/move-class/match2/theclass.h b/src/plugins/cppeditor/testcases/move-class/match2/theclass.h
new file mode 100644
index 0000000000..11b0cf15d1
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/match2/theclass.h
@@ -0,0 +1,2 @@
+class SomeClass {};
+class TheClass {};
diff --git a/src/plugins/cppeditor/testcases/move-class/match3/match3.pro b/src/plugins/cppeditor/testcases/move-class/match3/match3.pro
new file mode 100644
index 0000000000..850a113845
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/match3/match3.pro
@@ -0,0 +1 @@
+HEADERS = the_class.h
diff --git a/src/plugins/cppeditor/testcases/move-class/match3/the_class.h b/src/plugins/cppeditor/testcases/move-class/match3/the_class.h
new file mode 100644
index 0000000000..11b0cf15d1
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/match3/the_class.h
@@ -0,0 +1,2 @@
+class SomeClass {};
+class TheClass {};
diff --git a/src/plugins/cppeditor/testcases/move-class/nested/main.cpp b/src/plugins/cppeditor/testcases/move-class/nested/main.cpp
new file mode 100644
index 0000000000..73fd1620fa
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/nested/main.cpp
@@ -0,0 +1,6 @@
+class SomeClass {};
+class Outer {
+ class Inner {};
+};
+
+int main() {}
diff --git a/src/plugins/cppeditor/testcases/move-class/nested/nested.pro b/src/plugins/cppeditor/testcases/move-class/nested/nested.pro
new file mode 100644
index 0000000000..bba41b9c12
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/nested/nested.pro
@@ -0,0 +1 @@
+SOURCES = main.cpp
diff --git a/src/plugins/cppeditor/testcases/move-class/single/single.pro b/src/plugins/cppeditor/testcases/move-class/single/single.pro
new file mode 100644
index 0000000000..77db8b92e4
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/single/single.pro
@@ -0,0 +1 @@
+HEADERS = theheader.h
diff --git a/src/plugins/cppeditor/testcases/move-class/single/theheader.h b/src/plugins/cppeditor/testcases/move-class/single/theheader.h
new file mode 100644
index 0000000000..5f7cd96730
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/single/theheader.h
@@ -0,0 +1,2 @@
+class Private;
+class TheClass {};
diff --git a/src/plugins/cppeditor/testcases/move-class/template/template.pro b/src/plugins/cppeditor/testcases/move-class/template/template.pro
new file mode 100644
index 0000000000..77db8b92e4
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/template/template.pro
@@ -0,0 +1 @@
+HEADERS = theheader.h
diff --git a/src/plugins/cppeditor/testcases/move-class/template/template.pro_expected b/src/plugins/cppeditor/testcases/move-class/template/template.pro_expected
new file mode 100644
index 0000000000..0ed81f0008
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/template/template.pro_expected
@@ -0,0 +1,2 @@
+HEADERS = theheader.h \
+ theclass.h
diff --git a/src/plugins/cppeditor/testcases/move-class/template/theclass.h_expected b/src/plugins/cppeditor/testcases/move-class/template/theclass.h_expected
new file mode 100644
index 0000000000..f9681cc796
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/template/theclass.h_expected
@@ -0,0 +1,11 @@
+#ifndef THECLASS_H
+#define THECLASS_H
+
+template<typename T> class TheClass
+{
+ T defaultValue() const;
+};
+
+template<typename T> inline T TheClass<T>::defaultValue() const { return T(); }
+
+#endif // THECLASS_H
diff --git a/src/plugins/cppeditor/testcases/move-class/template/theheader.h b/src/plugins/cppeditor/testcases/move-class/template/theheader.h
new file mode 100644
index 0000000000..58f7a07372
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/template/theheader.h
@@ -0,0 +1,7 @@
+enum SomeEnum { E };
+template<typename T> class TheClass
+{
+ T defaultValue() const;
+};
+
+template<typename T> inline T TheClass<T>::defaultValue() const { return T(); }
diff --git a/src/plugins/cppeditor/testcases/move-class/template/theheader.h_expected b/src/plugins/cppeditor/testcases/move-class/template/theheader.h_expected
new file mode 100644
index 0000000000..20087c3199
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/move-class/template/theheader.h_expected
@@ -0,0 +1,6 @@
+#include "theclass.h"
+
+enum SomeEnum { E };
+
+
+
diff --git a/src/plugins/cppeditor/testcases/reorder-member-impls/already-sorted/already-sorted.pro b/src/plugins/cppeditor/testcases/reorder-member-impls/already-sorted/already-sorted.pro
new file mode 100644
index 0000000000..7051801269
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/reorder-member-impls/already-sorted/already-sorted.pro
@@ -0,0 +1 @@
+HEADERS = header.h
diff --git a/src/plugins/cppeditor/testcases/reorder-member-impls/already-sorted/header.h b/src/plugins/cppeditor/testcases/reorder-member-impls/already-sorted/header.h
new file mode 100644
index 0000000000..c0d7e0caa7
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/reorder-member-impls/already-sorted/header.h
@@ -0,0 +1,9 @@
+struct S {
+ void firstFunction();
+ void secondFunction();
+ void thirdFunction();
+};
+
+void S::firstFunction() {}
+void S::secondFunction() {}
+void S::thirdFunction() {}
diff --git a/src/plugins/cppeditor/testcases/reorder-member-impls/already-sorted/header.h_expected b/src/plugins/cppeditor/testcases/reorder-member-impls/already-sorted/header.h_expected
new file mode 100644
index 0000000000..c0d7e0caa7
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/reorder-member-impls/already-sorted/header.h_expected
@@ -0,0 +1,9 @@
+struct S {
+ void firstFunction();
+ void secondFunction();
+ void thirdFunction();
+};
+
+void S::firstFunction() {}
+void S::secondFunction() {}
+void S::thirdFunction() {}
diff --git a/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/different-locations.pro b/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/different-locations.pro
new file mode 100644
index 0000000000..a8dd832020
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/different-locations.pro
@@ -0,0 +1,2 @@
+SOURCES = impl1.cpp impl2.cpp
+HEADERS = header.h
diff --git a/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/header.h b/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/header.h
new file mode 100644
index 0000000000..15a428eb7c
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/header.h
@@ -0,0 +1,15 @@
+struct S {
+ void firstFunction();
+ void secondFunction();
+ void thirdFunction() {}
+ void fourthFunction();
+ void fifthFunction();
+ void sixthFunction();
+ void seventhFunction();
+ void eighthFunction();
+ void ninthFunction();
+ void tenthFunction();
+};
+
+void S::tenthFunction() {}
+void S::fourthFunction() {}
diff --git a/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/header.h_expected b/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/header.h_expected
new file mode 100644
index 0000000000..eeec93f300
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/header.h_expected
@@ -0,0 +1,15 @@
+struct S {
+ void firstFunction();
+ void secondFunction();
+ void thirdFunction() {}
+ void fourthFunction();
+ void fifthFunction();
+ void sixthFunction();
+ void seventhFunction();
+ void eighthFunction();
+ void ninthFunction();
+ void tenthFunction();
+};
+
+void S::fourthFunction() {}
+void S::tenthFunction() {}
diff --git a/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/impl1.cpp b/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/impl1.cpp
new file mode 100644
index 0000000000..816fef1779
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/impl1.cpp
@@ -0,0 +1,5 @@
+#include "header.h"
+
+void S::ninthFunction() {}
+void S::firstFunction() {}
+void S::secondFunction() {}
diff --git a/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/impl1.cpp_expected b/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/impl1.cpp_expected
new file mode 100644
index 0000000000..24d0f3a212
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/impl1.cpp_expected
@@ -0,0 +1,5 @@
+#include "header.h"
+
+void S::firstFunction() {}
+void S::secondFunction() {}
+void S::ninthFunction() {}
diff --git a/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/impl2.cpp b/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/impl2.cpp
new file mode 100644
index 0000000000..f1040e089e
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/impl2.cpp
@@ -0,0 +1,6 @@
+#include "header.h"
+
+void S::eighthFunction() {}
+void S::seventhFunction() {}
+void S::sixthFunction() {}
+void S::fifthFunction() {}
diff --git a/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/impl2.cpp_expected b/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/impl2.cpp_expected
new file mode 100644
index 0000000000..2b65df96a5
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/reorder-member-impls/different-locations/impl2.cpp_expected
@@ -0,0 +1,6 @@
+#include "header.h"
+
+void S::fifthFunction() {}
+void S::sixthFunction() {}
+void S::seventhFunction() {}
+void S::eighthFunction() {}
diff --git a/src/plugins/cppeditor/testcases/reorder-member-impls/no-out-of-line/header.h b/src/plugins/cppeditor/testcases/reorder-member-impls/no-out-of-line/header.h
new file mode 100644
index 0000000000..cff8945127
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/reorder-member-impls/no-out-of-line/header.h
@@ -0,0 +1,5 @@
+struct S {
+ void firstFunction() {}
+ void secondFunction();
+ void thirdFunction() {}
+};
diff --git a/src/plugins/cppeditor/testcases/reorder-member-impls/no-out-of-line/header.h_expected b/src/plugins/cppeditor/testcases/reorder-member-impls/no-out-of-line/header.h_expected
new file mode 100644
index 0000000000..cff8945127
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/reorder-member-impls/no-out-of-line/header.h_expected
@@ -0,0 +1,5 @@
+struct S {
+ void firstFunction() {}
+ void secondFunction();
+ void thirdFunction() {}
+};
diff --git a/src/plugins/cppeditor/testcases/reorder-member-impls/no-out-of-line/no-out-of-line.pro b/src/plugins/cppeditor/testcases/reorder-member-impls/no-out-of-line/no-out-of-line.pro
new file mode 100644
index 0000000000..7051801269
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/reorder-member-impls/no-out-of-line/no-out-of-line.pro
@@ -0,0 +1 @@
+HEADERS = header.h
diff --git a/src/plugins/cppeditor/testcases/reorder-member-impls/templates/header.h b/src/plugins/cppeditor/testcases/reorder-member-impls/templates/header.h
new file mode 100644
index 0000000000..08b33a51d9
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/reorder-member-impls/templates/header.h
@@ -0,0 +1,10 @@
+template <typename T> struct S {
+ void firstFunction();
+ template<typename U> void secondFunction(U);
+ template<typename U> void irrelevantFunction(U) {}
+ void thirdFunction();
+};
+
+template<typename T> template<typename U> void S<T>::secondFunction(U) {}
+template<typename T> void S<T>::thirdFunction() {}
+template<typename T> void S<T>::firstFunction() {}
diff --git a/src/plugins/cppeditor/testcases/reorder-member-impls/templates/header.h_expected b/src/plugins/cppeditor/testcases/reorder-member-impls/templates/header.h_expected
new file mode 100644
index 0000000000..f182bbe62d
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/reorder-member-impls/templates/header.h_expected
@@ -0,0 +1,10 @@
+template <typename T> struct S {
+ void firstFunction();
+ template<typename U> void secondFunction(U);
+ template<typename U> void irrelevantFunction(U) {}
+ void thirdFunction();
+};
+
+template<typename T> void S<T>::firstFunction() {}
+template<typename T> template<typename U> void S<T>::secondFunction(U) {}
+template<typename T> void S<T>::thirdFunction() {}
diff --git a/src/plugins/cppeditor/testcases/reorder-member-impls/templates/templates.pro b/src/plugins/cppeditor/testcases/reorder-member-impls/templates/templates.pro
new file mode 100644
index 0000000000..7051801269
--- /dev/null
+++ b/src/plugins/cppeditor/testcases/reorder-member-impls/templates/templates.pro
@@ -0,0 +1 @@
+HEADERS = header.h