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