xref: /aosp_15_r20/external/clang/test/CodeGenObjC/for-in.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
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