Home | History | Annotate | Download | only in SemaCXX
      1 // RUN: %clang_cc1 -fsyntax-only -verify %s
      2 // pr7029
      3 
      4 template <class Key, class T> struct QMap
      5 {
      6   void insert(const Key &, const T &);
      7   T v;
      8 };
      9 
     10 
     11 template <class Key, class T>
     12 void QMap<Key, T>::insert(const Key &, const T &avalue)
     13 {
     14   v = avalue;
     15 }
     16 
     17 
     18 struct inotify_event
     19 {
     20   int wd;
     21 
     22   // clang doesn't like '[]':
     23   // cannot initialize a parameter of type 'void *' with an rvalue of type 'char (*)[]'
     24   char name [];
     25 };
     26 
     27 
     28 void foo()
     29 {
     30     inotify_event event;
     31     inotify_event* ptr = &event;
     32     inotify_event event1 = *ptr;
     33     *ptr = event;
     34     QMap<int, inotify_event> eventForId;
     35     eventForId.insert(ptr->wd, *ptr);
     36 }
     37 
     38 struct S {
     39 	virtual void foo();
     40 };
     41 
     42 struct X {
     43    int blah;
     44    S strings[];	// expected-error {{flexible array member 'strings' of non-POD element type 'S []'}}
     45 };
     46 
     47 class A {
     48   int s;
     49   char c[];
     50 };
     51 
     52 union B {
     53   int s;
     54   char c[];
     55 };
     56 
     57 namespace rdar9065507 {
     58 
     59 struct StorageBase {
     60   long ref_count;
     61   unsigned size;
     62   unsigned capacity;
     63 };
     64 
     65 struct Storage : StorageBase {
     66   int data[];
     67 };
     68 
     69 }
     70