diff options
author | Roberto Raggi <roberto.raggi@nokia.com> | 2009-10-06 17:22:52 +0200 |
---|---|---|
committer | con <qtc-committer@nokia.com> | 2009-10-07 19:18:05 +0200 |
commit | 18c88131677b5511242d231d8811e561e0f4cf69 (patch) | |
tree | f305275b4759ab44bea02f7826655ae47c5f8456 | |
parent | cf58639be08f7a8a9aeee47220a527c13704bfa7 (diff) |
Search for possible forward classes.
(cherry picked from commit 7a135ac8a24a8fa5a75528f4d5d83c3a545cd8bc)
-rw-r--r-- | src/plugins/cpptools/cppfindreferences.cpp | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp index 375f322625..6d9b9f8d0e 100644 --- a/src/plugins/cpptools/cppfindreferences.cpp +++ b/src/plugins/cpptools/cppfindreferences.cpp @@ -164,12 +164,20 @@ protected: if (! symbol) return false; - else if (symbol == _declSymbol) + else if (symbol == _declSymbol) { return true; - else if (symbol->line() == _declSymbol->line() && symbol->column() == _declSymbol->column()) { + } else if (symbol->line() == _declSymbol->line() && symbol->column() == _declSymbol->column()) { if (! qstrcmp(symbol->fileName(), _declSymbol->fileName())) return true; + + } else if (symbol->isForwardClassDeclaration() && (_declSymbol->isClass() || + _declSymbol->isForwardClassDeclaration())) { + return true; + + } else if (_declSymbol->isForwardClassDeclaration() && (symbol->isClass() || + symbol->isForwardClassDeclaration())) { + return true; } return false; @@ -467,7 +475,21 @@ static void find_helper(QFutureInterface<Utils::FileSearchResult> &future, const QString sourceFile = QString::fromUtf8(symbol->fileName(), symbol->fileNameLength()); QStringList files(sourceFile); - files += snapshot.dependsOn(sourceFile); + + if (symbol->isClass() || symbol->isForwardClassDeclaration()) { + foreach (const Document::Ptr &doc, snapshot) { + if (doc->fileName() == sourceFile) + continue; + + Control *control = doc->control(); + + if (control->findIdentifier(symbolId->chars(), symbolId->size())) + files.append(doc->fileName()); + } + } else { + files += snapshot.dependsOn(sourceFile); + } + qDebug() << "done in:" << tm.elapsed() << "number of files to parse:" << files.size(); future.setProgressRange(0, files.size()); |