1/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010.  */
2/* { dg-do run } */
3/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
4
5/* Test the property syntax with synthesized setter/getter
6   and with a non-standard name for the getter and setter.  */
7
8#include <stdlib.h>
9#include <objc/objc.h>
10#include <objc/runtime.h>
11
12@interface MyRootClass
13{
14  Class isa;
15  int a;
16}
17@property (getter = giveMeA, setter = writeA:, nonatomic) int a;
18+ (id) initialize;
19+ (id) alloc;
20- (id) init;
21@end
22
23@implementation MyRootClass
24+ (id) initialize { return self; }
25+ (id) alloc { return class_createInstance (self, 0); }
26- (id) init { return self; }
27@synthesize a;
28@end
29
30int main (void)
31{
32  MyRootClass *object = [[MyRootClass alloc] init];
33
34  object.a = 14;
35
36  if (object.a != 14)
37    abort ();
38
39  object.a = 23;
40
41  if (object.a != 23)
42    abort ();
43
44  object.a = 78;
45
46  if (object.a != 78)
47    abort ();
48
49  return (0);
50}
51