blob: 848dc2767157284d988aeeb7460b34e73331c59e [file] [log] [blame]
Ted Kremenek25a3b872008-04-29 04:43:50 +00001// RUN: clang -fsyntax-only -verify %s
Chris Lattner0369c572008-11-23 23:12:31 +00002namespace A { // expected-note {{previous definition is here}}
Ted Kremenek25a3b872008-04-29 04:43:50 +00003 int A;
4 void f() { A = 0; }
5}
6
Chris Lattner0369c572008-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 Kremenek25a3b872008-04-29 04:43:50 +000010
Chris Lattner0369c572008-11-23 23:12:31 +000011class B {}; // expected-note {{previous definition is here}}
12namespace B {} // expected-error {{redefinition of 'B' as different kind of symbol}}
Ted Kremenek25a3b872008-04-29 04:43:50 +000013
Chris Lattner0369c572008-11-23 23:12:31 +000014void C(); // expected-note {{previous definition is here}}
15namespace C {} // expected-error {{redefinition of 'C' as different kind of symbol}}
Argyrios Kyrtzidisfa8e15b2008-05-09 23:39:43 +000016
Argyrios Kyrtzidis7da34d02008-07-16 07:45:46 +000017namespace D {
18 class D {};
19}
20
Argyrios Kyrtzidisfa8e15b2008-05-09 23:39:43 +000021namespace S1 {
22 int x;
23
24 namespace S2 {
25
26 namespace S3 {
27 B x;
28 }
29 }
30}
31
32namespace S1 {
33 void f() {
34 x = 0;
35 }
36
37 namespace S2 {
38
39 namespace S3 {
40 void f() {
Chris Lattner0369c572008-11-23 23:12:31 +000041 x = 0; // expected-error {{incompatible type assigning 'int', expected 'class B'}}
Argyrios Kyrtzidisfa8e15b2008-05-09 23:39:43 +000042 }
43 }
44
45 int y;
46 }
47}
48
49namespace S1 {
50 namespace S2 {
51 namespace S3 {
52 void f3() {
53 y = 0;
54 }
55 }
56 }
57}