1*31875a0aSRichard Smith // RUN: %clang_cc1 -verify %s -pedantic-errors 2*31875a0aSRichard Smith // RUN: %clang_cc1 -verify %s -pedantic-errors -DINLINE 3*31875a0aSRichard Smith // RUN: %clang_cc1 -verify %s -pedantic-errors -DSTATIC 4*31875a0aSRichard Smith // RUN: %clang_cc1 -verify %s -pedantic-errors -std=c++11 -DCONSTEXPR 5*31875a0aSRichard Smith // RUN: %clang_cc1 -verify %s -std=c++11 -DDELETED 6*31875a0aSRichard Smith 7*31875a0aSRichard Smith #if INLINE 8*31875a0aSRichard Smith inline // expected-error {{'main' is not allowed to be declared inline}} 9*31875a0aSRichard Smith #elif STATIC 10*31875a0aSRichard Smith static // expected-error {{'main' is not allowed to be declared static}} 11*31875a0aSRichard Smith #elif CONSTEXPR 12*31875a0aSRichard Smith constexpr // expected-error {{'main' is not allowed to be declared constexpr}} 13*31875a0aSRichard Smith #endif 14*31875a0aSRichard Smith int main(int argc, char **argv) 15*31875a0aSRichard Smith #if DELETED 16*31875a0aSRichard Smith = delete; // expected-error {{'main' is not allowed to be deleted}} 17*31875a0aSRichard Smith #else 18*31875a0aSRichard Smith { 19*31875a0aSRichard Smith int (*pmain)(int, char**) = &main; // expected-error {{ISO C++ does not allow 'main' to be used by a program}} 20*31875a0aSRichard Smith 21*31875a0aSRichard Smith if (argc) 22*31875a0aSRichard Smith main(0, 0); // expected-error {{ISO C++ does not allow 'main' to be used by a program}} 23*31875a0aSRichard Smith } 24*31875a0aSRichard Smith #endif 25