pragma_microsoft.c revision 1b2ad2fd9e2d5352144481aa1fd995d333d9adc9
1db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block// RUN: %clang_cc1 %s -fsyntax-only -verify -fms-extensions
2db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
3db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block// rdar://6495941
4db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
5db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#define FOO 1
6db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#define BAR "2"
7db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
8db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#pragma comment(linker,"foo=" FOO) // expected-error {{pragma comment requires parenthesized identifier and optional string}}
9db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#pragma comment(linker," bar=" BAR)
10db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
11db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#pragma comment( user, "Compiled on " __DATE__ " at " __TIME__ )
12db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
13db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#pragma comment(foo)    // expected-error {{unknown kind of pragma comment}}
14db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#pragma comment(compiler,)     // expected-error {{pragma comment requires}}
15db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#define foo compiler
16db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#pragma comment(foo)   // macro expand kind.
17db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#pragma comment(foo) x // expected-error {{pragma comment requires}}
18db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
19db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#pragma comment(user, "foo\abar\nbaz\tsome	thing")
20db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
21db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
22db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block// __pragma
23db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
24db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block__pragma(comment(linker," bar=" BAR))
25db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
262daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#define MACRO_WITH__PRAGMA { \
272daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch  __pragma(warning(push)); \
2865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch  __pragma(warning(disable: 10000)); \
292daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch  2+2; \
3065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch  __pragma(warning(pop)); \
312daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch}
32dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
332daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid f()
342daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{
352daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch  __pragma()
362daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
37dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch  // If we ever actually *support* __pragma(warning(disable: x)),
38db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block  // this warning should go away.
392daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch  MACRO_WITH__PRAGMA // expected-warning {{expression result unused}}
40}
41