Home | History | Annotate | Download | only in Rewriter
      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