Fix the #import / #include_next "extra tokens at end of #foo directive"

Warning to properly report that it is an import/include_next instead of
claiming it is a #include.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69023 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2009-04-14 05:07:49 +00:00
Родитель f0c9083c04
Коммит 35410d5cbb
3 изменённых файлов: 12 добавлений и 12 удалений

Просмотреть файл

@ -113,7 +113,7 @@ def ext_pp_include_next_directive : Extension<
"#include_next is a language extension">;
def ext_pp_warning_directive : Extension<"#warning is a language extension">;
def ext_pp_extra_tokens_at_eol : ExtWarn<
"extra tokens at end of %0 directive">;
"extra tokens at end of #%0 directive">;
def ext_pp_comma_expr : Extension<"comma operator in operand of #if">;
def ext_pp_bad_vaargs_use : Extension<
"__VA_ARGS__ can only appear in the expansion of a C99 variadic macro">;

Просмотреть файл

@ -243,7 +243,7 @@ void Preprocessor::SkipExcludedConditionalBlock(SourceLocation IfTokenLoc,
}
} else if (FirstChar == 'e') {
if (IdLen == 5 && !strcmp(Directive+1, "ndif")) { // "endif"
CheckEndOfDirective("#endif");
CheckEndOfDirective("endif");
PPConditionalInfo CondInfo;
CondInfo.WasSkipping = true; // Silence bogus warning.
bool InCond = CurPPLexer->popConditionalLevel(CondInfo);
@ -257,7 +257,7 @@ void Preprocessor::SkipExcludedConditionalBlock(SourceLocation IfTokenLoc,
// #else directive in a skipping conditional. If not in some other
// skipping conditional, and if #else hasn't already been seen, enter it
// as a non-skipping conditional.
CheckEndOfDirective("#else");
CheckEndOfDirective("else");
PPConditionalInfo &CondInfo = CurPPLexer->peekConditionalLevel();
// If this is a #else with a #else before it, report the error.
@ -689,7 +689,7 @@ void Preprocessor::HandleLineDirective(Token &Tok) {
Literal.GetStringLength());
// Verify that there is nothing after the string, other than EOM.
CheckEndOfDirective("#line");
CheckEndOfDirective("line");
}
SourceMgr.AddLineNote(DigitTok.getLocation(), LineNo, FilenameID);
@ -889,7 +889,7 @@ void Preprocessor::HandleIdentSCCSDirective(Token &Tok) {
}
// Verify that there is nothing after the string, other than EOM.
CheckEndOfDirective("#ident");
CheckEndOfDirective("ident");
if (Callbacks)
Callbacks->Ident(Tok.getLocation(), getSpelling(StrTok));
@ -1050,7 +1050,7 @@ void Preprocessor::HandleIncludeDirective(Token &IncludeTok,
}
// Verify that there is nothing after the filename, other than EOM.
CheckEndOfDirective("#include");
CheckEndOfDirective(IncludeTok.getIdentifierInfo()->getName());
// Check that we don't have infinite #include recursion.
if (IncludeMacroStack.size() == MaxAllowedIncludeStackDepth-1) {
@ -1420,7 +1420,7 @@ void Preprocessor::HandleUndefDirective(Token &UndefTok) {
return;
// Check to see if this is the last token on the #undef line.
CheckEndOfDirective("#undef");
CheckEndOfDirective("undef");
// Okay, we finally have a valid identifier to undef.
MacroInfo *MI = getMacroInfo(MacroNameTok.getIdentifierInfo());
@ -1464,7 +1464,7 @@ void Preprocessor::HandleIfdefDirective(Token &Result, bool isIfndef,
}
// Check to see if this is the last token on the #if[n]def line.
CheckEndOfDirective(isIfndef ? "#ifndef" : "#ifdef");
CheckEndOfDirective(isIfndef ? "ifndef" : "ifdef");
if (CurPPLexer->getConditionalStackDepth() == 0) {
// If the start of a top-level #ifdef, inform MIOpt.
@ -1533,7 +1533,7 @@ void Preprocessor::HandleEndifDirective(Token &EndifToken) {
++NumEndif;
// Check that this is the whole directive.
CheckEndOfDirective("#endif");
CheckEndOfDirective("endif");
PPConditionalInfo CondInfo;
if (CurPPLexer->popConditionalLevel(CondInfo)) {
@ -1555,7 +1555,7 @@ void Preprocessor::HandleElseDirective(Token &Result) {
++NumElse;
// #else directive in a non-skipping conditional... start skipping.
CheckEndOfDirective("#else");
CheckEndOfDirective("else");
PPConditionalInfo CI;
if (CurPPLexer->popConditionalLevel(CI)) {

Просмотреть файл

@ -461,7 +461,7 @@ namespace {
struct PragmaOnceHandler : public PragmaHandler {
PragmaOnceHandler(const IdentifierInfo *OnceID) : PragmaHandler(OnceID) {}
virtual void HandlePragma(Preprocessor &PP, Token &OnceTok) {
PP.CheckEndOfDirective("#pragma once");
PP.CheckEndOfDirective("pragma once");
PP.HandlePragmaOnce(OnceTok);
}
};
@ -489,7 +489,7 @@ struct PragmaSystemHeaderHandler : public PragmaHandler {
PragmaSystemHeaderHandler(const IdentifierInfo *ID) : PragmaHandler(ID) {}
virtual void HandlePragma(Preprocessor &PP, Token &SHToken) {
PP.HandlePragmaSystemHeader(SHToken);
PP.CheckEndOfDirective("#pragma");
PP.CheckEndOfDirective("pragma");
}
};
struct PragmaDependencyHandler : public PragmaHandler {