blob: 592ca30790f16e5df57e6f522941503531e07dcf [file] [log] [blame]
Daniel Dunbara45cf5b2009-03-24 02:24:46 +00001// RUN: clang-cc -fsyntax-only -verify %s
Sebastian Redl2175b6a2009-02-07 19:52:04 +00002namespace A { // expected-note 2 {{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}}
Ted Kremenek25a3b872008-04-29 04:43:50 +000012
Chris Lattner0369c572008-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 Kyrtzidisfa8e15b2008-05-09 23:39:43 +000015
Argyrios Kyrtzidis7da34d02008-07-16 07:45:46 +000016namespace D {
17 class D {};
18}
19
Argyrios Kyrtzidisfa8e15b2008-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 Lattner0369c572008-11-23 23:12:31 +000040 x = 0; // expected-error {{incompatible type assigning 'int', expected 'class B'}}
Argyrios Kyrtzidisfa8e15b2008-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 Gregor91f84212008-12-11 16:49:14 +000057
58namespace B {} // expected-error {{redefinition of 'B' as different kind of symbol}}
Chris Lattnerb4a8fe82009-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'}}