diff options
Diffstat (limited to 'src/plugins/cpptools/cppfindreferences.cpp')
-rw-r--r-- | src/plugins/cpptools/cppfindreferences.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp index aabe12ca5e..87254f0304 100644 --- a/src/plugins/cpptools/cppfindreferences.cpp +++ b/src/plugins/cpptools/cppfindreferences.cpp @@ -52,6 +52,7 @@ #include <cplusplus/CppDocument.h> #include <cplusplus/Overview.h> +#include <cplusplus/FindUsages.h> #include <QtCore/QTime> #include <QtCore/QTimer> @@ -108,18 +109,25 @@ public: return usages; // skip this document, it's not using symbolId. } - QByteArray source = snapshot.preprocessedCode( - getSource(fileName, workingCopy), fileName); + Document::Ptr doc; + QByteArray source; - Document::Ptr doc = snapshot.documentFromSource(source, fileName); - doc->tokenize(); + if (symbolDocument && fileName == symbolDocument->fileName()) + doc = symbolDocument; + else { + source = snapshot.preprocessedCode(getSource(fileName, workingCopy), fileName); + doc = snapshot.documentFromSource(source, fileName); + doc->tokenize(); + } Control *control = doc->control(); if (control->findIdentifier(symbolId->chars(), symbolId->size()) != 0) { - doc->check(); + if (doc != symbolDocument) + doc->check(); FindUsages process(doc, snapshot); process(symbol); + usages = process.usages(); } |