forked from qt-creator/qt-creator
		
	C++: Expand object-like macros in fast preprocessing mode again.
Task-number: QTCREATORBUG-7512 Change-Id: I59898a0449f1f6997963e0f31c47293358a773f6 Reviewed-by: Leandro Melo <leandro.melo@nokia.com>
This commit is contained in:
		| @@ -42,7 +42,7 @@ FastPreprocessor::FastPreprocessor(const Snapshot &snapshot) | ||||
|  | ||||
| QByteArray FastPreprocessor::run(QString fileName, const QString &source) | ||||
| { | ||||
|     _preproc.setExpandMacros(false); | ||||
|     _preproc.setExpandFunctionlikeMacros(false); | ||||
|     _preproc.setKeepComments(true); | ||||
|  | ||||
|     if (Document::Ptr doc = _snapshot.document(fileName)) { | ||||
|   | ||||
| @@ -593,7 +593,7 @@ void Preprocessor::State::popTokenBuffer() | ||||
| Preprocessor::Preprocessor(Client *client, Environment *env) | ||||
|     : m_client(client) | ||||
|     , m_env(env) | ||||
|     , m_expandMacros(true) | ||||
|     , m_expandFunctionlikeMacros(true) | ||||
|     , m_keepComments(false) | ||||
| { | ||||
| } | ||||
| @@ -615,14 +615,14 @@ QByteArray Preprocessor::run(const QString &fileName, | ||||
|     return preprocessed; | ||||
| } | ||||
|  | ||||
| bool Preprocessor::expandMacros() const | ||||
| bool Preprocessor::expandFunctionlikeMacros() const | ||||
| { | ||||
|     return m_expandMacros; | ||||
|     return m_expandFunctionlikeMacros; | ||||
| } | ||||
|  | ||||
| void Preprocessor::setExpandMacros(bool expandMacros) | ||||
| void Preprocessor::setExpandFunctionlikeMacros(bool expandMacros) | ||||
| { | ||||
|     m_expandMacros = expandMacros; | ||||
|     m_expandFunctionlikeMacros = expandMacros; | ||||
| } | ||||
|  | ||||
| bool Preprocessor::keepComments() const | ||||
| @@ -741,9 +741,6 @@ void Preprocessor::skipPreprocesorDirective(PPToken *tk) | ||||
|  | ||||
| bool Preprocessor::handleIdentifier(PPToken *tk) | ||||
| { | ||||
|     if (!expandMacros()) | ||||
|         return false; | ||||
|  | ||||
|     ScopedBoolSwap s(m_state.m_inPreprocessorDirective, true); | ||||
|  | ||||
|     static const QByteArray ppLine("__LINE__"); | ||||
| @@ -813,6 +810,9 @@ bool Preprocessor::handleIdentifier(PPToken *tk) | ||||
|     PPToken oldMarkerTk; | ||||
|  | ||||
|     if (macro->isFunctionLike()) { | ||||
|         if (!expandFunctionlikeMacros()) | ||||
|             return false; | ||||
|  | ||||
|         // Collect individual tokens that form the macro arguments. | ||||
|         QVector<QVector<PPToken> > allArgTks; | ||||
|         bool hasArgs = collectActualArguments(tk, &allArgTks); | ||||
|   | ||||
| @@ -81,8 +81,8 @@ public: | ||||
|     QByteArray run(const QString &filename, const QString &source); | ||||
|     QByteArray run(const QString &filename, const QByteArray &source, bool noLines = false, bool markGeneratedTokens = true); | ||||
|  | ||||
|     bool expandMacros() const; | ||||
|     void setExpandMacros(bool expandMacros); | ||||
|     bool expandFunctionlikeMacros() const; | ||||
|     void setExpandFunctionlikeMacros(bool expandFunctionlikeMacros); | ||||
|  | ||||
|     bool keepComments() const; | ||||
|     void setKeepComments(bool keepComments); | ||||
| @@ -197,7 +197,7 @@ private: | ||||
|     Environment *m_env; | ||||
|     QByteArray m_scratchBuffer; | ||||
|  | ||||
|     bool m_expandMacros; | ||||
|     bool m_expandFunctionlikeMacros; | ||||
|     bool m_keepComments; | ||||
|  | ||||
|     State m_state; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user