| /* { dg-do compile } */ |
| |
| #include <objc/objc.h> |
| |
| @interface MyRootClass |
| { |
| Class isa; |
| } |
| @end |
| |
| @implementation MyRootClass |
| @end |
| |
| @synthesize isa; /* { dg-error "misplaced .@synthesize. Objective-C.. construct" } */ |
| |
| @interface Test : MyRootClass |
| { |
| int v1; |
| int v2; |
| int v3; |
| int v4; |
| int v5; |
| int v6; |
| int v7; |
| int v8; |
| } |
| @property int v1; |
| @property int v2; |
| @property int v3; |
| @property int v4; |
| @property int v5; |
| @property int v6; |
| @property int v7; |
| @property int v8; |
| @end |
| |
| @implementation Test |
| @synthesize; /* { dg-error "expected identifier" } */ |
| @synthesize v1, ; /* { dg-error "expected identifier" } */ |
| @synthesize v2, v3 = ; /* { dg-error "expected identifier" } */ |
| @synthesize v4, v5=v6, v6 = v5,v7; |
| @synthesize v8; |
| /* Some of the @synthesize above will fail due to syntax errors. The |
| compiler will then complain that the methods implementing the |
| properties are missing. That is correct, but we are not |
| interested. The following ones shut up the compiler. */ |
| - (int) v1 { return v1; } |
| - (void) setV1: (int)a { v1 = a; } |
| - (int) v2 { return v2; } |
| - (void) setV2: (int)a { v2 = a; } |
| - (int) v3 { return v3; } |
| - (void) setV3: (int)a { v3 = a; } |
| @end |