1 | // RUN: %clang_cc1 -x objective-c++ -fblocks -fms-extensions -rewrite-objc %s -o %t-rw.cpp |
2 | // RUN: %clang_cc1 -fsyntax-only -fblocks -Wno-address-of-temporary -D"Class=void*" -D"id=void*" -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp |
3 | // rdar://11203853 |
4 | |
5 | typedef unsigned long size_t; |
6 | |
7 | void *sel_registerName(const char *); |
8 | |
9 | @protocol P @end |
10 | |
11 | @interface NSMutableArray |
12 | #if __has_feature(objc_subscripting) |
13 | - (id)objectAtIndexedSubscript:(size_t)index; |
14 | - (void)setObject:(id)object atIndexedSubscript:(size_t)index; |
15 | #endif |
16 | @end |
17 | |
18 | #if __has_feature(objc_subscripting) |
19 | @interface XNSMutableArray |
20 | - (id)objectAtIndexedSubscript:(size_t)index; |
21 | - (void)setObject:(id)object atIndexedSubscript:(size_t)index; |
22 | #endif |
23 | @end |
24 | |
25 | @interface NSMutableDictionary |
26 | - (id)objectForKeyedSubscript:(id)key; |
27 | - (void)setObject:(id)object forKeyedSubscript:(id)key; |
28 | @end |
29 | |
30 | @class NSString; |
31 | |
32 | int main() { |
33 | NSMutableArray<P> * array; |
34 | id oldObject = array[10]; |
35 | |
36 | array[10] = oldObject; |
37 | |
38 | id unknown_array; |
39 | oldObject = unknown_array[1]; |
40 | |
41 | unknown_array[1] = oldObject; |
42 | |
43 | NSMutableDictionary *dictionary; |
44 | NSString *key; |
45 | id newObject; |
46 | oldObject = dictionary[key]; |
47 | dictionary[key] = newObject; // replace oldObject with newObject |
48 | } |
49 | |
50 | |