xref: /llvm-project/clang/test/SemaObjC/disable-direct-method.m (revision b660abc80d0d0943c54e9440636ddfa89c2d626d)
1*b660abc8SErik Pilkington// RUN: %clang_cc1 -verify -fobjc-disable-direct-methods-for-testing %s
2*b660abc8SErik Pilkington
3*b660abc8SErik Pilkington// expected-no-diagnostics
4*b660abc8SErik Pilkington
5*b660abc8SErik Pilkington#define DIRECT __attribute__((objc_direct))
6*b660abc8SErik Pilkington#define DIRECT_MEMBERS __attribute__((objc_direct_members))
7*b660abc8SErik Pilkington
8*b660abc8SErik Pilkington__attribute__((objc_root_class))
9*b660abc8SErik Pilkington@interface X
10*b660abc8SErik Pilkington-(void)direct_method DIRECT;
11*b660abc8SErik Pilkington@end
12*b660abc8SErik Pilkington
13*b660abc8SErik Pilkington@implementation X
14*b660abc8SErik Pilkington-(void)direct_method DIRECT {}
15*b660abc8SErik Pilkington@end
16*b660abc8SErik Pilkington
17*b660abc8SErik Pilkington__attribute__((objc_root_class))
18*b660abc8SErik PilkingtonDIRECT_MEMBERS
19*b660abc8SErik Pilkington@interface Y
20*b660abc8SErik Pilkington-(void)direct_method2;
21*b660abc8SErik Pilkington@end
22*b660abc8SErik Pilkington
23*b660abc8SErik Pilkington@implementation Y
24*b660abc8SErik Pilkington-(void)direct_method2 {}
25*b660abc8SErik Pilkington@end
26*b660abc8SErik Pilkington
27*b660abc8SErik Pilkington__attribute__((objc_root_class))
28*b660abc8SErik Pilkington@interface Z
29*b660abc8SErik Pilkington@property (direct) int direct_property;
30*b660abc8SErik Pilkington@end
31*b660abc8SErik Pilkington
32*b660abc8SErik Pilkington@implementation Z @end
33