1 // RUN: %clang_cc1 -fsyntax-only -verify %s
2 
3 class X {};
4 
5 void test() {
6   X x;
7 
8   x.int; // expected-error{{expected unqualified-id}}
9   x.~int(); // expected-error{{expected a class name}}
10   x.operator; // expected-error{{expected a type}}
11   x.operator typedef; // expected-error{{expected a type}} expected-error{{type name does not allow storage class}}
12 }
13 
14 void test2() {
15   X *x;
16 
17   x->int; // expected-error{{expected unqualified-id}}
18   x->~int(); // expected-error{{expected a class name}}
19   x->operator; // expected-error{{expected a type}}
20   x->operator typedef; // expected-error{{expected a type}} expected-error{{type name does not allow storage class}}
21 }
22 
23 // PR6327
24 namespace test3 {
25   template <class A, class B> struct pair {};
26 
27   void test0() {
28     pair<int, int> z = minmax({}); // expected-error {{expected expression}}
29   }
30 
31   struct string {
32     class iterator {};
33   };
34 
35   void test1() {
36     string s;
37     string::iterator i = s.foo(); // expected-error {{no member named 'foo'}}
38   }
39 }
40 
41 
42 // Make sure we don't crash.
43 namespace rdar11293995 {
44 
45 struct Length {
46   explicit Length(PassRefPtr<CalculationValue>); // expected-error {{unknown type name}} \
47                     expected-error {{expected ')'}} \
48                     expected-note {{to match this '('}}
49 };
50 
51 struct LengthSize {
52     Length m_width;
53     Length m_height;
54 };
55 
56 enum EFillSizeType { Contain, Cover, SizeLength, SizeNone };
57 
58 struct FillSize {
59     EFillSizeType type;
60     LengthSize size;
61 };
62 
63 class FillLayer {
64 public:
65     void setSize(FillSize f) { m_sizeType = f.type;}
66 private:
67     unsigned m_sizeType : 2;
68 };
69 
70 }
71