forked from qt-creator/qt-creator
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:
committed by
Orgad Shaneh
parent
07a1cddec2
commit
8da53e6587
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user