summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/pp-engine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/cplusplus/pp-engine.cpp')
-rw-r--r--src/libs/cplusplus/pp-engine.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp
index 134fb4d51c..6a414d8b0f 100644
--- a/src/libs/cplusplus/pp-engine.cpp
+++ b/src/libs/cplusplus/pp-engine.cpp
@@ -762,6 +762,11 @@ QByteArray Preprocessor::run(const QString &fileName,
return preprocessed;
}
+void Preprocessor::setCancelChecker(const Preprocessor::CancelChecker &cancelChecker)
+{
+ m_cancelChecker = cancelChecker;
+}
+
bool Preprocessor::expandFunctionlikeMacros() const
{
return m_expandFunctionlikeMacros;
@@ -1636,6 +1641,9 @@ void Preprocessor::handlePreprocessorDirective(PPToken *tk)
void Preprocessor::handleIncludeDirective(PPToken *tk, bool includeNext)
{
+ if (m_cancelChecker && m_cancelChecker())
+ return;
+
m_state.m_lexer->setScanAngleStringLiteralTokens(true);
lex(tk); // consume "include" token
m_state.m_lexer->setScanAngleStringLiteralTokens(false);