1 // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST1 2 // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST2 3 // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST3 4 // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST4 5 // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST5 6 // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST6 7 // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST7 8 // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST8 9 10 // RUN: cp %s %t 11 // RUN: %clang_cc1 -x c++ %s -std=c++11 -fsyntax-only -verify -DTEST9 12 // RUN: not %clang_cc1 -x c++ %t -std=c++11 -fixit -DTEST9 13 // RUN: %clang_cc1 -x c++ %t -std=c++11 -fsyntax-only -DTEST9 14 15 // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST10 16 // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST11 17 // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST12 18 // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST13 19 // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST14 20 21 #if TEST1 22 23 // expected-no-diagnostics 24 typedef int Int; 25 typedef char Char; 26 typedef Char* Carp; 27 28 Int main(Int argc, Carp argv[]) { 29 } 30 31 #elif TEST2 32 33 // expected-no-diagnostics 34 typedef int Int; 35 typedef char Char; 36 typedef Char* Carp; 37 38 Int main(Int argc, Carp argv[], Char *env[]) { 39 } 40 41 #elif TEST3 42 43 // expected-no-diagnostics 44 int main() { 45 } 46 47 #elif TEST4 48 49 static int main() { // expected-error {{'main' is not allowed to be declared static}} 50 } 51 52 #elif TEST5 53 54 inline int main() { // expected-error {{'main' is not allowed to be declared inline}} 55 } 56 57 #elif TEST6 58 59 void // expected-error {{'main' must return 'int'}} 60 main( // expected-error {{first parameter of 'main' (argument count) must be of type 'int'}} 61 float a 62 ) { 63 } 64 65 #elif TEST7 66 67 // expected-no-diagnostics 68 int main(int argc, const char* const* argv) { 69 } 70 71 #elif TEST8 72 73 template<typename T> 74 int main() { } // expected-error{{'main' cannot be a template}} 75 76 #elif TEST9 77 78 constexpr int main() { } // expected-error{{'main' is not allowed to be declared constexpr}} 79 80 #elif TEST10 81 82 // PR15100 83 // expected-no-diagnostics 84 typedef char charT; 85 int main(int, const charT**) {} 86 87 #elif TEST11 88 89 // expected-no-diagnostics 90 typedef char charT; 91 int main(int, charT* const *) {} 92 93 #elif TEST12 94 95 // expected-no-diagnostics 96 typedef char charT; 97 int main(int, const charT* const *) {} 98 99 #elif TEST13 100 101 int main(void) {} 102 103 template <typename T> 104 int main(void); // expected-error{{'main' cannot be a template}} 105 106 #elif TEST14 107 108 template <typename T> 109 int main(void); // expected-error{{'main' cannot be a template}} 110 111 int main(void) {} 112 113 #else 114 115 #error Unknown test mode 116 117 #endif 118