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
13int main; // expected-error{{main cannot be declared as global variable}}
14
15#elif TEST2
16// expected-no-diagnostics
17int f () {
18  int main;
19  return main;
20}
21
22#elif TEST3
23// expected-no-diagnostics
24void x(int main) {};
25int y(int main);
26
27#elif TEST4
28// expected-no-diagnostics
29class A {
30  static int main;
31};
32
33#elif TEST5
34// expected-no-diagnostics
35template<class T> constexpr T main;
36
37#elif TEST6
38extern template<class T> constexpr T main; //expected-error{{expected unqualified-id}}
39
40#elif TEST7
41// expected-no-diagnostics
42namespace foo {
43  int main;
44}
45
46#elif TEST8
47void 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
54int q(void)
55{
56  static int main;
57  return main;
58}
59
60#elif TEST10
61// expected-no-diagnostics
62int main;
63
64#else
65#error Unknown Test
66#endif
67