// RUN: clang-cc -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

