1/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, December 2010.  */
2/* { dg-options "-Wall" } */
3/* { dg-do compile } */
4
5/* Test that fast enumeration loops where the iterating variable is declared
6   but not used do not generate warnings.  */
7
8/*
9struct __objcFastEnumerationState
10{
11  unsigned long state;
12  id            *itemsPtr;
13  unsigned long *mutationsPtr;
14  unsigned long extra[5];
15};
16*/
17@interface Object
18{
19  Class isa;
20}
21- (unsigned long)countByEnumeratingWithState: (struct __objcFastEnumerationState *)state
22                                     objects:(id *)stackbuf
23                                       count:(unsigned int)len;
24- (id) enumerator;
25- (Class) classEnumerator;
26@end
27
28unsigned int count_objects_in_collection (id collection)
29{
30  unsigned int count = 0;
31
32  /* The following line should generate no warnings even with
33     -Wall.  */
34  for (id object in collection)
35    count++;
36
37  return count;
38}
39
40unsigned int count_objects_in_collection_2 (id collection)
41{
42  unsigned int count = 0;
43  id object;
44
45  /* The following line should generate no warnings even with
46     -Wall.  */
47  for (object in collection)
48    count++;
49
50  return count;
51}
52