|  | // RUN: %clang_cc1 -fsyntax-only %s | 
|  |  | 
|  | typedef struct objc_class *Class; | 
|  | typedef struct objc_object { | 
|  | Class isa; | 
|  | } *id; | 
|  |  | 
|  |  | 
|  | @protocol P @end | 
|  |  | 
|  | @interface MyList | 
|  | @end | 
|  |  | 
|  | @implementation MyList | 
|  | - (unsigned int)countByEnumeratingWithState:  (struct __objcFastEnumerationState *)state objects:  (id *)items count:(unsigned int)stackcount | 
|  | { | 
|  | return 0; | 
|  | } | 
|  | @end | 
|  |  | 
|  | @interface MyList (BasicTest) | 
|  | - (void)compilerTestAgainst; | 
|  | @end | 
|  |  | 
|  | @implementation MyList (BasicTest) | 
|  | - (void)compilerTestAgainst { | 
|  | int i; | 
|  | for (id elem in self) | 
|  | ++i; | 
|  | for (MyList *elem in self) | 
|  | ++i; | 
|  | for (id<P> se in self) | 
|  | ++i; | 
|  |  | 
|  | MyList<P> *p; | 
|  | for (p in self) | 
|  | ++i; | 
|  |  | 
|  | for (p in p) | 
|  | ++i; | 
|  | } | 
|  | @end | 
|  |  |