xref: /llvm-project/clang/test/SemaObjC/property-category-impl.m (revision 0f1c1be1968076d6f96f8a7bcc4a15cf195ecd97)
1// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
2// expected-no-diagnostics
3
4/* This test is for categories which don't implement the accessors but some accessors are
5   implemented in their base class implementation. In this case,no warning must be issued.
6*/
7
8@interface MyClass
9{
10    int        _foo;
11}
12@property(readonly)    int        foo;
13@end
14
15@implementation MyClass
16- (int) foo        { return _foo; }
17@end
18
19@interface MyClass (private)
20@property(readwrite)    int        foo;
21@end
22
23@implementation MyClass (private)
24- (void) setFoo:(int)foo    { _foo = foo; }
25@end
26
27@interface MyClass (public)
28@property(readwrite)    int        foo;
29@end
30
31@implementation MyClass (public)
32@end
33
34// No warn of unimplemented property of protocols in category,
35// when those properties will be implemented in category's primary
36// class or one of its super classes.
37@interface HBSuperclass
38@property (nonatomic) char myProperty;
39@property (nonatomic) char myProperty2;
40@end
41
42@interface HBClass : HBSuperclass
43@end
44
45@protocol HBProtocol
46@property (nonatomic) char myProperty;
47@property (nonatomic) char myProperty2;
48@end
49
50@interface HBSuperclass (HBSCategory)<HBProtocol>
51@end
52
53@implementation HBSuperclass (HBSCategory)
54@end
55
56@interface HBClass (HBCategory)<HBProtocol>
57@end
58
59@implementation HBClass (HBCategory)
60@end
61