1*da8a3b90SDavide Italiano // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST1 2*da8a3b90SDavide Italiano // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST2 3*da8a3b90SDavide Italiano // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST3 4*da8a3b90SDavide Italiano // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST4 5*da8a3b90SDavide Italiano // RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++14 -DTEST5 6*da8a3b90SDavide Italiano // RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++14 -DTEST6 7*da8a3b90SDavide Italiano // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST7 8*da8a3b90SDavide Italiano // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST8 9*da8a3b90SDavide Italiano // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST9 10*da8a3b90SDavide Italiano // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST10 -ffreestanding 11*da8a3b90SDavide Italiano 12*da8a3b90SDavide Italiano #if TEST1 13*da8a3b90SDavide Italiano int main; // expected-error{{main cannot be declared as global variable}} 14*da8a3b90SDavide Italiano 15*da8a3b90SDavide Italiano #elif TEST2 16*da8a3b90SDavide Italiano // expected-no-diagnostics f()17*da8a3b90SDavide Italianoint f () { 18*da8a3b90SDavide Italiano int main; 19*da8a3b90SDavide Italiano return main; 20*da8a3b90SDavide Italiano } 21*da8a3b90SDavide Italiano 22*da8a3b90SDavide Italiano #elif TEST3 23*da8a3b90SDavide Italiano // expected-no-diagnostics x(int main)24*da8a3b90SDavide Italianovoid x(int main) {}; 25*da8a3b90SDavide Italiano int y(int main); 26*da8a3b90SDavide Italiano 27*da8a3b90SDavide Italiano #elif TEST4 28*da8a3b90SDavide Italiano // expected-no-diagnostics 29*da8a3b90SDavide Italiano class A { 30*da8a3b90SDavide Italiano static int main; 31*da8a3b90SDavide Italiano }; 32*da8a3b90SDavide Italiano 33*da8a3b90SDavide Italiano #elif TEST5 34*da8a3b90SDavide Italiano // expected-no-diagnostics 35*da8a3b90SDavide Italiano template<class T> constexpr T main; 36*da8a3b90SDavide Italiano 37*da8a3b90SDavide Italiano #elif TEST6 38*da8a3b90SDavide Italiano extern template<class T> constexpr T main; //expected-error{{expected unqualified-id}} 39*da8a3b90SDavide Italiano 40*da8a3b90SDavide Italiano #elif TEST7 41*da8a3b90SDavide Italiano // expected-no-diagnostics 42*da8a3b90SDavide Italiano namespace foo { 43*da8a3b90SDavide Italiano int main; 44*da8a3b90SDavide Italiano } 45*da8a3b90SDavide Italiano 46*da8a3b90SDavide Italiano #elif TEST8 z(void)47*da8a3b90SDavide Italianovoid z(void) 48*da8a3b90SDavide Italiano { 49*da8a3b90SDavide Italiano extern int main; // expected-error{{main cannot be declared as global variable}} 50*da8a3b90SDavide Italiano } 51*da8a3b90SDavide Italiano 52*da8a3b90SDavide Italiano #elif TEST9 53*da8a3b90SDavide Italiano // expected-no-diagnostics q(void)54*da8a3b90SDavide Italianoint q(void) 55*da8a3b90SDavide Italiano { 56*da8a3b90SDavide Italiano static int main; 57*da8a3b90SDavide Italiano return main; 58*da8a3b90SDavide Italiano } 59*da8a3b90SDavide Italiano 60*da8a3b90SDavide Italiano #elif TEST10 61*da8a3b90SDavide Italiano // expected-no-diagnostics 62*da8a3b90SDavide Italiano int main; 63*da8a3b90SDavide Italiano 64*da8a3b90SDavide Italiano #else 65*da8a3b90SDavide Italiano #error Unknown Test 66*da8a3b90SDavide Italiano #endif 67