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