Improved error recovery for _Pragma
authorHubert Tong <hubert.reinterpretcast@gmail.com>
Thu, 30 Jul 2015 21:30:00 +0000 (21:30 +0000)
committerHubert Tong <hubert.reinterpretcast@gmail.com>
Thu, 30 Jul 2015 21:30:00 +0000 (21:30 +0000)
commit0deb694d943f914657437229f077b64aacf4fec7
tree5f5ad326d6d61a79a6b1a9fb60215a1567283a8c
parentc9dc96bfc6641e3d92560dfedb9ebac83f6b168c
Improved error recovery for _Pragma

Summary:
Currently, if the argument to _Pragma is not a parenthesised string
literal, the bad token will be consumed, as well as the ')', if present.
If additional bad tokens are passed to the _Pragma, this results in
extra error messages which may distract from the true problem.

The proposed patch causes all tokens to be consumed until the closing
')' or a new line, whichever is reached first.

Reviewers: hfinkel, rsmith

Subscribers: hubert.reinterpretcast, fraggamuffin, rnk, cfe-commits

Differential Revision: http://reviews.llvm.org/D8308

Patch by Rachel Craik!

llvm-svn: 243692
clang/lib/Lex/Pragma.cpp
clang/test/Preprocessor/_Pragma.c