1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s 2*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s 3*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s 4*67e74705SXin Li 5*67e74705SXin Li class X {}; 6*67e74705SXin Li test()7*67e74705SXin Livoid test() { 8*67e74705SXin Li X x; 9*67e74705SXin Li 10*67e74705SXin Li x.int; // expected-error{{expected unqualified-id}} 11*67e74705SXin Li x.~int(); // expected-error{{expected a class name}} 12*67e74705SXin Li x.operator; // expected-error{{expected a type}} 13*67e74705SXin Li x.operator typedef; // expected-error{{expected a type}} expected-error{{type name does not allow storage class}} 14*67e74705SXin Li } 15*67e74705SXin Li test2()16*67e74705SXin Livoid test2() { 17*67e74705SXin Li X *x; 18*67e74705SXin Li 19*67e74705SXin Li x->int; // expected-error{{expected unqualified-id}} 20*67e74705SXin Li x->~int(); // expected-error{{expected a class name}} 21*67e74705SXin Li x->operator; // expected-error{{expected a type}} 22*67e74705SXin Li x->operator typedef; // expected-error{{expected a type}} expected-error{{type name does not allow storage class}} 23*67e74705SXin Li } 24*67e74705SXin Li 25*67e74705SXin Li // PR6327 26*67e74705SXin Li namespace test3 { 27*67e74705SXin Li template <class A, class B> struct pair {}; 28*67e74705SXin Li template <class _E> class initializer_list {}; minmax(initializer_list<_Tp> __l)29*67e74705SXin Li template <typename _Tp> pair<_Tp, _Tp> minmax(initializer_list<_Tp> __l) {}; 30*67e74705SXin Li test0()31*67e74705SXin Li void test0() { 32*67e74705SXin Li pair<int, int> z = minmax({}); 33*67e74705SXin Li #if __cplusplus <= 199711L // C++03 or earlier modes 34*67e74705SXin Li // expected-error@-2 {{expected expression}} 35*67e74705SXin Li #else 36*67e74705SXin Li // expected-error@-4 {{no matching function for call to 'minmax'}} 37*67e74705SXin Li // expected-note@-8 {{candidate template ignored: couldn't infer template argument '_Tp'}} 38*67e74705SXin Li #endif 39*67e74705SXin Li } 40*67e74705SXin Li 41*67e74705SXin Li struct string { 42*67e74705SXin Li class iterator {}; 43*67e74705SXin Li }; 44*67e74705SXin Li test1()45*67e74705SXin Li void test1() { 46*67e74705SXin Li string s; 47*67e74705SXin Li string::iterator i = s.foo(); // expected-error {{no member named 'foo'}} 48*67e74705SXin Li } 49*67e74705SXin Li } 50*67e74705SXin Li 51*67e74705SXin Li 52*67e74705SXin Li // Make sure we don't crash. 53*67e74705SXin Li namespace rdar11293995 { 54*67e74705SXin Li 55*67e74705SXin Li struct Length { 56*67e74705SXin Li explicit Length(PassRefPtr<CalculationValue>); // expected-error {{unknown type name}} \ 57*67e74705SXin Li expected-error {{expected ')'}} \ 58*67e74705SXin Li expected-note {{to match this '('}} 59*67e74705SXin Li }; 60*67e74705SXin Li 61*67e74705SXin Li struct LengthSize { 62*67e74705SXin Li Length m_width; 63*67e74705SXin Li Length m_height; 64*67e74705SXin Li }; 65*67e74705SXin Li 66*67e74705SXin Li enum EFillSizeType { Contain, Cover, SizeLength, SizeNone }; 67*67e74705SXin Li 68*67e74705SXin Li struct FillSize { 69*67e74705SXin Li EFillSizeType type; 70*67e74705SXin Li LengthSize size; 71*67e74705SXin Li }; 72*67e74705SXin Li 73*67e74705SXin Li class FillLayer { 74*67e74705SXin Li public: setSize(FillSize f)75*67e74705SXin Li void setSize(FillSize f) { m_sizeType = f.type;} 76*67e74705SXin Li private: 77*67e74705SXin Li unsigned m_sizeType : 2; 78*67e74705SXin Li }; 79*67e74705SXin Li 80*67e74705SXin Li } 81