You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
689 B
Objective-C

#include "Test.h"
#if !__has_attribute(objc_direct)
int main()
{
return 77;
}
#else
static BOOL initializeCalled;
static BOOL directMethodCalled;
@interface HasDirect : Test
+ (void)clsDirect __attribute__((objc_direct));
- (int)instanceDirect __attribute__((objc_direct));
@end
@implementation HasDirect
+ (void)initialize
{
initializeCalled = YES;
}
+ (void)clsDirect
{
directMethodCalled = YES;
}
- (int)instanceDirect
{
return 42;
}
@end
int main(void)
{
[HasDirect clsDirect];
assert(directMethodCalled);
assert(initializeCalled);
HasDirect *obj = [HasDirect new];
assert([obj instanceDirect] == 42);
obj = nil;
assert([obj instanceDirect] == 0);
return 0;
}
#endif