diff options
Diffstat (limited to 'test/SemaObjC/flexible-array-arc.m')
-rw-r--r-- | test/SemaObjC/flexible-array-arc.m | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test/SemaObjC/flexible-array-arc.m b/test/SemaObjC/flexible-array-arc.m new file mode 100644 index 000000000000..1490329b183c --- /dev/null +++ b/test/SemaObjC/flexible-array-arc.m @@ -0,0 +1,36 @@ +// 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 |