xref: /llvm-project/clang/test/SemaObjC/unimplemented-protocol-prop.m (revision 0f1c1be1968076d6f96f8a7bcc4a15cf195ecd97)
1// RUN: %clang_cc1  -fsyntax-only -verify -Wno-objc-root-class -disable-objc-default-synthesize-properties %s
2
3@protocol PROTOCOL0
4@required
5@property float MyProperty0; // expected-note 2 {{property declared}}
6@end
7
8@protocol PROTOCOL<PROTOCOL0>
9@required
10@property float MyProperty; // expected-note 2 {{property declared}}
11@optional
12@property float OptMyProperty;
13@end
14
15@interface I <PROTOCOL>
16@end
17
18@implementation I @end // expected-warning {{property 'MyProperty0' requires method 'MyProperty0' to be defined}} \
19                       // expected-warning {{property 'MyProperty0' requires method 'setMyProperty0:' to be defined}}\
20                       // expected-warning {{property 'MyProperty' requires method 'MyProperty' to be defined}} \
21                       // expected-warning {{property 'MyProperty' requires method 'setMyProperty:' to be defined}}
22
23// property is implemented in super class. No warning
24
25@protocol PROTOCOL1
26@property int MyProp;
27@end
28
29@interface superclass
30@property int MyProp;
31@end
32
33@interface childclass : superclass <PROTOCOL1>
34@end
35
36@implementation childclass
37@end
38
39