mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-25 06:18:56 -04:00

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
20 lines
659 B
C
20 lines
659 B
C
// RUN: %clang_cc1 %s -verify -Wall
|
|
|
|
_Pragma ("GCC system_header") // expected-warning {{system_header ignored in main file}}
|
|
|
|
// rdar://6880630
|
|
_Pragma("#define macro") // expected-warning {{unknown pragma ignored}}
|
|
|
|
_Pragma("") // expected-warning {{unknown pragma ignored}}
|
|
_Pragma("message(\"foo \\\\\\\\ bar\")") // expected-warning {{foo \\ bar}}
|
|
|
|
#ifdef macro
|
|
#error #define invalid
|
|
#endif
|
|
|
|
_Pragma(unroll 1 // expected-error{{_Pragma takes a parenthesized string literal}}
|
|
|
|
_Pragma(clang diagnostic push) // expected-error{{_Pragma takes a parenthesized string literal}}
|
|
|
|
_Pragma( // expected-error{{_Pragma takes a parenthesized string literal}}
|