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