summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-09-30 17:15:31 +0200
committerRoberto Raggi <roberto.raggi@nokia.com>2009-09-30 17:17:11 +0200
commit9a2114338432cfc883b29f514daa847205184833 (patch)
tree8fd96ff0d0944b55b805c13579d262d7af63e975 /src/plugins
parente50d60ac97bb0080ee055574eada5a51a5bb907c (diff)
downloadqt-creator-9a2114338432cfc883b29f514daa847205184833.tar.gz
Implemented a simple(fast?) strategy to resolve macro references.
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/cppeditor/cppeditor.cpp9
-rw-r--r--src/plugins/cpptools/cppfindreferences.cpp12
2 files changed, 18 insertions, 3 deletions
diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index 9771328c5b..9a3022c577 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -57,6 +57,8 @@
#include <cplusplus/TypeOfExpression.h>
#include <cplusplus/MatchingText.h>
#include <cplusplus/BackwardsScanner.h>
+#include <cplusplus/FastPreprocessor.h>
+
#include <cpptools/cppmodelmanagerinterface.h>
#include <coreplugin/icore.h>
@@ -2064,10 +2066,13 @@ SemanticInfo SemanticHighlighter::semanticInfo(const Source &source)
if (!doc) {
const QByteArray preprocessedCode = source.snapshot.preprocessedCode(source.code, source.fileName);
+ snapshot = source.snapshot;
doc = source.snapshot.documentFromSource(preprocessedCode, source.fileName);
- doc->check();
- snapshot = source.snapshot;
+ FastMacroResolver fastMacroResolver(snapshot);
+ doc->control()->setMacroResolver(&fastMacroResolver);
+ doc->check();
+ doc->control()->setMacroResolver(0);
}
Control *control = doc->control();
diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp
index bbee65f767..ad9642f8bc 100644
--- a/src/plugins/cpptools/cppfindreferences.cpp
+++ b/src/plugins/cpptools/cppfindreferences.cpp
@@ -52,6 +52,7 @@
#include <cplusplus/ResolveExpression.h>
#include <cplusplus/Overview.h>
#include <cplusplus/TypeOfExpression.h>
+#include <cplusplus/FastPreprocessor.h>
#include <QtCore/QTime>
#include <QtCore/QtConcurrentRun>
@@ -425,6 +426,8 @@ static void find_helper(QFutureInterface<Core::Utils::FileSearchResult> &future,
future.setProgressRange(0, files.size());
+ FastMacroResolver fastMacroResolver(snapshot);
+
for (int i = 0; i < files.size(); ++i) {
const QString &fileName = files.at(i);
future.setProgressValueAndText(i, QFileInfo(fileName).fileName());
@@ -456,8 +459,15 @@ static void find_helper(QFutureInterface<Core::Utils::FileSearchResult> &future,
Control *control = doc->control();
if (Identifier *id = control->findIdentifier(symbolId->chars(), symbolId->size())) {
- doc->check();
TranslationUnit *unit = doc->translationUnit();
+ Control *control = doc->control();
+
+ control->setMacroResolver(&fastMacroResolver);
+ doc->parse();
+ control->setMacroResolver(0);
+
+ doc->check();
+
Process process(doc, snapshot, &future);
process(symbol, id, unit->ast());
}