• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
main(Int argc,Carp argv[])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 
main(Int argc,Carp argv[],Char * env[])38 Int main(Int argc, Carp argv[], Char *env[]) {
39 }
40 
41 #elif TEST3
42 
43 // expected-no-diagnostics
main()44 int main() {
45 }
46 
47 #elif TEST4
48 
main()49 static int main() { // expected-error {{'main' is not allowed to be declared static}}
50 }
51 
52 #elif TEST5
53 
main()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'}}
main(float a)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
main(int argc,const char * const * argv)70 int main(int argc, const char* const* argv) {
71 }
72 
73 #elif TEST8
74 
75 template<typename T>
main()76 int main() { } // expected-error{{'main' cannot be a template}}
77 
78 #elif TEST9
79 
main()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;
main(int,const charT **)87 int main(int, const charT**) {}
88 
89 #elif TEST11
90 
91 // expected-no-diagnostics
92 typedef char charT;
main(int,charT * const *)93 int main(int, charT* const *) {}
94 
95 #elif TEST12
96 
97 // expected-no-diagnostics
98 typedef char charT;
main(int,const charT * const *)99 int main(int, const charT* const *) {}
100 
101 #elif TEST13
102 
main(void)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 
main(void)113 int main(void) {}
114 
115 #else
116 
117 #error Unknown test mode
118 
119 #endif
120