1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -fsyntax-only -verify %s 2a6f0f9d589a06737707fe914e06bd6d4bfae0997Douglas Gregor 3a6f0f9d589a06737707fe914e06bd6d4bfae0997Douglas Gregorclass X {}; 4a6f0f9d589a06737707fe914e06bd6d4bfae0997Douglas Gregor 5a6f0f9d589a06737707fe914e06bd6d4bfae0997Douglas Gregorvoid test() { 6a6f0f9d589a06737707fe914e06bd6d4bfae0997Douglas Gregor X x; 7a6f0f9d589a06737707fe914e06bd6d4bfae0997Douglas Gregor 82d1c21414199a7452f122598189363a3922605b1Douglas Gregor x.int; // expected-error{{expected unqualified-id}} 9124b878dba5007df0a268ea128a6ad8dc5dd2c5eDouglas Gregor x.~int(); // expected-error{{expected a class name}} 109fa8e569407e02148888136609431a3fe083096dNick Lewycky x.operator; // expected-error{{expected a type}} 1169730c115c2d0fec2f20609d905d920a5a41b29bRichard Smith x.operator typedef; // expected-error{{expected a type}} expected-error{{type name does not allow storage class}} 12a6f0f9d589a06737707fe914e06bd6d4bfae0997Douglas Gregor} 13a6f0f9d589a06737707fe914e06bd6d4bfae0997Douglas Gregor 14a6f0f9d589a06737707fe914e06bd6d4bfae0997Douglas Gregorvoid test2() { 15a6f0f9d589a06737707fe914e06bd6d4bfae0997Douglas Gregor X *x; 16a6f0f9d589a06737707fe914e06bd6d4bfae0997Douglas Gregor 172d1c21414199a7452f122598189363a3922605b1Douglas Gregor x->int; // expected-error{{expected unqualified-id}} 18124b878dba5007df0a268ea128a6ad8dc5dd2c5eDouglas Gregor x->~int(); // expected-error{{expected a class name}} 199fa8e569407e02148888136609431a3fe083096dNick Lewycky x->operator; // expected-error{{expected a type}} 2069730c115c2d0fec2f20609d905d920a5a41b29bRichard Smith x->operator typedef; // expected-error{{expected a type}} expected-error{{type name does not allow storage class}} 21a6f0f9d589a06737707fe914e06bd6d4bfae0997Douglas Gregor} 227727acf243ee61c0757d86c95b69dbee56a3d898John McCall 237727acf243ee61c0757d86c95b69dbee56a3d898John McCall// PR6327 247727acf243ee61c0757d86c95b69dbee56a3d898John McCallnamespace test3 { 257727acf243ee61c0757d86c95b69dbee56a3d898John McCall template <class A, class B> struct pair {}; 267727acf243ee61c0757d86c95b69dbee56a3d898John McCall 277727acf243ee61c0757d86c95b69dbee56a3d898John McCall void test0() { 287727acf243ee61c0757d86c95b69dbee56a3d898John McCall pair<int, int> z = minmax({}); // expected-error {{expected expression}} 297727acf243ee61c0757d86c95b69dbee56a3d898John McCall } 307727acf243ee61c0757d86c95b69dbee56a3d898John McCall 317727acf243ee61c0757d86c95b69dbee56a3d898John McCall struct string { 327727acf243ee61c0757d86c95b69dbee56a3d898John McCall class iterator {}; 337727acf243ee61c0757d86c95b69dbee56a3d898John McCall }; 347727acf243ee61c0757d86c95b69dbee56a3d898John McCall 357727acf243ee61c0757d86c95b69dbee56a3d898John McCall void test1() { 367727acf243ee61c0757d86c95b69dbee56a3d898John McCall string s; 377727acf243ee61c0757d86c95b69dbee56a3d898John McCall string::iterator i = s.foo(); // expected-error {{no member named 'foo'}} 387727acf243ee61c0757d86c95b69dbee56a3d898John McCall } 397727acf243ee61c0757d86c95b69dbee56a3d898John McCall} 40d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis 41d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis 42d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis// Make sure we don't crash. 43d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidisnamespace rdar11293995 { 44d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis 45d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidisstruct Length { 46d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis explicit Length(PassRefPtr<CalculationValue>); // expected-error {{unknown type name}} \ 47d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis expected-error {{expected ')'}} \ 48d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis expected-note {{to match this '('}} 49d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis}; 50d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis 51d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidisstruct LengthSize { 52d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis Length m_width; 53d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis Length m_height; 54d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis}; 55d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis 56d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidisenum EFillSizeType { Contain, Cover, SizeLength, SizeNone }; 57d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis 58d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidisstruct FillSize { 59d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis EFillSizeType type; 60d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis LengthSize size; 61d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis}; 62d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis 63d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidisclass FillLayer { 64d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidispublic: 65d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis void setSize(FillSize f) { m_sizeType = f.type;} 66d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidisprivate: 67d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis unsigned m_sizeType : 2; 68d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis}; 69d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis 70d601c62ad49ddc2593dfeb3d777ad8baf4ab6acbArgyrios Kyrtzidis} 71