CppEditor: Check only pure virtual functions by default

Task-number: QTCREATORBUG-10154
Change-Id: Iec1b895e3f06d9d6ae36f19f6c8048c78faac514
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
This commit is contained in:
Orgad Shaneh
2013-11-26 23:16:52 +02:00
committed by Orgad Shaneh
parent 07a1cddec2
commit 8da53e6587
3 changed files with 242 additions and 105 deletions

View File

@@ -3571,14 +3571,14 @@ void CppEditorPlugin::test_quickfix_InsertVirtualMethods_data()
<< InsertVirtualMethodsDialog::ModeOnlyDeclarations << true << _(
"class BaseA {\n"
"public:\n"
" virtual int virtualFuncA();\n"
" virtual int virtualFuncA() = 0;\n"
"};\n\n"
"class Derived : public Bas@eA {\n"
"};"
) << _(
"class BaseA {\n"
"public:\n"
" virtual int virtualFuncA();\n"
" virtual int virtualFuncA() = 0;\n"
"};\n\n"
"class Derived : public BaseA {\n"
"\n"
@@ -3593,14 +3593,14 @@ void CppEditorPlugin::test_quickfix_InsertVirtualMethods_data()
<< InsertVirtualMethodsDialog::ModeOnlyDeclarations << false << _(
"class BaseA {\n"
"public:\n"
" virtual int virtualFuncA();\n"
" virtual int virtualFuncA() = 0;\n"
"};\n\n"
"class Derived : public Bas@eA {\n"
"};"
) << _(
"class BaseA {\n"
"public:\n"
" virtual int virtualFuncA();\n"
" virtual int virtualFuncA() = 0;\n"
"};\n\n"
"class Derived : public BaseA {\n"
"\n"
@@ -3615,38 +3615,38 @@ void CppEditorPlugin::test_quickfix_InsertVirtualMethods_data()
<< InsertVirtualMethodsDialog::ModeOnlyDeclarations << true << _(
"class BaseA {\n"
"public:\n"
" virtual int a();\n"
" virtual int a() = 0;\n"
"protected:\n"
" virtual int b();\n"
" virtual int b() = 0;\n"
"private:\n"
" virtual int c();\n"
" virtual int c() = 0;\n"
"public slots:\n"
" virtual int d();\n"
" virtual int d() = 0;\n"
"protected slots:\n"
" virtual int e();\n"
" virtual int e() = 0;\n"
"private slots:\n"
" virtual int f();\n"
" virtual int f() = 0;\n"
"signals:\n"
" virtual int g();\n"
" virtual int g() = 0;\n"
"};\n\n"
"class Der@ived : public BaseA {\n"
"};"
) << _(
"class BaseA {\n"
"public:\n"
" virtual int a();\n"
" virtual int a() = 0;\n"
"protected:\n"
" virtual int b();\n"
" virtual int b() = 0;\n"
"private:\n"
" virtual int c();\n"
" virtual int c() = 0;\n"
"public slots:\n"
" virtual int d();\n"
" virtual int d() = 0;\n"
"protected slots:\n"
" virtual int e();\n"
" virtual int e() = 0;\n"
"private slots:\n"
" virtual int f();\n"
" virtual int f() = 0;\n"
"signals:\n"
" virtual int g();\n"
" virtual int g() = 0;\n"
"};\n\n"
"class Derived : public BaseA {\n"
"\n"
@@ -3673,56 +3673,57 @@ void CppEditorPlugin::test_quickfix_InsertVirtualMethods_data()
<< InsertVirtualMethodsDialog::ModeOnlyDeclarations << true << _(
"class BaseA {\n"
"public:\n"
" virtual int a();\n"
" virtual int a() = 0;\n"
"};\n\n"
"class BaseB : public BaseA {\n"
"public:\n"
" virtual int b();\n"
" virtual int b() = 0;\n"
"};\n\n"
"class Der@ived : public BaseB {\n"
"};"
) << _(
"class BaseA {\n"
"public:\n"
" virtual int a();\n"
" virtual int a() = 0;\n"
"};\n\n"
"class BaseB : public BaseA {\n"
"public:\n"
" virtual int b();\n"
" virtual int b() = 0;\n"
"};\n\n"
"class Der@ived : public BaseB {\n"
"\n"
" // BaseB interface\n"
"public:\n"
" virtual int b();\n"
"\n"
" // BaseA interface\n"
"public:\n"
" virtual int a();\n"
"\n"
" // BaseB interface\n"
"public:\n"
" virtual int b();\n"
"};\n"
);
// Check: Do not insert reimplemented functions twice.
QTest::newRow("SuperclassOverride")
<< InsertVirtualMethodsDialog::ModeOnlyDeclarations << true << _(
"class BaseA {\n"
"public:\n"
" virtual int a();\n"
" virtual int a() = 0;\n"
"};\n\n"
"class BaseB : public BaseA {\n"
"public:\n"
" virtual int a();\n"
" virtual int a() = 0;\n"
"};\n\n"
"class Der@ived : public BaseB {\n"
"};"
) << _(
"class BaseA {\n"
"public:\n"
" virtual int a();\n"
" virtual int a() = 0;\n"
"};\n\n"
"class BaseB : public BaseA {\n"
"public:\n"
" virtual int a();\n"
" virtual int a() = 0;\n"
"};\n\n"
"class Der@ived : public BaseB {\n"
"\n"
@@ -3783,14 +3784,14 @@ void CppEditorPlugin::test_quickfix_InsertVirtualMethods_data()
<< InsertVirtualMethodsDialog::ModeInsideClass << true << _(
"class BaseA {\n"
"public:\n"
" virtual int virtualFuncA();\n"
" virtual int virtualFuncA() = 0;\n"
"};\n\n"
"class Derived : public Bas@eA {\n"
"};"
) << _(
"class BaseA {\n"
"public:\n"
" virtual int virtualFuncA();\n"
" virtual int virtualFuncA() = 0;\n"
"};\n\n"
"class Derived : public BaseA {\n"
"\n"
@@ -3807,14 +3808,14 @@ void CppEditorPlugin::test_quickfix_InsertVirtualMethods_data()
<< InsertVirtualMethodsDialog::ModeOutsideClass << true << _(
"class BaseA {\n"
"public:\n"
" virtual int virtualFuncA();\n"
" virtual int virtualFuncA() = 0;\n"
"};\n\n"
"class Derived : public Bas@eA {\n"
"};"
) << _(
"class BaseA {\n"
"public:\n"
" virtual int virtualFuncA();\n"
" virtual int virtualFuncA() = 0;\n"
"};\n\n"
"class Derived : public BaseA {\n"
"\n"
@@ -3836,7 +3837,7 @@ void CppEditorPlugin::test_quickfix_InsertVirtualMethods_data()
"};\n\n"
"class Derived : public Bas@eA {\n"
"public:\n"
" virtual int virtualFuncA();\n"
" virtual int virtualFuncA() = 0;\n"
"};"
) << _(
"class BaseA {\n"
@@ -3845,9 +3846,135 @@ void CppEditorPlugin::test_quickfix_InsertVirtualMethods_data()
"};\n\n"
"class Derived : public Bas@eA {\n"
"public:\n"
" virtual int virtualFuncA() = 0;\n"
"};\n"
);
// Check: One pure, one not
QTest::newRow("Some_Pure")
<< InsertVirtualMethodsDialog::ModeOnlyDeclarations << true << _(
"class BaseA {\n"
"public:\n"
" virtual int virtualFuncA() = 0;\n"
" virtual int virtualFuncB();\n"
"};\n\n"
"class Derived : public Bas@eA {\n"
"};"
) << _(
"class BaseA {\n"
"public:\n"
" virtual int virtualFuncA() = 0;\n"
" virtual int virtualFuncB();\n"
"};\n\n"
"class Derived : public BaseA {\n"
"\n"
" // BaseA interface\n"
"public:\n"
" virtual int virtualFuncA();\n"
"};\n"
);
// Check: Pure function in derived class
QTest::newRow("Pure_in_Derived")
<< InsertVirtualMethodsDialog::ModeOnlyDeclarations << true << _(
"class BaseA {\n"
"public:\n"
" virtual int a();\n"
"};\n\n"
"class BaseB : public BaseA {\n"
"public:\n"
" virtual int a() = 0;\n"
"};\n\n"
"class Der@ived : public BaseB {\n"
"};"
) << _(
"class BaseA {\n"
"public:\n"
" virtual int a();\n"
"};\n\n"
"class BaseB : public BaseA {\n"
"public:\n"
" virtual int a() = 0;\n"
"};\n\n"
"class Der@ived : public BaseB {\n"
"\n"
" // BaseA interface\n"
"public:\n"
" virtual int a();\n"
"};\n"
);
// Check: One pure function in base class, one in derived
QTest::newRow("Pure_in_Base_And_Derived")
<< InsertVirtualMethodsDialog::ModeOnlyDeclarations << true << _(
"class BaseA {\n"
"public:\n"
" virtual int a() = 0;\n"
" virtual int b();\n"
"};\n\n"
"class BaseB : public BaseA {\n"
"public:\n"
" virtual int b() = 0;\n"
"};\n\n"
"class Der@ived : public BaseB {\n"
"};"
) << _(
"class BaseA {\n"
"public:\n"
" virtual int a() = 0;\n"
" virtual int b();\n"
"};\n\n"
"class BaseB : public BaseA {\n"
"public:\n"
" virtual int b() = 0;\n"
"};\n\n"
"class Der@ived : public BaseB {\n"
"\n"
" // BaseA interface\n"
"public:\n"
" virtual int a();\n"
" virtual int b();\n"
"};\n"
);
// Check: One pure function in base class, two in derived
QTest::newRow("Pure_in_Base_And_Derived_2")
<< InsertVirtualMethodsDialog::ModeOnlyDeclarations << true << _(
"class BaseA {\n"
"public:\n"
" virtual int a() = 0;\n"
" virtual int b();\n"
"};\n\n"
"class BaseB : public BaseA {\n"
"public:\n"
" virtual int b() = 0;\n"
" virtual int c() = 0;\n"
"};\n\n"
"class Der@ived : public BaseB {\n"
"};"
) << _(
"class BaseA {\n"
"public:\n"
" virtual int a() = 0;\n"
" virtual int b();\n"
"};\n\n"
"class BaseB : public BaseA {\n"
"public:\n"
" virtual int b() = 0;\n"
" virtual int c() = 0;\n"
"};\n\n"
"class Der@ived : public BaseB {\n"
"\n"
" // BaseA interface\n"
"public:\n"
" virtual int a();\n"
" virtual int b();\n"
"\n"
" // BaseB interface\n"
"public:\n"
" virtual int c();\n"
"};\n"
);
}
void CppEditorPlugin::test_quickfix_InsertVirtualMethods()
@@ -3873,7 +4000,7 @@ void CppEditorPlugin::test_quickfix_InsertVirtualMethods_implementationFile()
original =
"class BaseA {\n"
"public:\n"
" virtual int a();\n"
" virtual int a() = 0;\n"
"};\n\n"
"class Derived : public Bas@eA {\n"
"public:\n"
@@ -3882,7 +4009,7 @@ void CppEditorPlugin::test_quickfix_InsertVirtualMethods_implementationFile()
expected =
"class BaseA {\n"
"public:\n"
" virtual int a();\n"
" virtual int a() = 0;\n"
"};\n\n"
"class Derived : public BaseA {\n"
"public:\n"
@@ -3921,7 +4048,7 @@ void CppEditorPlugin::test_quickfix_InsertVirtualMethods_BaseClassInNamespace()
"namespace BaseNS {\n"
"class Base {\n"
"public:\n"
" virtual BaseEnum a(BaseEnum e);\n"
" virtual BaseEnum a(BaseEnum e) = 0;\n"
"};\n"
"}\n"
"class Deri@ved : public BaseNS::Base {\n"
@@ -3933,7 +4060,7 @@ void CppEditorPlugin::test_quickfix_InsertVirtualMethods_BaseClassInNamespace()
"namespace BaseNS {\n"
"class Base {\n"
"public:\n"
" virtual BaseEnum a(BaseEnum e);\n"
" virtual BaseEnum a(BaseEnum e) = 0;\n"
"};\n"
"}\n"
"class Deri@ved : public BaseNS::Base {\n"