aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cpptools/cppchecksymbols.cpp
diff options
context:
space:
mode:
authorFrancois Ferrand <[email protected]>2010-11-03 11:02:25 +0100
committerLeandro Melo <[email protected]>2012-04-13 02:07:37 +0200
commit85609aff8e3bd09a68d7868ad6cf3158e261d713 (patch)
tree9a09fa06d8277f779b3a4471974f34558f632256 /src/plugins/cpptools/cppchecksymbols.cpp
parent85ce5aba6211385785476164ab95b37140e5b20d (diff)
CppHighlighter: highlight macro references.
Change-Id: I7c90957aa67e03a109af0a722160d4e1c759d716 Reviewed-by: Leandro Melo <[email protected]>
Diffstat (limited to 'src/plugins/cpptools/cppchecksymbols.cpp')
-rw-r--r--src/plugins/cpptools/cppchecksymbols.cpp25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/plugins/cpptools/cppchecksymbols.cpp b/src/plugins/cpptools/cppchecksymbols.cpp
index a2d1d6dcf07..f7bbb988855 100644
--- a/src/plugins/cpptools/cppchecksymbols.cpp
+++ b/src/plugins/cpptools/cppchecksymbols.cpp
@@ -33,7 +33,7 @@
#include "cppchecksymbols.h"
#include "cpplocalsymbols.h"
-#include <cplusplus/Overview.h>
+#include <cplusplus/SimpleLexer.h>
#include <Names.h>
#include <Literals.h>
@@ -284,16 +284,21 @@ protected:
} // end of anonymous namespace
-CheckSymbols::Future CheckSymbols::go(Document::Ptr doc, const LookupContext &context)
+static bool sortByLinePredicate(const CheckSymbols::Use &lhs, const CheckSymbols::Use &rhs)
+{
+ return lhs.line < rhs.line;
+}
+
+CheckSymbols::Future CheckSymbols::go(Document::Ptr doc, const LookupContext &context, const QList<CheckSymbols::Use> &macroUses)
{
QTC_ASSERT(doc, return Future());
- return (new CheckSymbols(doc, context))->start();
+ return (new CheckSymbols(doc, context, macroUses))->start();
}
-CheckSymbols::CheckSymbols(Document::Ptr doc, const LookupContext &context)
+CheckSymbols::CheckSymbols(Document::Ptr doc, const LookupContext &context, const QList<CheckSymbols::Use> &macroUses)
: ASTVisitor(doc->translationUnit()), _doc(doc), _context(context)
- , _lineOfLastUsage(0)
+ , _lineOfLastUsage(0), _macroUses(macroUses)
{
CollectSymbols collectTypes(doc, context.snapshot());
@@ -311,11 +316,13 @@ CheckSymbols::~CheckSymbols()
void CheckSymbols::run()
{
+ qSort(_macroUses.begin(), _macroUses.end(), sortByLinePredicate);
_diagnosticMessages.clear();
if (! isCanceled()) {
if (_doc->translationUnit()) {
accept(_doc->translationUnit()->ast());
+ _usages << QVector<Use>::fromList(_macroUses);
flush();
}
}
@@ -876,6 +883,9 @@ void CheckSymbols::addUse(const Use &use)
}
}
+ while (!_macroUses.isEmpty() && _macroUses.first().line <= use.line)
+ _usages.append(_macroUses.takeFirst());
+
_lineOfLastUsage = qMax(_lineOfLastUsage, use.line);
_usages.append(use);
}
@@ -1115,11 +1125,6 @@ bool CheckSymbols::maybeVirtualMethod(const Name *name) const
return false;
}
-static bool sortByLinePredicate(const CheckSymbols::Use &lhs, const CheckSymbols::Use &rhs)
-{
- return lhs.line < rhs.line;
-}
-
void CheckSymbols::flush()
{
_lineOfLastUsage = 0;