aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cppeditor/cppinsertvirtualmethods.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2020-07-27 17:11:39 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2020-07-29 10:29:45 +0000
commit4e9951af3a5adb3af2fc1af32c59e943b581acd8 (patch)
tree3eabc6ce5076eee34b15fa0920f6309622f4f848 /src/plugins/cppeditor/cppinsertvirtualmethods.cpp
parentc467ae6114a9805ca61730a364afdfd1fd01affb (diff)
CppEditor: Consider operators
... when looking for reimplemented member functions in the "Insert virtual functions of base class" quickfix. Fixes: QTCREATORBUG-12218 Change-Id: I6e37e28ab747a76dcc97df242bd6c6199fbc7e2e Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins/cppeditor/cppinsertvirtualmethods.cpp')
-rw-r--r--src/plugins/cppeditor/cppinsertvirtualmethods.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/plugins/cppeditor/cppinsertvirtualmethods.cpp b/src/plugins/cppeditor/cppinsertvirtualmethods.cpp
index 1985203f47..8de8e3013c 100644
--- a/src/plugins/cppeditor/cppinsertvirtualmethods.cpp
+++ b/src/plugins/cppeditor/cppinsertvirtualmethods.cpp
@@ -619,10 +619,12 @@ public:
// Do not implement existing functions inside target class
bool funcExistsInClass = false;
const Name *funcName = func->name();
- for (Symbol *symbol = m_classAST->symbol->find(funcName->identifier());
- symbol; symbol = symbol->next()) {
- if (!symbol->name()
- || !funcName->identifier()->match(symbol->identifier())) {
+ const OperatorNameId * const opName = funcName->asOperatorNameId();
+ Symbol *symbol = opName ? m_classAST->symbol->find(opName->kind())
+ : m_classAST->symbol->find(funcName->identifier());
+ for (; symbol; symbol = symbol->next()) {
+ if (!opName && (!symbol->name()
+ || !funcName->identifier()->match(symbol->identifier()))) {
continue;
}
if (symbol->type().match(func->type())) {
@@ -1541,10 +1543,12 @@ void CppEditorPlugin::test_quickfix_InsertVirtualMethods_data()
"class BaseA {\n"
"public:\n"
" virtual int virtualFuncA();\n"
+ " virtual operator==(const BaseA &);\n"
"};\n\n"
"class Derived : public Bas@eA {\n"
"public:\n"
" virtual int virtualFuncA() = 0;\n"
+ " virtual operator==(const BaseA &);\n"
"};\n"
) << _();