forked from OSchip/llvm-project
When using a PTHLexer, use DiscardToEndOfLine() instead of ReadToEndOfLine().
llvm-svn: 59668
This commit is contained in:
parent
f4d95fdce9
commit
76c3441a4e
|
@ -56,6 +56,10 @@ public:
|
|||
/// the virtual location encodes where we should *claim* the characters came
|
||||
/// from. Currently this is only used by _Pragma handling.
|
||||
SourceLocation getFileLoc() const { return FileLoc; }
|
||||
|
||||
/// ReadToEndOfLine - Read the rest of the current preprocessor line as an
|
||||
/// uninterpreted string. This switches the lexer out of directive mode.
|
||||
void DiscardToEndOfLine();
|
||||
};
|
||||
|
||||
} // end namespace clang
|
||||
|
|
|
@ -473,10 +473,15 @@ void Preprocessor::HandleUserDiagnosticDirective(Token &Tok,
|
|||
// tokens. For example, this is allowed: "#warning ` 'foo". GCC does
|
||||
// collapse multiple consequtive white space between tokens, but this isn't
|
||||
// specified by the standard.
|
||||
std::string Message = CurLexer->ReadToEndOfLine();
|
||||
|
||||
unsigned DiagID = isWarning ? diag::pp_hash_warning : diag::err_pp_hash_error;
|
||||
Diag(Tok, DiagID) << Message;
|
||||
|
||||
if (CurLexer) {
|
||||
std::string Message = CurLexer->ReadToEndOfLine();
|
||||
unsigned DiagID = isWarning ? diag::pp_hash_warning : diag::err_pp_hash_error;
|
||||
Diag(Tok, DiagID) << Message;
|
||||
}
|
||||
else {
|
||||
CurPTHLexer->DiscardToEndOfLine();
|
||||
}
|
||||
}
|
||||
|
||||
/// HandleIdentSCCSDirective - Handle a #ident/#sccs directive.
|
||||
|
|
|
@ -111,7 +111,7 @@ bool Preprocessor::isNextPPTokenLParen() {
|
|||
// We have run off the end. If it's a source file we don't
|
||||
// examine enclosing ones (C99 5.1.1.2p4). Otherwise walk up the
|
||||
// macro stack.
|
||||
if (CurLexer)
|
||||
if (CurPPLexer)
|
||||
return false;
|
||||
for (unsigned i = IncludeMacroStack.size(); i != 0; --i) {
|
||||
IncludeStackInfo &Entry = IncludeMacroStack[i-1];
|
||||
|
|
|
@ -76,3 +76,10 @@ void PTHLexer::setEOF(Token& Tok) {
|
|||
Tok = Tokens[NumTokens]; // NumTokens is already adjusted, so this isn't
|
||||
// an overflow.
|
||||
}
|
||||
|
||||
void PTHLexer::DiscardToEndOfLine() {
|
||||
assert(ParsingPreprocessorDirective && ParsingFilename == false &&
|
||||
"Must be in a preprocessing directive!");
|
||||
|
||||
assert (0 && "Not implemented.");
|
||||
}
|
||||
|
|
|
@ -193,8 +193,9 @@ void Preprocessor::HandlePragmaOnce(Token &OnceTok) {
|
|||
}
|
||||
|
||||
void Preprocessor::HandlePragmaMark() {
|
||||
assert(CurLexer && "No current lexer?");
|
||||
CurLexer->ReadToEndOfLine();
|
||||
assert(CurPPLexer && "No current lexer?");
|
||||
if (CurLexer) CurLexer->ReadToEndOfLine();
|
||||
else CurPTHLexer->DiscardToEndOfLine();
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue