From 4e9951af3a5adb3af2fc1af32c59e943b581acd8 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Mon, 27 Jul 2020 17:11:39 +0200 Subject: [PATCH] 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 --- src/plugins/cppeditor/cppinsertvirtualmethods.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/plugins/cppeditor/cppinsertvirtualmethods.cpp b/src/plugins/cppeditor/cppinsertvirtualmethods.cpp index 1985203f47c..8de8e3013c5 100644 --- a/src/plugins/cppeditor/cppinsertvirtualmethods.cpp +++ b/src/plugins/cppeditor/cppinsertvirtualmethods.cpp @@ -619,10 +619,12 @@ class InsertVirtualMethodsOp : public CppQuickFixOperation // 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" ) << _();