1 // RUN: %clang_cc1 %s -fsyntax-only -verify -fms-extensions
2 
3 // rdar://6495941
4 
5 #define FOO 1
6 #define BAR "2"
7 
8 #pragma comment(linker,"foo=" FOO) // expected-error {{pragma comment requires parenthesized identifier and optional string}}
9 #pragma comment(linker," bar=" BAR)
10 
11 #pragma comment( user, "Compiled on " __DATE__ " at " __TIME__ )
12 
13 #pragma comment(foo)    // expected-error {{unknown kind of pragma comment}}
14 #pragma comment(compiler,)     // expected-error {{pragma comment requires}}
15 #define foo compiler
16 #pragma comment(foo)   // macro expand kind.
17 #pragma comment(foo) x // expected-error {{pragma comment requires}}
18 
19 #pragma comment(user, "foo\abar\nbaz\tsome	thing")
20 
21 
22 // __pragma
23 
24 __pragma(comment(linker," bar=" BAR))
25 
26 #define MACRO_WITH__PRAGMA { \
27   __pragma(warning(push)); \
28   __pragma(warning(disable: 10000)); \
29   2+2; \
30   __pragma(warning(pop)); \
31 }
32 
33 void f()
34 {
35   __pragma()
36 
37   // If we ever actually *support* __pragma(warning(disable: x)),
38   // this warning should go away.
39   MACRO_WITH__PRAGMA // expected-warning {{expression result unused}}
40 }
41