From f829ef899c08594aa58b760ed2f7145e9d6dec13 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Thu, 15 Oct 2009 16:24:15 +0200 Subject: [PATCH] Store in the document's macroUsages only the top-level macro expansions. --- src/libs/cplusplus/CppDocument.cpp | 2 +- src/libs/cplusplus/CppDocument.h | 9 +++++++++ src/libs/cplusplus/pp-engine.cpp | 9 --------- src/libs/cplusplus/pp-macro-expander.cpp | 12 ------------ 4 files changed, 10 insertions(+), 22 deletions(-) diff --git a/src/libs/cplusplus/CppDocument.cpp b/src/libs/cplusplus/CppDocument.cpp index 4d86c52d742..3f1b1aff944 100644 --- a/src/libs/cplusplus/CppDocument.cpp +++ b/src/libs/cplusplus/CppDocument.cpp @@ -444,12 +444,12 @@ QByteArray Snapshot::preprocessedCode(const QString &source, const QString &file Document::Ptr Snapshot::documentFromSource(const QByteArray &preprocessedCode, const QString &fileName) const { - FastPreprocessor pp(*this); Document::Ptr newDoc = Document::create(fileName); if (Document::Ptr thisDocument = value(fileName)) { newDoc->_includes = thisDocument->_includes; newDoc->_definedMacros = thisDocument->_definedMacros; + newDoc->_macroUses = thisDocument->_macroUses; } newDoc->setSource(preprocessedCode); diff --git a/src/libs/cplusplus/CppDocument.h b/src/libs/cplusplus/CppDocument.h index ca15bd1986d..6a9896a5317 100644 --- a/src/libs/cplusplus/CppDocument.h +++ b/src/libs/cplusplus/CppDocument.h @@ -189,6 +189,15 @@ public: : _begin(begin), _end(end) { } + inline bool isNull() const + { return length() == 0; } + + inline unsigned position() const + { return _begin; } + + inline unsigned length() const + { return _end - _begin; } + inline unsigned begin() const { return _begin; } diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp index dcb6d493222..5ce662b9981 100644 --- a/src/libs/cplusplus/pp-engine.cpp +++ b/src/libs/cplusplus/pp-engine.cpp @@ -975,18 +975,9 @@ Macro *Preprocessor::processObjectLikeMacro(TokenIterator identifierToken, void Preprocessor::expandBuiltinMacro(TokenIterator identifierToken, const QByteArray &spell) { - const Macro trivial; - - if (client) - client->startExpandingMacro(identifierToken->offset, - trivial, spell); - const bool was = markGeneratedTokens(true, identifierToken); expand(spell, _result); (void) markGeneratedTokens(was); - - if (client) - client->stopExpandingMacro(_dot->offset, trivial); } void Preprocessor::expandObjectLikeMacro(TokenIterator identifierToken, diff --git a/src/libs/cplusplus/pp-macro-expander.cpp b/src/libs/cplusplus/pp-macro-expander.cpp index 42be634562d..1c7a872689e 100644 --- a/src/libs/cplusplus/pp-macro-expander.cpp +++ b/src/libs/cplusplus/pp-macro-expander.cpp @@ -287,9 +287,6 @@ const char *MacroExpander::expand(const char *__first, const char *__last, if (! macro->definition().isEmpty()) { - if (client) - client->startExpandingMacro(start_offset + (name_begin-start), *macro, fast_name, true); - macro->setHidden(true); QByteArray __tmp; @@ -316,9 +313,6 @@ const char *MacroExpander::expand(const char *__first, const char *__last, } macro->setHidden(false); - - if (client) - client->stopExpandingMacro(start_offset + (name_begin-start), *macro); } if (! m) @@ -375,17 +369,11 @@ const char *MacroExpander::expand(const char *__first, const char *__last, ++arg_it; // skip ')' __first = arg_it; - if (client) - client->startExpandingMacro(start_offset + (name_begin-start), *macro, fast_name, true, actuals_ref); - pp_frame frame (macro, actuals); MacroExpander expand_macro (env, &frame); macro->setHidden(true); expand_macro (macro->definition(), __result); macro->setHidden(false); - - if (client) - client->stopExpandingMacro(start_offset + (name_begin-start), *macro); } else __result->append(*__first++); -- GitLab