summaryrefslogtreecommitdiffstats
path: root/clang/lib/Lex/PPLexerChange.cpp
diff options
context:
space:
mode:
authorErik Verbruggen <erikjv@me.com>2017-05-30 11:54:55 +0000
committerErik Verbruggen <erikjv@me.com>2017-05-30 11:54:55 +0000
commitb34c79ff277b20ec00f66c50bf550f2d76ea2108 (patch)
treed21dc0c9da5e60c9d5d305cf8230514b202b19aa /clang/lib/Lex/PPLexerChange.cpp
parent626c997affc93fbf14fc48f6dad2ed430219cf9c (diff)
downloadbcm5719-llvm-b34c79ff277b20ec00f66c50bf550f2d76ea2108.tar.gz
bcm5719-llvm-b34c79ff277b20ec00f66c50bf550f2d76ea2108.zip
Allow for unfinished #if blocks in preambles
Previously, a preamble only included #if blocks (and friends like ifdef) if there was a corresponding #endif before any declaration or definition. The problem is that any header file that uses include guards will not have a preamble generated, which can make code-completion very slow. To prevent errors about unbalanced preprocessor conditionals in the preamble, and unbalanced preprocessor conditionals after a preamble containing unfinished conditionals, the conditional stack is stored in the pch file. This fixes PR26045. Differential Revision: http://reviews.llvm.org/D15994 llvm-svn: 304207
Diffstat (limited to 'clang/lib/Lex/PPLexerChange.cpp')
-rw-r--r--clang/lib/Lex/PPLexerChange.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Lex/PPLexerChange.cpp b/clang/lib/Lex/PPLexerChange.cpp
index 5a589d6a17b..1c0cd563683 100644
--- a/clang/lib/Lex/PPLexerChange.cpp
+++ b/clang/lib/Lex/PPLexerChange.cpp
@@ -46,6 +46,12 @@ bool Preprocessor::isInPrimaryFile() const {
});
}
+bool Preprocessor::isInMainFile() const {
+ if (IsFileLexer())
+ return IncludeMacroStack.size() == 0;
+ return true;
+}
+
/// getCurrentLexer - Return the current file lexer being lexed from. Note
/// that this ignores any potentially active macro expansions and _Pragma
/// expansions going on at the time.
OpenPOWER on IntegriCloud