1 // RUN: %clang_cc1 -fsyntax-only -verify %s
2 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s
3 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
4
5 namespace A { // expected-note 2 {{previous definition is here}}
6 int A;
f()7 void f() { A = 0; }
8 }
9
f()10 void f() { A = 0; } // expected-error {{unexpected namespace name 'A': expected expression}}
11 int A; // expected-error {{redefinition of 'A' as different kind of symbol}}
12 class A; // expected-error {{redefinition of 'A' as different kind of symbol}}
13
14 class B {}; // expected-note {{previous definition is here}}
15 // expected-note@-1 {{candidate function (the implicit copy assignment operator) not viable}}
16 #if __cplusplus >= 201103L // C++11 or later
17 // expected-note@-3 {{candidate function (the implicit move assignment operator) not viable}}
18 #endif
19
20 void C(); // expected-note {{previous definition is here}}
21 namespace C {} // expected-error {{redefinition of 'C' as different kind of symbol}}
22
23 namespace D {
24 class D {};
25 }
26
27 namespace S1 {
28 int x;
29
30 namespace S2 {
31
32 namespace S3 {
33 B x;
34 }
35 }
36 }
37
38 namespace S1 {
f()39 void f() {
40 x = 0;
41 }
42
43 namespace S2 {
44
45 namespace S3 {
f()46 void f() {
47 x = 0; // expected-error {{no viable overloaded '='}}
48 }
49 }
50
51 int y;
52 }
53 }
54
55 namespace S1 {
56 namespace S2 {
57 namespace S3 {
f3()58 void f3() {
59 y = 0;
60 }
61 }
62 }
63 }
64
65 namespace B {} // expected-error {{redefinition of 'B' as different kind of symbol}}
66
67
68 namespace foo {
69 enum x {
70 Y
71 };
72 }
73
74 static foo::x test1; // ok
75
76 static foo::X test2; // typo: expected-error {{no type named 'X' in}}
77
78 namespace PR6620 {
79 namespace numeric {
80 namespace op {
81 struct greater {};
82 }
83 namespace {
84 extern op::greater const greater;
85 }
86 }
87
88 namespace numeric {
89 namespace {
90 op::greater const greater = op::greater();
91 }
92
93 template<typename T, typename U>
f(T & l,U & r)94 int f(T& l, U& r)
95 { numeric::greater(l, r); }
96
97 }
98 }
99