aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-10-06 17:22:52 +0200
committercon <qtc-committer@nokia.com>2009-10-07 19:18:05 +0200
commit18c88131677b5511242d231d8811e561e0f4cf69 (patch)
treef305275b4759ab44bea02f7826655ae47c5f8456
parentcf58639be08f7a8a9aeee47220a527c13704bfa7 (diff)
Search for possible forward classes.
(cherry picked from commit 7a135ac8a24a8fa5a75528f4d5d83c3a545cd8bc)
-rw-r--r--src/plugins/cpptools/cppfindreferences.cpp28
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());