blob: a76e0b2f97e2fcd18e78c73f393747ff9e31a67b [file] [log] [blame]
Douglas Gregor80c60f72010-09-09 22:45:38 +00001// RUN: %clang_cc1 -fms-extensions -E %s | FileCheck %s
2
3// Test that we properly expand the C99 _Pragma and Microsoft __pragma
4// into #pragma directives, with newlines where needed. <rdar://problem/8412013>
5
Douglas Gregor80c60f72010-09-09 22:45:38 +00006// CHECK: #line
7// CHECK: #pragma warning(push)
Douglas Gregorfe6834a2010-09-10 22:27:29 +00008// CHECK: extern "C" {
Douglas Gregor80c60f72010-09-09 22:45:38 +00009// CHECK: #line
Douglas Gregorfe6834a2010-09-10 22:27:29 +000010// CHECK: #pragma warning(push)
11// CHECK: int foo() { return 0; } }
Douglas Gregor80c60f72010-09-09 22:45:38 +000012// CHECK: #pragma warning(pop)
Douglas Gregorfe6834a2010-09-10 22:27:29 +000013#define A(X) extern "C" { __pragma(warning(push)) \
14 int X() { return 0; } \
15}
16#define B(X) A(X)
17#pragma warning(push)
18B(foo)
19#pragma warning(pop)