xref: /aosp_15_r20/external/clang/test/Index/index-subscripting-literals.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li@interface NSArray
2*67e74705SXin Li- (id)objectAtIndexedSubscript:(int)index;
3*67e74705SXin Li+ (id)arrayWithObjects:(id *)objects count:(unsigned)count;
4*67e74705SXin Li@end
5*67e74705SXin Li
6*67e74705SXin Li@interface NSMutableArray : NSArray
7*67e74705SXin Li- (id)objectAtIndexedSubscript:(int)index;
8*67e74705SXin Li- (void)setObject:(id)object atIndexedSubscript:(int)index;
9*67e74705SXin Li@end
10*67e74705SXin Li
11*67e74705SXin Li@interface NSDictionary
12*67e74705SXin Li- (id)objectForKeyedSubscript:(id)key;
13*67e74705SXin Li+ (id)dictionaryWithObjects:(id *)objects forKeys:(id *)keys count:(unsigned)count;
14*67e74705SXin Li@end
15*67e74705SXin Li
16*67e74705SXin Li@interface NSMutableDictionary : NSDictionary
17*67e74705SXin Li- (void)setObject:(id)object forKeyedSubscript:(id)key;
18*67e74705SXin Li@end
19*67e74705SXin Li
20*67e74705SXin Li@class NSString;
21*67e74705SXin Li
22*67e74705SXin Liint idx;
23*67e74705SXin Liid p;
24*67e74705SXin Li
25*67e74705SXin Liid testArray() {
26*67e74705SXin Li  NSMutableArray *array;
27*67e74705SXin Li  array[idx] = p;
28*67e74705SXin Li  NSArray *arr = @[ p, p ];
29*67e74705SXin Li  return array[idx];
30*67e74705SXin Li}
31*67e74705SXin Li
32*67e74705SXin LiNSString *key;
33*67e74705SXin Liid newObject, oldObject;
34*67e74705SXin Li
35*67e74705SXin Livoid testDict() {
36*67e74705SXin Li  NSMutableDictionary *dictionary;
37*67e74705SXin Li  oldObject = dictionary[key];
38*67e74705SXin Li  dictionary[key] = newObject;
39*67e74705SXin Li  NSDictionary *dict = @{ key: newObject, key: oldObject };
40*67e74705SXin Li}
41*67e74705SXin Li
42*67e74705SXin Li// RUN: c-index-test -index-file -target x86_64-apple-macosx10.7 %s | FileCheck %s
43*67e74705SXin Li
44*67e74705SXin Li// CHECK:      [indexEntityReference]: kind: variable | name: idx | USR: c:@idx | lang: C | cursor: DeclRefExpr=idx:22:5 | loc: 27:9
45*67e74705SXin Li// CHECK-NEXT: [indexEntityReference]: kind: variable | name: p | USR: c:@p | lang: C | cursor: DeclRefExpr=p:23:4 | loc: 27:16 | <parent>:: kind: function | name: testArray | USR: c:@F@testArray | lang: C | container: [testArray:25:4] | refkind: direct
46*67e74705SXin Li// CHECK-NEXT: [indexEntityReference]: kind: objc-instance-method | name: setObject:atIndexedSubscript:
47*67e74705SXin Li// CHECK-NEXT: [indexEntityReference]: kind: objc-class | name: NSArray
48*67e74705SXin Li// CHECK-NEXT: [indexEntityReference]: kind: objc-class-method | name: arrayWithObjects:count:
49*67e74705SXin Li// CHECK-NEXT: [indexEntityReference]: kind: variable | name: p | USR: c:@p | lang: C | cursor: DeclRefExpr=p:23:4 | loc: 28:21
50*67e74705SXin Li// CHECK-NEXT: [indexEntityReference]: kind: variable | name: p | USR: c:@p | lang: C | cursor: DeclRefExpr=p:23:4 | loc: 28:24
51*67e74705SXin Li// CHECK-NEXT: [indexEntityReference]: kind: variable | name: idx | USR: c:@idx | lang: C | cursor: DeclRefExpr=idx:22:5 | loc: 29:16
52*67e74705SXin Li// CHECK-NEXT: [indexEntityReference]: kind: objc-instance-method | name: objectAtIndexedSubscript:
53*67e74705SXin Li// CHECK-NEXT: [indexDeclaration]: kind: variable | name: key
54*67e74705SXin Li
55*67e74705SXin Li// CHECK:      [indexEntityReference]: kind: variable | name: oldObject
56*67e74705SXin Li// CHECK-NEXT: [indexEntityReference]: kind: variable | name: key | USR: c:@key | lang: C | cursor: DeclRefExpr=key:32:11 | loc: 37:26
57*67e74705SXin Li// CHECK-NEXT: [indexEntityReference]: kind: objc-instance-method | name: objectForKeyedSubscript:
58*67e74705SXin Li// CHECK-NEXT: [indexEntityReference]: kind: variable | name: key | USR: c:@key | lang: C | cursor: DeclRefExpr=key:32:11 | loc: 38:14
59*67e74705SXin Li// CHECK-NEXT: [indexEntityReference]: kind: variable | name: newObject | USR: c:@newObject | lang: C | cursor: DeclRefExpr=newObject:33:4 | loc: 38:21
60*67e74705SXin Li// CHECK-NEXT: [indexEntityReference]: kind: objc-instance-method | name: setObject:forKeyedSubscript:
61*67e74705SXin Li// CHECK-NEXT: [indexEntityReference]: kind: objc-class | name: NSDictionary
62*67e74705SXin Li// CHECK-NEXT: [indexEntityReference]: kind: objc-class-method | name: dictionaryWithObjects:forKeys:count:
63*67e74705SXin Li// CHECK-NEXT: [indexEntityReference]: kind: variable | name: key | USR: c:@key | lang: C | cursor: DeclRefExpr=key:32:11 | loc: 39:27
64*67e74705SXin Li// CHECK-NEXT: [indexEntityReference]: kind: variable | name: newObject | USR: c:@newObject | lang: C | cursor: DeclRefExpr=newObject:33:4 | loc: 39:32
65*67e74705SXin Li// CHECK-NEXT: [indexEntityReference]: kind: variable | name: key | USR: c:@key | lang: C | cursor: DeclRefExpr=key:32:11 | loc: 39:43
66*67e74705SXin Li// CHECK-NEXT: [indexEntityReference]: kind: variable | name: oldObject | USR: c:@oldObject | lang: C | cursor: DeclRefExpr=oldObject:33:15 | loc: 39:48
67