1// RUN: %clang_cc1 -emit-llvm -triple x86_64-apple-darwin %s -o /dev/null
2
3typedef unsigned int size_t;
4@protocol P @end
5
6@interface NSMutableArray
7#if __has_feature(objc_subscripting)
8- (id)objectAtIndexedSubscript:(size_t)index;
9- (void)setObject:(id)object atIndexedSubscript:(size_t)index;
10#endif
11@end
12
13#if __has_feature(objc_subscripting)
14@interface XNSMutableArray
15- (id)objectAtIndexedSubscript:(size_t)index;
16- (void)setObject:(id)object atIndexedSubscript:(size_t)index;
17#endif
18@end
19
20@interface NSMutableDictionary
21- (id)objectForKeyedSubscript:(id)key;
22- (void)setObject:(id)object forKeyedSubscript:(id)key;
23@end
24
25@class NSString;
26
27int main() {
28  NSMutableArray<P> * array;
29  id oldObject = array[10];
30
31  array[10] = oldObject;
32
33  id unknown_array;
34  oldObject = unknown_array[1];
35
36  unknown_array[1] = oldObject;
37
38  NSMutableDictionary *dictionary;
39  NSString *key;
40  id newObject;
41  oldObject = dictionary[key];
42  dictionary[key] = newObject;	// replace oldObject with newObject
43
44}
45
46