blob: dc279269d24237d0a14f95edcfc69caf0d2ff566 [file] [log] [blame]
/* Contributed by Iain Sandoe <iain@sandoe.co.uk>, May 2019. */
/* { dg-do compile } */
/* Basic check of parsing instancetype. */
extern id class_createInstance (id, int);
extern id class_getSuperclass (id);
#if defined(__has_attribute) && __has_attribute(objc_root_class)
__attribute__((objc_root_class))
#endif
@interface MyObject
{
Class isa;
}
+ (instancetype)alloc;
- (instancetype)init;
+ (instancetype)initialize;
+ (instancetype)factoryMethodA;
+ (id)factoryMethodB;
+ (Class) class;
+ (Class) superclass;
@end
@implementation MyObject
+ (instancetype)alloc { return class_createInstance (self, 0); }
- (instancetype)init { return self; }
+ (instancetype)initialize { return self; }
+ (instancetype)factoryMethodA { return [[[self class] alloc] init]; }
+ (id)factoryMethodB { return [[[self class] alloc] init]; }
+ (Class) class { return self; }
+ (Class) superclass { return class_getSuperclass (self); }
@end