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