1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// RUN: %clang_cc1 -fsyntax-only -std=c99 -pedantic-errors %s
2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// RUN: %clang_cc1 -fsyntax-only -std=c99 -emit-pch -o %t %s
3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant// RUN: %clang_cc1 -fsyntax-only -std=c99 -pedantic-errors -include-pch %t %s
4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// RUN: %clang_cc1 -fsyntax-only -std=c99 -pedantic-errors -DINCLUDED %s -verify
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This last one should warn for -Wempty-translation-unit (C99 6.9p1).
7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#if defined(INCLUDED)
9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// empty except for the prefix header
11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
12256813f4e7915d64776a4edd5f4765d893b9f062Howard Hinnant#elif defined(HEADER)
13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnanttypedef int my_int;
15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#define INCLUDED
16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#else
18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#define HEADER
20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include "empty-with-headers.c"
21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// empty except for the header
22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#endif
24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// This should only fire if the header is not included,
26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// either explicitly or as a prefix header.
27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// expected-error{{ISO C requires a translation unit to contain at least one declaration}}
28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant