blob: 0c562f02ef72a2f19ecff7f9d786960a04824f97 [file] [log] [blame]
/* Test out static (non-heap) allocations of ObjC class instances.
These should elicit errors. */
/* Developed by Ziemowit Laski <zlaski@apple.com>. */
/* { dg-do compile } */
__attribute__((objc_root_class)) @interface Object {
struct objc_class *isa;
}
@end
@compatibility_alias MyObject Object;
@interface Foo: Object {
int a;
Object *b;
Object c; /* { dg-error "statically allocated instance of Objective-C class .Object." } */
}
@end
@compatibility_alias MyFoo Foo;
typedef Foo FooAlias1;
typedef FooAlias1 FooAlias2;
typedef Object ObjectAlias1;
typedef struct Object ObjectAlias2;
Object staticObject1; /* { dg-error "statically allocated instance of Objective-C class .Object." } */
struct Object staticObject2; /* { dg-error "statically allocated instance of Objective-C class .Object." } */
static ObjectAlias1 staticObject3; /* { dg-error "statically allocated instance of Objective-C class .Object." } */
FooAlias1 staticFoo1; /* { dg-error "statically allocated instance of Objective-C class .Foo." } */
extern FooAlias2 externFoo1; /* { dg-error "statically allocated instance of Objective-C class .Foo." } */
static Foo staticFoo2; /* { dg-error "statically allocated instance of Objective-C class .Foo." } */
MyObject staticMyObject1; /* { dg-error "statically allocated instance of Objective-C class .Object." } */
MyFoo staticMyFoo1; /* { dg-error "statically allocated instance of Objective-C class .Foo." } */