blob: e6c3132801f805e9b35d261a488404558033e4c2 [file] [log] [blame]
Fariborz Jahanian4142ceb2010-05-26 20:19:07 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
2// pr7029
3
4template <class Key, class T> struct QMap
5{
6 void insert(const Key &, const T &);
7 T v;
8};
9
10
11template <class Key, class T>
12void QMap<Key, T>::insert(const Key &, const T &avalue)
13{
14 v = avalue;
15}
16
17
18struct 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
28void 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
38struct S {
39 virtual void foo();
40};
41
42struct X {
43 int blah;
Fariborz Jahanian2c0a5402010-05-26 20:46:24 +000044 S strings[]; // expected-error {{flexible array member 'strings' of non-POD element type 'S []'}}
Fariborz Jahanian4142ceb2010-05-26 20:19:07 +000045};
Anders Carlssone63438b2010-09-03 21:53:49 +000046
47class A {
48 int s;
49 char c[];
50};
51
52union B {
53 int s;
Argyrios Kyrtzidisd97cec32011-03-07 20:04:04 +000054 char c[];
Anders Carlssone63438b2010-09-03 21:53:49 +000055};
Argyrios Kyrtzidisd97cec32011-03-07 20:04:04 +000056
57namespace rdar9065507 {
58
59struct StorageBase {
60 long ref_count;
61 unsigned size;
62 unsigned capacity;
63};
64
65struct Storage : StorageBase {
66 int data[];
67};
68
69}