]> granicus.if.org Git - clang/commitdiff
Fix the #import / #include_next "extra tokens at end of #foo directive"
authorChris Lattner <sabre@nondot.org>
Tue, 14 Apr 2009 05:07:49 +0000 (05:07 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 14 Apr 2009 05:07:49 +0000 (05:07 +0000)
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

include/clang/Basic/DiagnosticLexKinds.td
lib/Lex/PPDirectives.cpp
lib/Lex/Pragma.cpp

index 64f60bd247d048c385d3466893449a43049ee60e..12df86771553382095fae66267dd89025686138b 100644 (file)
@@ -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">;
index 24b943254cff78db472a06603b9072a1c03a49cd..affd9886f02edd784373aeb153a22eb4235deddd 100644 (file)
@@ -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)) {
index 9e3080c8abbb085fbe05781264debd12f22c1561..6bef2c8f77ff70d896aa320de669b6771db9aad4 100644 (file)
@@ -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 {