1// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
2
3// Test only flexible array member functionality specific to C++.
4
5union VariableSizeUnion {
6  int s;
7  char c[];
8};
9
10@interface LastUnionIvar {
11  VariableSizeUnion flexible;
12}
13@end
14
15@interface NotLastUnionIvar {
16  VariableSizeUnion flexible; // expected-error {{field 'flexible' with variable sized type 'VariableSizeUnion' is not at the end of class}}
17  int last; // expected-note {{next instance variable declaration is here}}
18}
19@end
20
21
22class VariableSizeClass {
23public:
24  int s;
25  char c[];
26};
27
28@interface LastClassIvar {
29  VariableSizeClass flexible;
30}
31@end
32
33@interface NotLastClassIvar {
34  VariableSizeClass flexible; // expected-error {{field 'flexible' with variable sized type 'VariableSizeClass' is not at the end of class}}
35  int last; // expected-note {{next instance variable declaration is here}}
36}
37@end
38