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