diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2020-07-27 17:11:39 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2020-07-29 10:29:45 +0000 |
commit | 4e9951af3a5adb3af2fc1af32c59e943b581acd8 (patch) | |
tree | 3eabc6ce5076eee34b15fa0920f6309622f4f848 /src/plugins/cppeditor/cppinsertvirtualmethods.cpp | |
parent | c467ae6114a9805ca61730a364afdfd1fd01affb (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.cpp | 12 |
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" ) << _(); |