<div dir="ltr">Can you include both an EOD test and an EOF test? Otherwise, LGTM.</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Aug 21, 2014 at 12:10 AM, David Majnemer <span dir="ltr"><<a href="mailto:david.majnemer@gmail.com" target="_blank">david.majnemer@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Ping.</div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">
On Fri, Aug 15, 2014 at 6:59 PM, David Majnemer <span dir="ltr"><<a href="mailto:david.majnemer@gmail.com" target="_blank">david.majnemer@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi rsmith,<br>
<br>
It's not particularly safe to lex a token if you don't know what it is.<br>
_Pragma error recovery attempted to lex tokens without being sure what<br>
they might be.<br>
<br>
<a href="http://reviews.llvm.org/D4939" target="_blank">http://reviews.llvm.org/D4939</a><br>
<br>
Files:<br>
  lib/Lex/Pragma.cpp<br>
  test/Preprocessor/_Pragma.c<br>
<br>
Index: lib/Lex/Pragma.cpp<br>
===================================================================<br>
--- lib/Lex/Pragma.cpp<br>
+++ lib/Lex/Pragma.cpp<br>
@@ -192,9 +192,7 @@<br>
   Lex(Tok);<br>
   if (!tok::isStringLiteral(Tok.getKind())) {<br>
     Diag(PragmaLoc, diag::err__Pragma_malformed);<br>
-    // Skip this token, and the ')', if present.<br>
-    if (Tok.isNot(tok::r_paren) && Tok.isNot(tok::eof))<br>
-      Lex(Tok);<br>
+    // Skip this token if it's a ')'.<br>
     if (Tok.is(tok::r_paren))<br>
       Lex(Tok);<br>
     return _PragmaLexing.failed();<br>
Index: test/Preprocessor/_Pragma.c<br>
===================================================================<br>
--- test/Preprocessor/_Pragma.c<br>
+++ test/Preprocessor/_Pragma.c<br>
@@ -12,4 +12,6 @@<br>
 #error #define invalid<br>
 #endif<br>
<br>
-_Pragma( // expected-error{{_Pragma takes a parenthesized string literal}}<br>
+// expected-error@+2{{unterminated conditional directive}}<br>
+// expected-error@+1{{expected value in expression}}<br>
+#if _Pragma( // expected-error{{_Pragma takes a parenthesized string literal}}<br>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>