blob: f5682bd74d92c3301b9ad329638fccaa8637cc24 [file] [log] [blame]
Douglas Gregor025291b2010-07-01 00:21:21 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
2
3// <rdar://problem/8124080>
4template<typename _Alloc> class allocator;
5template<class _CharT> struct char_traits;
6template<typename _CharT, typename _Traits = char_traits<_CharT>,
7 typename _Alloc = allocator<_CharT> >
8class basic_string;
9template<typename _CharT, typename _Traits, typename _Alloc>
10const typename basic_string<_CharT, _Traits, _Alloc>::size_type
11basic_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
15template<typename T>
16class Foo {
17 class Bar;
18 void f() {
19 Bar i;
20 }
21};
Argyrios Kyrtzidis6a622df2010-10-30 01:06:23 +000022
23// PR7625
24template<typename T> struct a : T {
25 struct x : T {
26 int aa() { return p; } // expected-error{{use of undeclared identifier 'p'}}
27 };
28};
Argyrios Kyrtzidisd86132d2010-10-30 01:06:26 +000029
30// rdar://8605381
31namespace rdar8605381 {
32struct X {};
33
34struct Y { // expected-note{{candidate}}
35 Y();
36};
37
38struct {
39 Y obj;
40} objs[] = {
41 new Y // expected-error{{no viable conversion}}
42};
43}
Argyrios Kyrtzidis2c4792c2010-11-05 23:25:18 +000044
45// http://llvm.org/PR8234
46namespace PR8234 {
47template<typename Signature>
48class callback
49{
50};
51
52template<typename R , typename ARG_TYPE0>
53class callback<R( ARG_TYPE0)>
54{
55 public:
56 callback() {}
57};
58
59template< typename ARG_TYPE0>
60class callback<void( ARG_TYPE0)>
61{
62 public:
63 callback() {}
64};
65
66void f()
67{
68 callback<void(const int&)> op;
69}
70}
Rafael Espindolaac6a8582011-01-20 16:11:21 +000071
72namespace PR9007 {
73 struct bar {
74 enum xxx {
75 yyy = sizeof(struct foo*)
76 };
77 foo *xxx();
Rafael Espindolaf3beabf2011-01-22 15:34:07 +000078 };
79}
80
81namespace 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;
94 void Write2() {
95 Write(x);
96 }
Rafael Espindolaac6a8582011-01-20 16:11:21 +000097}
Douglas Gregor9a30c992011-07-05 16:13:20 +000098
99namespace PR10270 {
100 template<typename T> class C;
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}
Argyrios Kyrtzidisee7af502012-07-19 16:08:28 +0000107
108namespace rdar11806334 {
109
110class cc_YCbCr;
111
112class cc_rgb
113{
114 public:
115 cc_rgb( uint p ); // expected-error {{unknown type name}}
116 cc_rgb( cc_YCbCr v_in );
117};
118
119class cc_hsl
120{
121 public:
122 cc_rgb rgb();
123 cc_YCbCr YCbCr();
124};
125
126class cc_YCbCr
127{
128 public:
129 cc_YCbCr( const cc_rgb v_in );
130};
131
132cc_YCbCr cc_hsl::YCbCr()
133{
134 cc_YCbCr v_out = cc_YCbCr( rgb());
135 return v_out;
136}
137
138}
Rafael Espindola3954d392012-10-27 04:54:49 +0000139
140namespace test1 {
141 int getString(const int*);
142 template<int a> class ELFObjectFile {
143 const int* sh;
144 ELFObjectFile() {
145 switch (*sh) {
146 }
147 int SectionName(getString(sh));
148 }
149 };
150}
Rafael Espindola1a7b2e92012-10-28 02:25:27 +0000151
152namespace test2 {
153 struct fltSemantics ;
154 const fltSemantics &foobar();
155 void VisitCastExpr(int x) {
156 switch (x) {
157 case 42:
158 const fltSemantics &Sem = foobar();
159 }
160 }
161}
Rafael Espindolaef4b6662012-11-01 14:32:20 +0000162
163namespace test3 {
164 struct nsCSSRect {
165 };
166 static int nsCSSRect::* sides;
167 nsCSSRect dimenX;
168 void ParseBoxCornerRadii(int y) {
169 switch (y) {
170 }
171 int& x = dimenX.*sides;
172 }
173}