|  | // 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 |