1// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -verify -Wno-objc-root-class %s 2// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class -DNOARC %s 3#ifdef NOARC 4// expected-no-diagnostics 5#endif 6 7@interface RetainableArray { 8 id flexible[]; 9#ifndef NOARC 10 // expected-error@-2 {{ARC forbids flexible array members with retainable object type}} 11#endif 12} 13@end 14@implementation RetainableArray 15@end 16 17// Emit diagnostic only if have @implementation. 18@interface RetainableArrayWithoutImpl { 19 id flexible[]; 20} 21@end 22 23// With ARC flexible array member objects can be only __unsafe_unretained 24@interface UnsafeUnretainedArray { 25 __unsafe_unretained id flexible[]; 26} 27@end 28@implementation UnsafeUnretainedArray 29@end 30 31@interface NotObjCLifetimeTypeArray { 32 char flexible[]; 33} 34@end 35@implementation NotObjCLifetimeTypeArray 36@end 37