| // RUN: %clang_cc1 -fsyntax-only -fobjc-arc -verify -Wno-objc-root-class %s | 
 | // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class -DNOARC %s | 
 | #ifdef NOARC | 
 | // expected-no-diagnostics | 
 | #endif | 
 |  | 
 | @interface RetainableArray { | 
 |   id flexible[]; | 
 | #ifndef NOARC | 
 |   // expected-error@-2 {{ARC forbids flexible array members with retainable object type}} | 
 | #endif | 
 | } | 
 | @end | 
 | @implementation RetainableArray | 
 | @end | 
 |  | 
 | // Emit diagnostic only if have @implementation. | 
 | @interface RetainableArrayWithoutImpl { | 
 |   id flexible[]; | 
 | } | 
 | @end | 
 |  | 
 | // With ARC flexible array member objects can be only __unsafe_unretained | 
 | @interface UnsafeUnretainedArray { | 
 |   __unsafe_unretained id flexible[]; | 
 | } | 
 | @end | 
 | @implementation UnsafeUnretainedArray | 
 | @end | 
 |  | 
 | @interface NotObjCLifetimeTypeArray { | 
 |   char flexible[]; | 
 | } | 
 | @end | 
 | @implementation NotObjCLifetimeTypeArray | 
 | @end |