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