1 // RUN: %clang_cc1 -fsyntax-only -verify %s
2
3 // <rdar://problem/8124080>
4 template<typename _Alloc> class allocator;
5 template<class _CharT> struct char_traits;
6 template<typename _CharT, typename _Traits = char_traits<_CharT>,
7 typename _Alloc = allocator<_CharT> >
8 class basic_string;
9 template<typename _CharT, typename _Traits, typename _Alloc>
10 const typename basic_string<_CharT, _Traits, _Alloc>::size_type
11 basic_string<_CharT, _Traits, _Alloc>::_Rep::_S_max_size // expected-error{{no member named '_Rep' in 'basic_string<_CharT, _Traits, _Alloc>'}}
12 = (((npos - sizeof(_Rep_base))/sizeof(_CharT)) - 1) / 4;
13
14 // PR7118
15 template<typename T>
16 class Foo {
17 class Bar;
f()18 void f() {
19 Bar i;
20 }
21 };
22
23 // PR7625
24 template<typename T> struct a : T {
25 struct x : T {
aaa::x26 int aa() { return p; } // expected-error{{use of undeclared identifier 'p'}}
27 };
28 };
29
30 // rdar://8605381
31 namespace rdar8605381 {
32 struct X {};
33
34 struct Y { // expected-note{{candidate}}
35 Y();
36 };
37
38 struct {
39 Y obj;
40 } objs[] = {
41 new Y // expected-error{{no viable conversion}}
42 };
43 }
44
45 // http://llvm.org/PR8234
46 namespace PR8234 {
47 template<typename Signature>
48 class callback
49 {
50 };
51
52 template<typename R , typename ARG_TYPE0>
53 class callback<R( ARG_TYPE0)>
54 {
55 public:
callback()56 callback() {}
57 };
58
59 template< typename ARG_TYPE0>
60 class callback<void( ARG_TYPE0)>
61 {
62 public:
callback()63 callback() {}
64 };
65
f()66 void f()
67 {
68 callback<void(const int&)> op;
69 }
70 }
71
72 namespace PR9007 {
73 struct bar {
74 enum xxx {
75 yyy = sizeof(struct foo*)
76 };
77 foo *xxx();
78 };
79 }
80
81 namespace PR9026 {
82 class InfallibleTArray {
83 };
84 class Variant;
85 class CompVariant {
86 operator const InfallibleTArray&() const;
87 };
88 class Variant {
89 operator const CompVariant&() const;
90 };
91 void Write(const Variant& __v);
92 void Write(const InfallibleTArray& __v);
93 Variant x;
Write2()94 void Write2() {
95 Write(x);
96 }
97 }
98
99 namespace PR10270 {
100 template<typename T> class C;
f()101 template<typename T> void f() {
102 if (C<T> == 1) // expected-error{{expected unqualified-id}} \
103 // expected-error{{invalid '==' at end of declaration}}
104 return;
105 }
106 }
107
108 namespace rdar11806334 {
109
110 class cc_YCbCr;
111
112 class cc_rgb
113 {
114 public:
115 cc_rgb( uint p ); // expected-error {{unknown type name}}
116 cc_rgb( cc_YCbCr v_in );
117 };
118
119 class cc_hsl
120 {
121 public:
122 cc_rgb rgb();
123 cc_YCbCr YCbCr();
124 };
125
126 class cc_YCbCr
127 {
128 public:
129 cc_YCbCr( const cc_rgb v_in );
130 };
131
YCbCr()132 cc_YCbCr cc_hsl::YCbCr()
133 {
134 cc_YCbCr v_out = cc_YCbCr( rgb());
135 return v_out;
136 }
137
138 }
139
140 namespace test1 {
141 int getString(const int*);
142 template<int a> class ELFObjectFile {
143 const int* sh;
ELFObjectFile()144 ELFObjectFile() {
145 switch (*sh) {
146 }
147 int SectionName(getString(sh));
148 }
149 };
150 }
151
152 namespace test2 {
153 struct fltSemantics ;
154 const fltSemantics &foobar();
VisitCastExpr(int x)155 void VisitCastExpr(int x) {
156 switch (x) {
157 case 42:
158 const fltSemantics &Sem = foobar();
159 }
160 }
161 }
162
163 namespace test3 {
164 struct nsCSSRect {
165 };
166 static int nsCSSRect::* sides;
167 nsCSSRect dimenX;
ParseBoxCornerRadii(int y)168 void ParseBoxCornerRadii(int y) {
169 switch (y) {
170 }
171 int& x = dimenX.*sides;
172 }
173 }
174