xref: /llvm-project/clang/test/SemaCXX/flexible-array-test.cpp (revision b0e28471a679927cdfbe736899f50c5c1f56125d)
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