blob: 592ca30790f16e5df57e6f522941503531e07dcf [file] [log] [blame]
Daniel Dunbard7d5f022009-03-24 02:24:46 +00001// RUN: clang-cc -fsyntax-only -verify %s
Sebastian Redl3cb06922009-02-07 19:52:04 +00002namespace A { // expected-note 2 {{previous definition is here}}
Ted Kremenekdd6cec12008-04-29 04:43:50 +00003 int A;
4 void f() { A = 0; }
5}
6
Chris Lattner5f4a6822008-11-23 23:12:31 +00007void f() { A = 0; } // expected-error {{unexpected namespace name 'A': expected expression}}
8int A; // expected-error {{redefinition of 'A' as different kind of symbol}}
9class A; // expected-error {{redefinition of 'A' as different kind of symbol}}
Ted Kremenekdd6cec12008-04-29 04:43:50 +000010
Chris Lattner5f4a6822008-11-23 23:12:31 +000011class B {}; // expected-note {{previous definition is here}}
Ted Kremenekdd6cec12008-04-29 04:43:50 +000012
Chris Lattner5f4a6822008-11-23 23:12:31 +000013void C(); // expected-note {{previous definition is here}}
14namespace C {} // expected-error {{redefinition of 'C' as different kind of symbol}}
Argyrios Kyrtzidis00bc6452008-05-09 23:39:43 +000015
Argyrios Kyrtzidisb02ef242008-07-16 07:45:46 +000016namespace D {
17 class D {};
18}
19
Argyrios Kyrtzidis00bc6452008-05-09 23:39:43 +000020namespace S1 {
21 int x;
22
23 namespace S2 {
24
25 namespace S3 {
26 B x;
27 }
28 }
29}
30
31namespace S1 {
32 void f() {
33 x = 0;
34 }
35
36 namespace S2 {
37
38 namespace S3 {
39 void f() {
Chris Lattner5f4a6822008-11-23 23:12:31 +000040 x = 0; // expected-error {{incompatible type assigning 'int', expected 'class B'}}
Argyrios Kyrtzidis00bc6452008-05-09 23:39:43 +000041 }
42 }
43
44 int y;
45 }
46}
47
48namespace S1 {
49 namespace S2 {
50 namespace S3 {
51 void f3() {
52 y = 0;
53 }
54 }
55 }
56}
Douglas Gregor44b43212008-12-11 16:49:14 +000057
58namespace B {} // expected-error {{redefinition of 'B' as different kind of symbol}}
Chris Lattnerf4382f52009-04-14 22:17:06 +000059
60
61namespace foo {
62 enum x {
63 Y
64 };
65}
66
67static foo::x test1; // ok
68
69static foo::X test2; // typo: expected-error {{unknown type name 'X'}}