In gcc/objc/: 2010-11-08 Nicola Pero <nicola.pero@meta-innovation.com>
[official-gcc.git] / gcc / testsuite / obj-c++.dg / property / dotsyntax-4.mm
blobaf410185526dca14f9be192a5475a3886f7690ee
1 /* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010.  */
2 /* { dg-do compile } */
4 /* Test the 'dot syntax' without a declarated property.  This tests
5    syntax errors in the case where the object is a Class.  */
8 #include <stdlib.h>
9 #include <objc/objc.h>
10 #include <objc/runtime.h>
12 static int a;
13 static id b;
15 @interface MyRootClass
17   Class isa;
19 + (id) initialize;
20 + (id) alloc;
21 - (id) init;
22 + (int) count;
23 + (void) setCount: (int)value;
24 + (id) next;
25 + (void) setNext: (id)value;
26 @end
28 @implementation MyRootClass
29 + (id) initialize { return self; }
30 + (id) alloc { return class_createInstance (self, 0); }
31 - (id) init { return self; }
32 + (int) count
34   return a;
36 + (void) setCount: (int)value
38   a = value;
40 + (id) next
42   return b;
44 + (void) setNext: (id)value
46   b = value;
48 @end
50 int main (void)
52   MyRootClass *object = [[MyRootClass alloc] init];
54   MyRootClass.invalid = 40;      /* { dg-error "could not find setter.getter" } */
55   if (MyRootClass.invalid != 40) /* { dg-error "could not find setter.getter" } */
56     abort ();
58   MyRootClass.;           /* { dg-error "expected identifier" } */
59   if (MyRootClass.)       /* { dg-error "expected identifier" } */
60     abort ();
62   MyRootClass.int;        /* { dg-error "expected identifier" } */
63                           /* { dg-error "expected" "" { target *-*-* } 62 } */
64   if (MyRootClass.int)    /* { dg-error "expected identifier" } */
65                           /* { dg-error "expected" "" { target *-*-* } 64 } */
66     abort ();
68   return 0;