OSDN Git Service

In gcc/:
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / objc.dg / foreach-7.m
1 /* Test basic Objective-C foreach syntax.  This tests warnings and errors.  */
2 /* FIXME: Run this test with the NeXT runtime as well.  */
3 /* { dg-skip-if "" { *-*-* } { "-fnext-runtime" } { "" } } */
4 /* { dg-do compile } */
5
6 #include <objc/objc.h>
7 #include <objc/Object.h>
8 extern void abort (void);
9 /*
10 struct __objcFastEnumerationState
11 {
12   unsigned long state;
13   id            *itemsPtr;
14   unsigned long *mutationsPtr;
15   unsigned long extra[5];
16 };
17 */
18 @interface Object (NSFastEnumeration)
19 - (unsigned long)countByEnumeratingWithState: (struct __objcFastEnumerationState *)state
20                                      objects:(id *)stackbuf 
21                                        count:(unsigned int)len;
22 - (id) enumerator;
23 @end
24
25 void function (void)
26 {
27   return;
28 }
29
30 id object_function (void)
31 {
32   return nil;
33 }
34
35 int main (void)
36 {
37   id array = nil;
38   id object = nil;
39
40   for (typedef int my_typedef in array) /* { dg-error "declaration of non-variable" } */
41     ; /* { dg-error "iterating variable in fast enumeration is not an object" } */
42
43   for (function () in nil) /* { dg-error "invalid iterating variable in fast enumeration" } */
44     ; /* { dg-error "iterating variable in fast enumeration is not an object" } */
45
46   for (object_function () in nil) /* { dg-error "invalid iterating variable in fast enumeration" } */
47     ;
48
49   for ([object enumerator] in array) /* { dg-error "invalid iterating variable in fast enumeration" } */
50     ;
51
52   for (object = nil in array) /* { dg-error "invalid iterating variable in fast enumeration" } */
53     ;
54
55   for (id key, value in array) /* { dg-error "multiple iterating variables in fast enumeration" } */
56     ;
57
58   return 0;
59 }
60