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 const int main(); // expected-error {{'main' must return 'int'}} 66 67 #elif TEST7 68 69 // expected-no-diagnostics 70 int main(int argc, const char* const* argv) { 71 } 72 73 #elif TEST8 74 75 template<typename T> 76 int main() { } // expected-error{{'main' cannot be a template}} 77 78 #elif TEST9 79 80 constexpr int main() { } // expected-error{{'main' is not allowed to be declared constexpr}} 81 82 #elif TEST10 83 84 // PR15100 85 // expected-no-diagnostics 86 typedef char charT; 87 int main(int, const charT**) {} 88 89 #elif TEST11 90 91 // expected-no-diagnostics 92 typedef char charT; 93 int main(int, charT* const *) {} 94 95 #elif TEST12 96 97 // expected-no-diagnostics 98 typedef char charT; 99 int main(int, const charT* const *) {} 100 101 #elif TEST13 102 103 int main(void) {} 104 105 template <typename T> 106 int main(void); // expected-error{{'main' cannot be a template}} 107 108 #elif TEST14 109 110 template <typename T> 111 int main(void); // expected-error{{'main' cannot be a template}} 112 113 int main(void) {} 114 115 #else 116 117 #error Unknown test mode 118 119 #endif 120