diff --git a/src/plugins/cpptools/builtinindexingsupport.cpp b/src/plugins/cpptools/builtinindexingsupport.cpp index f9d7215edf57cfca5aa76f4ac9214b371f3eb801..faec76d150ed38520e0dc8ed29f6c3b04cf1308e 100644 --- a/src/plugins/cpptools/builtinindexingsupport.cpp +++ b/src/plugins/cpptools/builtinindexingsupport.cpp @@ -119,13 +119,19 @@ public: foreach (const ModelItemInfo &info, modelInfos) { int index = matcher.indexIn(info.symbolName); if (index != -1) { - QString text = info.typeNameRepresentation(); - if (text.isEmpty()) - text = info.symbolName; + QString text = info.symbolName; + QString scope = info.symbolScope; + if (info.type == ModelItemInfo::Method) { + QString name; + info.unqualifiedNameAndScope(info.symbolName, &name, &scope); + text = name + info.symbolType; + } else if (info.type == ModelItemInfo::Declaration){ + text = ModelItemInfo::representDeclaration(info.symbolName, + info.symbolType); + } Find::SearchResultItem item; - item.path = info.symbolScope.split(QLatin1String("::"), - QString::SkipEmptyParts); + item.path = scope.split(QLatin1String("::"), QString::SkipEmptyParts); item.text = text; item.textMarkPos = -1; item.textMarkLength = 0; diff --git a/src/plugins/cpptools/cppcurrentdocumentfilter.cpp b/src/plugins/cpptools/cppcurrentdocumentfilter.cpp index 69a4190d5188d119e8ca5803dd0e58e8099f979e..93b7e5907a04a7143d91801d25150fbaea3b58cc 100644 --- a/src/plugins/cpptools/cppcurrentdocumentfilter.cpp +++ b/src/plugins/cpptools/cppcurrentdocumentfilter.cpp @@ -86,9 +86,11 @@ QList<Locator::FilterEntry> CppCurrentDocumentFilter::matchesFor(QFutureInterfac if (future.isCanceled()) break; - QString matchString = info.typeNameRepresentation(); - if (matchString.isEmpty()) - matchString = info.symbolName; + QString matchString = info.symbolName; + if (info.type == ModelItemInfo::Declaration) + matchString = ModelItemInfo::representDeclaration(info.symbolName, info.symbolType); + else if (info.type == ModelItemInfo::Method) + matchString += info.symbolType; if ((hasWildcard && regexp.exactMatch(matchString)) || (!hasWildcard && matcher.indexIn(matchString) != -1)) diff --git a/src/plugins/cpptools/cppfunctionsfilter.cpp b/src/plugins/cpptools/cppfunctionsfilter.cpp index d9230165a59170fb71c36bb62913e4143f0f85ff..53c94b0f1cefce0a0ec9a9e3f9306bead48484f3 100644 --- a/src/plugins/cpptools/cppfunctionsfilter.cpp +++ b/src/plugins/cpptools/cppfunctionsfilter.cpp @@ -64,4 +64,3 @@ Locator::FilterEntry CppFunctionsFilter::filterEntryFromModelItemInfo(const CppT return filterEntry; } - diff --git a/src/plugins/cpptools/searchsymbols.h b/src/plugins/cpptools/searchsymbols.h index c4e5a25cf879c98b38d9978014d490a7669615f2..e47b78b2cebdf4b95ad7e2d60ff214ed2ebe6f08 100644 --- a/src/plugins/cpptools/searchsymbols.h +++ b/src/plugins/cpptools/searchsymbols.h @@ -106,19 +106,15 @@ struct CPPTOOLS_EXPORT ModelItemInfo } } - QString typeNameRepresentation() const + static QString representDeclaration(const QString &name, const QString &type) { - if (type == ModelItemInfo::Declaration) { - if (!symbolType.isEmpty()) { - const QString padding = symbolType.endsWith(QLatin1Char('*')) - ? QString() - : QString(QLatin1Char(' ')); - return symbolType + padding + symbolName; - } - } else if (type == ModelItemInfo::Method) { - return symbolName + symbolType; - } - return QString(); + if (type.isEmpty()) + return QString(); + + const QString padding = type.endsWith(QLatin1Char('*')) + ? QString() + : QString(QLatin1Char(' ')); + return type + padding + name; } QString shortNativeFilePath() const diff --git a/src/plugins/cpptools/symbolsearcher_test.cpp b/src/plugins/cpptools/symbolsearcher_test.cpp index 5d62fd836e4cb2977601714f19faf4edcb20dad1..c5529b7b4678ee48bc6194601522e5010ee9b80c 100644 --- a/src/plugins/cpptools/symbolsearcher_test.cpp +++ b/src/plugins/cpptools/symbolsearcher_test.cpp @@ -118,7 +118,6 @@ public: = QtConcurrent::run(&SymbolSearcher::runSearch, symbolSearcher); search.waitForFinished(); ResultDataList results = ResultData::fromSearchResultList(search.results()); -// ResultData::printFilterEntries(results); return results; } @@ -198,8 +197,10 @@ void CppToolsPlugin::test_builtinsymbolsearcher_data() << ResultData(_("int V2"), _("MyEnum")) << ResultData(_("MyClass"), _("")) << ResultData(_("MyClass()"), _("MyClass")) - << ResultData(_("function1()"), _("MyClass")) - << ResultData(_("function2(bool, int)"), _("MyClass")) + << ResultData(_("functionDeclaredOnly()"), _("MyClass")) + << ResultData(_("functionDefinedInClass(bool, int)"), _("MyClass")) + << ResultData(_("functionDefinedOutSideClass(char)"), _("MyClass")) + << ResultData(_("functionDefinedOutSideClass(char)"), _("MyClass")) << ResultData(_("int myVariable"), _("MyNamespace")) << ResultData(_("myFunction(bool, int)"), _("MyNamespace")) << ResultData(_("MyEnum"), _("MyNamespace")) @@ -207,8 +208,12 @@ void CppToolsPlugin::test_builtinsymbolsearcher_data() << ResultData(_("int V2"), _("MyNamespace::MyEnum")) << ResultData(_("MyClass"), _("MyNamespace")) << ResultData(_("MyClass()"), _("MyNamespace::MyClass")) - << ResultData(_("function1()"), _("MyNamespace::MyClass")) - << ResultData(_("function2(bool, int)"), _("MyNamespace::MyClass")) + << ResultData(_("functionDeclaredOnly()"), _("MyNamespace::MyClass")) + << ResultData(_("functionDefinedInClass(bool, int)"), _("MyNamespace::MyClass")) + << ResultData(_("functionDefinedOutSideClass(char)"), _("MyNamespace::MyClass")) + << ResultData(_("functionDefinedOutSideClassAndNamespace(float)"), _("MyNamespace::MyClass")) + << ResultData(_("functionDefinedOutSideClass(char)"), _("MyNamespace::MyClass")) + << ResultData(_("functionDefinedOutSideClassAndNamespace(float)"), _("MyNamespace::MyClass")) << ResultData(_("int myVariable"), _("<anonymous namespace>")) << ResultData(_("myFunction(bool, int)"), _("<anonymous namespace>")) << ResultData(_("MyEnum"), _("<anonymous namespace>")) @@ -216,8 +221,12 @@ void CppToolsPlugin::test_builtinsymbolsearcher_data() << ResultData(_("int V2"), _("<anonymous namespace>::MyEnum")) << ResultData(_("MyClass"), _("<anonymous namespace>")) << ResultData(_("MyClass()"), _("<anonymous namespace>::MyClass")) - << ResultData(_("function1()"), _("<anonymous namespace>::MyClass")) - << ResultData(_("function2(bool, int)"), _("<anonymous namespace>::MyClass")) + << ResultData(_("functionDeclaredOnly()"), _("<anonymous namespace>::MyClass")) + << ResultData(_("functionDefinedInClass(bool, int)"), _("<anonymous namespace>::MyClass")) + << ResultData(_("functionDefinedOutSideClass(char)"), _("<anonymous namespace>::MyClass")) + << ResultData(_("functionDefinedOutSideClass(char)"), _("<anonymous namespace>::MyClass")) + << ResultData(_("main()"), _("")) + ); // Check Classes @@ -246,11 +255,15 @@ void CppToolsPlugin::test_builtinsymbolsearcher_data() << searchParameters << (ResultDataList() << ResultData(_("myFunction(bool, int)"), _("")) - << ResultData(_("function2(bool, int)"), _("MyClass")) + << ResultData(_("functionDefinedInClass(bool, int)"), _("MyClass")) + << ResultData(_("functionDefinedOutSideClass(char)"), _("MyClass")) << ResultData(_("myFunction(bool, int)"), _("MyNamespace")) - << ResultData(_("function2(bool, int)"), _("MyNamespace::MyClass")) + << ResultData(_("functionDefinedInClass(bool, int)"), _("MyNamespace::MyClass")) + << ResultData(_("functionDefinedOutSideClass(char)"), _("MyNamespace::MyClass")) + << ResultData(_("functionDefinedOutSideClassAndNamespace(float)"), _("MyNamespace::MyClass")) << ResultData(_("myFunction(bool, int)"), _("<anonymous namespace>")) - << ResultData(_("function2(bool, int)"), _("<anonymous namespace>::MyClass")) + << ResultData(_("functionDefinedInClass(bool, int)"), _("<anonymous namespace>::MyClass")) + << ResultData(_("functionDefinedOutSideClass(char)"), _("<anonymous namespace>::MyClass")) ); // Check Enums diff --git a/tests/cppsymbolsearcher/testdata_basic/file1.cpp b/tests/cppsymbolsearcher/testdata_basic/file1.cpp index 75c772cfb218ba99aa8c995e50f5238d059d3cc0..98a53752377fc54a75508cfff014b125ba76a996 100644 --- a/tests/cppsymbolsearcher/testdata_basic/file1.cpp +++ b/tests/cppsymbolsearcher/testdata_basic/file1.cpp @@ -1,9 +1,13 @@ // Copyright header +#define GENERATE_FUNC void myFunctionGenerated() {} + // // Symbols in a global namespace // +GENERATE_FUNC + int myVariable; int myFunction(bool yesno, int number) {} @@ -14,10 +18,13 @@ class MyClass { public: MyClass() {} - int function1(); - int function2(bool yesno, int number) {} + int functionDeclaredOnly(); + int functionDefinedInClass(bool yesno, int number) {} + int functionDefinedOutSideClass(char c); }; +int MyClass::functionDefinedOutSideClass(char c) {} + // // Symbols in a named namespace // @@ -34,12 +41,18 @@ class MyClass { public: MyClass() {} - int function1(); - int function2(bool yesno, int number) {} + int functionDeclaredOnly(); + int functionDefinedInClass(bool yesno, int number) {} + int functionDefinedOutSideClass(char c); + int functionDefinedOutSideClassAndNamespace(float x); }; +int MyClass::functionDefinedOutSideClass(char c) {} + } // namespace MyNamespace +int MyNamespace::MyClass::functionDefinedOutSideClassAndNamespace(float x) {} + // // Symbols in an anonymous namespace // @@ -56,8 +69,14 @@ class MyClass { public: MyClass() {} - int function1(); - int function2(bool yesno, int number) {} + int functionDeclaredOnly(); + int functionDefinedInClass(bool yesno, int number) {} + int functionDefinedOutSideClass(char c); }; +int MyClass::functionDefinedOutSideClass(char c) {} + } // anonymous namespace + + +int main() {}