14142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian// RUN: %clang_cc1 -fsyntax-only -verify %s 24142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian// pr7029 34142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian 44142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahaniantemplate <class Key, class T> struct QMap 54142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian{ 64142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian void insert(const Key &, const T &); 74142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian T v; 84142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian}; 94142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian 104142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian 114142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahaniantemplate <class Key, class T> 124142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanianvoid QMap<Key, T>::insert(const Key &, const T &avalue) 134142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian{ 144142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian v = avalue; 154142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian} 164142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian 174142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian 184142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanianstruct inotify_event 194142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian{ 204142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian int wd; 214142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian 224142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian // clang doesn't like '[]': 234142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian // cannot initialize a parameter of type 'void *' with an rvalue of type 'char (*)[]' 244142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian char name []; 254142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian}; 264142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian 274142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian 284142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanianvoid foo() 294142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian{ 304142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian inotify_event event; 314142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian inotify_event* ptr = &event; 324142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian inotify_event event1 = *ptr; 334142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian *ptr = event; 344142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian QMap<int, inotify_event> eventForId; 354142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian eventForId.insert(ptr->wd, *ptr); 364142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian} 374142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian 384142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanianstruct S { 394142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian virtual void foo(); 404142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian}; 414142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian 424142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanianstruct X { 434142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian int blah; 442c0a54031c98721460806e78e0e10da093d3fd72Fariborz Jahanian S strings[]; // expected-error {{flexible array member 'strings' of non-POD element type 'S []'}} 454142cebf70fe6c3855570c98b8042431797a65fdFariborz Jahanian}; 46e63438b34b075a65849b9dee022adffc7c222ae5Anders Carlsson 47e63438b34b075a65849b9dee022adffc7c222ae5Anders Carlssonclass A { 48e63438b34b075a65849b9dee022adffc7c222ae5Anders Carlsson int s; 49e63438b34b075a65849b9dee022adffc7c222ae5Anders Carlsson char c[]; 50e63438b34b075a65849b9dee022adffc7c222ae5Anders Carlsson}; 51e63438b34b075a65849b9dee022adffc7c222ae5Anders Carlsson 52e63438b34b075a65849b9dee022adffc7c222ae5Anders Carlssonunion B { 53e63438b34b075a65849b9dee022adffc7c222ae5Anders Carlsson int s; 54d97cec3deb6e34f0f9d4f5f8ec11b28e44812727Argyrios Kyrtzidis char c[]; 55d97cec3deb6e34f0f9d4f5f8ec11b28e44812727Argyrios Kyrtzidis}; 56d97cec3deb6e34f0f9d4f5f8ec11b28e44812727Argyrios Kyrtzidis 57d97cec3deb6e34f0f9d4f5f8ec11b28e44812727Argyrios Kyrtzidisnamespace rdar9065507 { 58d97cec3deb6e34f0f9d4f5f8ec11b28e44812727Argyrios Kyrtzidis 59d97cec3deb6e34f0f9d4f5f8ec11b28e44812727Argyrios Kyrtzidisstruct StorageBase { 60d97cec3deb6e34f0f9d4f5f8ec11b28e44812727Argyrios Kyrtzidis long ref_count; 61d97cec3deb6e34f0f9d4f5f8ec11b28e44812727Argyrios Kyrtzidis unsigned size; 62d97cec3deb6e34f0f9d4f5f8ec11b28e44812727Argyrios Kyrtzidis unsigned capacity; 63e63438b34b075a65849b9dee022adffc7c222ae5Anders Carlsson}; 64d97cec3deb6e34f0f9d4f5f8ec11b28e44812727Argyrios Kyrtzidis 65d97cec3deb6e34f0f9d4f5f8ec11b28e44812727Argyrios Kyrtzidisstruct Storage : StorageBase { 66d97cec3deb6e34f0f9d4f5f8ec11b28e44812727Argyrios Kyrtzidis int data[]; 67d97cec3deb6e34f0f9d4f5f8ec11b28e44812727Argyrios Kyrtzidis}; 68d97cec3deb6e34f0f9d4f5f8ec11b28e44812727Argyrios Kyrtzidis 69d97cec3deb6e34f0f9d4f5f8ec11b28e44812727Argyrios Kyrtzidis} 70