// RUN: %clang_cc1 -fsyntax-only -verify %s // RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s // <rdar://problem/8124080> template<typename _Alloc> class allocator; template<class _CharT> struct char_traits; template<typename _CharT, typename _Traits = char_traits<_CharT>, typename _Alloc = allocator<_CharT> > class basic_string; template<typename _CharT, typename _Traits, typename _Alloc> const typename basic_string<_CharT, _Traits, _Alloc>::size_type basic_string<_CharT, _Traits, _Alloc>::_Rep::_S_max_size // expected-error{{no member named '_Rep' in 'basic_string<_CharT, _Traits, _Alloc>'}} = (((npos - sizeof(_Rep_base))/sizeof(_CharT)) - 1) / 4; // PR7118 template<typename T> class Foo { class Bar; void f() { Bar i; } }; // PR7625 template<typename T> struct a : T { struct x : T { int aa() { return p; } // expected-error{{use of undeclared identifier 'p'}} }; }; // rdar://8605381 namespace rdar8605381 { struct X {}; struct Y { // expected-note{{candidate constructor (the implicit copy constructor) not viable}} #if __cplusplus >= 201103L // C++11 or later // expected-note@-2 {{candidate constructor (the implicit move constructor) not viable}} #endif Y(); }; struct { Y obj; } objs[] = { new Y // expected-error{{no viable conversion}} }; } // http://llvm.org/PR8234 namespace PR8234 { template<typename Signature> class callback { }; template<typename R , typename ARG_TYPE0> class callback<R( ARG_TYPE0)> { public: callback() {} }; template< typename ARG_TYPE0> class callback<void( ARG_TYPE0)> { public: callback() {} }; void f() { callback<void(const int&)> op; } } namespace PR9007 { struct bar { enum xxx { yyy = sizeof(struct foo*) }; foo *xxx(); }; } namespace PR9026 { class InfallibleTArray { }; class Variant; class CompVariant { operator const InfallibleTArray&() const; }; class Variant { operator const CompVariant&() const; }; void Write(const Variant& __v); void Write(const InfallibleTArray& __v); Variant x; void Write2() { Write(x); } } namespace PR10270 { template<typename T> class C; template<typename T> void f() { if (C<T> == 1) // expected-error{{expected unqualified-id}} return; } } namespace rdar11806334 { class cc_YCbCr; class cc_rgb { public: cc_rgb( uint p ); // expected-error {{unknown type name}} cc_rgb( cc_YCbCr v_in ); }; class cc_hsl { public: cc_rgb rgb(); cc_YCbCr YCbCr(); }; class cc_YCbCr { public: cc_YCbCr( const cc_rgb v_in ); }; cc_YCbCr cc_hsl::YCbCr() { cc_YCbCr v_out = cc_YCbCr( rgb()); return v_out; } } namespace test1 { int getString(const int*); template<int a> class ELFObjectFile { const int* sh; ELFObjectFile() { switch (*sh) { } int SectionName(getString(sh)); } }; } namespace test2 { struct fltSemantics ; const fltSemantics &foobar(); void VisitCastExpr(int x) { switch (x) { case 42: const fltSemantics &Sem = foobar(); } } } namespace test3 { struct nsCSSRect { }; static int nsCSSRect::* sides; nsCSSRect dimenX; void ParseBoxCornerRadii(int y) { switch (y) { } int& x = dimenX.*sides; } } namespace pr16964 { template<typename> struct bs { bs(); static int* member(); // expected-note{{possible target}} member(); // expected-error{{C++ requires a type specifier for all declarations}} static member(); // expected-error{{C++ requires a type specifier for all declarations}} static int* member(int); // expected-note{{possible target}} }; template<typename T> bs<T>::bs() { member; } // expected-error{{did you mean to call it}} bs<int> test() { return bs<int>(); // expected-note{{in instantiation}} } } namespace pr12791 { template<class _Alloc> class allocator {}; template<class _CharT> struct char_traits; struct input_iterator_tag {}; struct forward_iterator_tag : public input_iterator_tag {}; template<typename _CharT, typename _Traits, typename _Alloc> struct basic_string { struct _Alloc_hider : _Alloc { _Alloc_hider(_CharT*, const _Alloc&); }; mutable _Alloc_hider _M_dataplus; template<class _InputIterator> basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a = _Alloc()); template<class _InIterator> static _CharT* _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a, input_iterator_tag); template<class _FwdIterator> static _CharT* _S_construct(_FwdIterator __beg, _FwdIterator __end, const _Alloc& __a, forward_iterator_tag); static _CharT* _S_construct(size_type __req, _CharT __c, const _Alloc& __a); // expected-error{{unknown type name 'size_type'}} }; template<typename _CharT, typename _Traits, typename _Alloc> template<typename _InputIterator> basic_string<_CharT, _Traits, _Alloc>:: basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a) : _M_dataplus(_S_construct(__beg, __end, __a, input_iterator_tag()), __a) {} template<typename _CharT, typename _Traits = char_traits<_CharT>, typename _Alloc = allocator<_CharT> > struct basic_stringbuf { typedef _CharT char_type; typedef basic_string<char_type, _Traits, _Alloc> __string_type; __string_type str() const {__string_type((char_type*)0,(char_type*)0);} }; template class basic_stringbuf<char>; } namespace pr16989 { class C { template <class T> C tpl_mem(T *) { return } // expected-error{{expected expression}} void mem(int *p) { tpl_mem(p); } }; class C2 { void f(); }; void C2::f() {} } namespace pr20660 { appendList(int[]...); // expected-error {{C++ requires a type specifier for all declarations}} appendList(int[]...) { } // expected-error {{C++ requires a type specifier for all declarations}} }