1 | // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s |
2 | |
3 | @protocol P |
4 | @property(readonly) int X; // expected-note {{property declared here}} |
5 | @end |
6 | |
7 | @protocol P1<P> |
8 | @property (copy) id ID; |
9 | @end |
10 | |
11 | @interface I |
12 | @end |
13 | |
14 | @interface I (Cat) <P> |
15 | @property float X; // expected-warning {{property type 'float' is incompatible with type 'int' inherited from 'P'}} |
16 | @end |
17 | |
18 | @interface I (Cat2) <P1> |
19 | @property (retain) id ID; // expected-warning {{'copy' attribute on property 'ID' does not match the property inherited from 'P1'}} |
20 | @end |
21 | |
22 | |
23 | @interface A |
24 | @property(assign) int categoryProperty; |
25 | @end |
26 | |
27 | // Don't issue warning on unimplemented setter/getter |
28 | // because property is @dynamic. |
29 | @implementation A |
30 | @dynamic categoryProperty; |
31 | @end |
32 | |