diff options
-rw-r--r-- | clang/include/clang/Lex/Preprocessor.h | 2 | ||||
-rw-r--r-- | clang/lib/Lex/PPDirectives.cpp | 8 |
2 files changed, 7 insertions, 3 deletions
diff --git a/clang/include/clang/Lex/Preprocessor.h b/clang/include/clang/Lex/Preprocessor.h index d87813da026..f048923a67c 100644 --- a/clang/include/clang/Lex/Preprocessor.h +++ b/clang/include/clang/Lex/Preprocessor.h @@ -330,6 +330,8 @@ public: void Lex(Token &Result) { if (CurLexer) CurLexer->Lex(Result); + else if (CurPTHLexer) + CurPTHLexer->Lex(Result); else if (CurTokenLexer) CurTokenLexer->Lex(Result); else diff --git a/clang/lib/Lex/PPDirectives.cpp b/clang/lib/Lex/PPDirectives.cpp index 22178739867..69a3efe287c 100644 --- a/clang/lib/Lex/PPDirectives.cpp +++ b/clang/lib/Lex/PPDirectives.cpp @@ -115,8 +115,7 @@ void Preprocessor::SkipExcludedConditionalBlock(SourceLocation IfTokenLoc, bool FoundNonSkipPortion, bool FoundElse) { ++NumSkipped; - assert(CurTokenLexer == 0 && CurLexer && - "Lexing a macro, not a file?"); + assert(CurTokenLexer == 0 && CurPPLexer && "Lexing a macro, not a file?"); CurPPLexer->pushConditionalLevel(IfTokenLoc, /*isSkipping*/false, FoundNonSkipPortion, FoundElse); @@ -126,7 +125,10 @@ void Preprocessor::SkipExcludedConditionalBlock(SourceLocation IfTokenLoc, CurPPLexer->LexingRawMode = true; Token Tok; while (1) { - CurLexer->Lex(Tok); + if (CurLexer) + CurLexer->Lex(Tok); + else + CurPTHLexer->Lex(Tok); // If this is the end of the buffer, we have an error. if (Tok.is(tok::eof)) { |