1// RUN: %clang_cc1 -fsyntax-only -verify %s
2
3class X {};
4
5void 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
14void 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
24namespace 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.
43namespace rdar11293995 {
44
45struct Length {
46  explicit Length(PassRefPtr<CalculationValue>); // expected-error {{unknown type name}} \
47                    expected-error {{expected ')'}} \
48                    expected-note {{to match this '('}}
49};
50
51struct LengthSize {
52    Length m_width;
53    Length m_height;
54};
55
56enum EFillSizeType { Contain, Cover, SizeLength, SizeNone };
57
58struct FillSize {
59    EFillSizeType type;
60    LengthSize size;
61};
62
63class FillLayer {
64public:
65    void setSize(FillSize f) { m_sizeType = f.type;}
66private:
67    unsigned m_sizeType : 2;
68};
69
70}
71