]> granicus.if.org Git - clang/commitdiff
Complain if a __pragma isn't terminated.
authorJohn McCall <rjmccall@apple.com>
Sun, 29 Aug 2010 01:09:54 +0000 (01:09 +0000)
committerJohn McCall <rjmccall@apple.com>
Sun, 29 Aug 2010 01:09:54 +0000 (01:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112392 91177308-0d34-0410-b5e6-96231b3b80d8

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

index 08ba1c43ccf9b4844fde9afd38004892d5a2e21f..07f53d98670a1e460062cd6b9c93c7300e4d6fd0 100644 (file)
@@ -51,6 +51,7 @@ def err_empty_character : Error<"empty character constant">;
 def err_unterminated_block_comment : Error<"unterminated /* comment">;
 def err_invalid_character_to_charify : Error<
   "invalid argument to convert to character">;
+def err_unterminated___pragma : Error<"missing terminating ')' character">;
 
 def err_conflict_marker : Error<"version control conflict marker in file">;
 
index af676670d1fac9fe1a82da7bdd15ed7197b0d9b8..de713ebae60917ded8b2db344d25ed1a011a144f 100644 (file)
@@ -202,6 +202,11 @@ void Preprocessor::HandleMicrosoft__pragma(Token &Tok) {
     Lex(Tok);
   }
 
+  if (Tok.is(tok::eof)) {
+    Diag(PragmaLoc, diag::err_unterminated___pragma);
+    return;
+  }
+
   // Build the pragma string.
   std::string StrVal = " ";
   for (llvm::SmallVector<Token, 32>::iterator I =