Small ChangeLog tweak.
[official-gcc.git] / gcc / testsuite / objc.dg / property / at-property-27.m
blob727834684fe69c7f349e99c4b3f526823e905d50
1 /* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010.  */
2 /* { dg-do run } */
3 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
5 /* Test overriding a readonly @property with a readwrite one in a class extension.  */
7 #include <stdlib.h>
8 #include <objc/objc.h>
9 #include <objc/runtime.h>
11 @interface MyRootClass
13   Class isa;
15 + (id) initialize;
16 + (id) alloc;
17 - (id) init;
18 @end
20 @implementation MyRootClass
21 + (id) initialize { return self; }
22 + (id) alloc { return class_createInstance (self, 0); }
23 - (id) init { return self; }
24 @end
26 @protocol count2
27 /* Use a different getters/setters, so that the only way to compile
28    object.countX is to find the actual @property.  */
29 @property (readonly, getter=number2) int count2;
30 @end
32 @interface MySubClass : MyRootClass
34   int count1;
35   int count2;
37 @property (readonly, getter=number1) int count1;
38 @end
40 @interface MySubClass ()
41 @property (readwrite, getter=number1, setter=setNumber1:) int count1;
42 @end
44 @interface MySubClass ()  <count2>
45 @property (readwrite, getter=number2, setter=setNumber2:) int count2;
46 @end
48 @implementation MySubClass
49 @synthesize count1;
50 @synthesize count2;
51 @end
53 int main (void)
55   MySubClass *object = [[MySubClass alloc] init];
57   object.count1 = 20;
58   if (object.count1 != 20)
59     abort ();
61   object.count2 = 11;
62   if (object.count2 != 11)
63     abort ();
65   return 0;