xref: /minix3/external/bsd/llvm/dist/clang/test/SemaCXX/class-names.cpp (revision f4a2713ac843a11c696ec80c0a5e3e5d80b4d338)
1*f4a2713aSLionel Sambuc // RUN: %clang_cc1 -fsyntax-only -verify %s
2*f4a2713aSLionel Sambuc class C { };
3*f4a2713aSLionel Sambuc 
4*f4a2713aSLionel Sambuc C c;
5*f4a2713aSLionel Sambuc 
6*f4a2713aSLionel Sambuc void D(int);
7*f4a2713aSLionel Sambuc 
8*f4a2713aSLionel Sambuc class D {};
9*f4a2713aSLionel Sambuc 
foo()10*f4a2713aSLionel Sambuc void foo()
11*f4a2713aSLionel Sambuc {
12*f4a2713aSLionel Sambuc   D(5);
13*f4a2713aSLionel Sambuc   class D d;
14*f4a2713aSLionel Sambuc }
15*f4a2713aSLionel Sambuc 
16*f4a2713aSLionel Sambuc class D; // expected-note {{previous use is here}}
17*f4a2713aSLionel Sambuc 
18*f4a2713aSLionel Sambuc enum D; // expected-error {{use of 'D' with tag type that does not match previous declaration}}
19*f4a2713aSLionel Sambuc 
20*f4a2713aSLionel Sambuc class A * A;
21*f4a2713aSLionel Sambuc 
22*f4a2713aSLionel Sambuc class A * a2;
23*f4a2713aSLionel Sambuc 
bar()24*f4a2713aSLionel Sambuc void bar()
25*f4a2713aSLionel Sambuc {
26*f4a2713aSLionel Sambuc   A = 0;
27*f4a2713aSLionel Sambuc }
28*f4a2713aSLionel Sambuc 
29*f4a2713aSLionel Sambuc void C(int);
30*f4a2713aSLionel Sambuc 
bar2()31*f4a2713aSLionel Sambuc void bar2()
32*f4a2713aSLionel Sambuc {
33*f4a2713aSLionel Sambuc   C(17);
34*f4a2713aSLionel Sambuc }
35*f4a2713aSLionel Sambuc 
36*f4a2713aSLionel Sambuc extern int B;
37*f4a2713aSLionel Sambuc class B;
38*f4a2713aSLionel Sambuc class B {};
39*f4a2713aSLionel Sambuc int B;
40*f4a2713aSLionel Sambuc 
41*f4a2713aSLionel Sambuc enum E { e1_val };
42*f4a2713aSLionel Sambuc E e1;
43*f4a2713aSLionel Sambuc 
44*f4a2713aSLionel Sambuc void E(int);
45*f4a2713aSLionel Sambuc 
bar3()46*f4a2713aSLionel Sambuc void bar3() {
47*f4a2713aSLionel Sambuc   E(17);
48*f4a2713aSLionel Sambuc }
49*f4a2713aSLionel Sambuc 
50*f4a2713aSLionel Sambuc enum E e2;
51*f4a2713aSLionel Sambuc 
52*f4a2713aSLionel Sambuc enum E2 { E2 };
53