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 | // rdar://10120691 |
24 | // property is implemented in super class. No warning |
25 | |
26 | @protocol PROTOCOL1 |
27 | @property int MyProp; |
28 | @end |
29 | |
30 | @interface superclass |
31 | @property int MyProp; |
32 | @end |
33 | |
34 | @interface childclass : superclass <PROTOCOL1> |
35 | @end |
36 | |
37 | @implementation childclass |
38 | @end |
39 | |
40 | |