1*67e74705SXin Li// RUN: %clang_cc1 -emit-llvm %s -o %t 2*67e74705SXin Li 3*67e74705SXin Livoid p(const char*, ...); 4*67e74705SXin Li 5*67e74705SXin Li@interface NSArray 6*67e74705SXin Li+(NSArray*) arrayWithObjects: (id) first, ...; 7*67e74705SXin Li-(unsigned) count; 8*67e74705SXin Li@end 9*67e74705SXin Li@interface NSString 10*67e74705SXin Li-(const char*) cString; 11*67e74705SXin Li@end 12*67e74705SXin Li 13*67e74705SXin Li#define S(n) @#n 14*67e74705SXin Li#define L1(n) S(n+0),S(n+1) 15*67e74705SXin Li#define L2(n) L1(n+0),L1(n+2) 16*67e74705SXin Li#define L3(n) L2(n+0),L2(n+4) 17*67e74705SXin Li#define L4(n) L3(n+0),L3(n+8) 18*67e74705SXin Li#define L5(n) L4(n+0),L4(n+16) 19*67e74705SXin Li#define L6(n) L5(n+0),L5(n+32) 20*67e74705SXin Li 21*67e74705SXin Livoid t0() { 22*67e74705SXin Li NSArray *array = [NSArray arrayWithObjects: L1(0), (void*)0]; 23*67e74705SXin Li 24*67e74705SXin Li p("array.length: %d\n", [array count]); 25*67e74705SXin Li unsigned index = 0; 26*67e74705SXin Li for (NSString *i in array) { // expected-warning {{collection expression type 'NSArray *' may not respond}} 27*67e74705SXin Li p("element %d: %s\n", index++, [i cString]); 28*67e74705SXin Li } 29*67e74705SXin Li} 30*67e74705SXin Li 31*67e74705SXin Livoid t1() { 32*67e74705SXin Li NSArray *array = [NSArray arrayWithObjects: L6(0), (void*)0]; 33*67e74705SXin Li 34*67e74705SXin Li p("array.length: %d\n", [array count]); 35*67e74705SXin Li unsigned index = 0; 36*67e74705SXin Li for (NSString *i in array) { // expected-warning {{collection expression type 'NSArray *' may not respond}} 37*67e74705SXin Li index++; 38*67e74705SXin Li if (index == 10) 39*67e74705SXin Li continue; 40*67e74705SXin Li p("element %d: %s\n", index, [i cString]); 41*67e74705SXin Li if (index == 55) 42*67e74705SXin Li break; 43*67e74705SXin Li } 44*67e74705SXin Li} 45*67e74705SXin Li 46*67e74705SXin Li// rdar://problem/9027663 47*67e74705SXin Livoid t2(NSArray *array) { 48*67e74705SXin Li for (NSArray *array in array) { // expected-warning {{collection expression type 'NSArray *' may not respond}} 49*67e74705SXin Li } 50*67e74705SXin Li} 51