objcmt-subscripting-literals.m.result revision b82019b2b442400e075b03921a1bb04fa23a5458
1// RUN: rm -rf %t
2// RUN: %clang_cc1 -objcmt-migrate-literals -objcmt-migrate-subscripting -mt-migrate-directory %t %s -x objective-c -triple x86_64-apple-darwin11 
3// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
4
5typedef signed char BOOL;
6#define nil ((void*) 0)
7
8@interface NSObject
9+ (id)alloc;
10@end
11
12@interface NSString : NSObject
13+ (id)stringWithString:(NSString *)string;
14- (id)initWithString:(NSString *)aString;
15@end
16
17@interface NSArray : NSObject
18- (id)objectAtIndex:(unsigned long)index;
19- (id)objectAtIndexedSubscript:(int)index;
20@end
21
22@interface NSArray (NSArrayCreation)
23+ (id)array;
24+ (id)arrayWithObject:(id)anObject;
25+ (id)arrayWithObjects:(const id [])objects count:(unsigned long)cnt;
26+ (id)arrayWithObjects:(id)firstObj, ...;
27+ (id)arrayWithArray:(NSArray *)array;
28
29- (id)initWithObjects:(const id [])objects count:(unsigned long)cnt;
30- (id)initWithObjects:(id)firstObj, ...;
31- (id)initWithArray:(NSArray *)array;
32
33- (id)objectAtIndex:(unsigned long)index;
34@end
35
36@interface NSMutableArray : NSArray
37- (void)replaceObjectAtIndex:(unsigned long)index withObject:(id)anObject;
38- (void)setObject:(id)object atIndexedSubscript:(int)index;
39@end
40
41@interface NSDictionary : NSObject
42- (id)objectForKeyedSubscript:(id)key;
43@end
44
45@interface NSDictionary (NSDictionaryCreation)
46+ (id)dictionary;
47+ (id)dictionaryWithObject:(id)object forKey:(id)key;
48+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
49+ (id)dictionaryWithObjectsAndKeys:(id)firstObject, ...;
50+ (id)dictionaryWithDictionary:(NSDictionary *)dict;
51+ (id)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
52
53- (id)initWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
54- (id)initWithObjectsAndKeys:(id)firstObject, ...;
55- (id)initWithDictionary:(NSDictionary *)otherDictionary;
56- (id)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys;
57
58- (id)objectForKey:(id)aKey;
59@end
60
61@interface NSMutableDictionary : NSDictionary
62- (void)setObject:(id)anObject forKey:(id)aKey;
63- (void)setObject:(id)object forKeyedSubscript:(id)key;
64@end
65
66@interface NSNumber : NSObject
67@end
68
69@interface NSNumber (NSNumberCreation)
70+ (NSNumber *)numberWithInt:(int)value;
71@end
72
73#define M(x) (x)
74#define PAIR(x) @#x, [NSNumber numberWithInt:(x)]
75#define TWO(x) ((x), (x))
76
77@interface I
78@end
79@implementation I
80-(void) foo {
81  NSString *str;
82  NSArray *arr;
83  NSDictionary *dict;
84
85  arr = @[];
86  arr = @[str];
87  arr = @[str, str];
88  dict = @{};
89  dict = @{str: arr};
90  dict = @{@"key1": @"value1", @"key2": @"value2"};
91  dict = [NSDictionary dictionaryWithObjectsAndKeys: PAIR(1), PAIR(2), nil];
92  dict = [NSDictionary dictionaryWithObjectsAndKeys:
93                                               @"value1", @"key1",
94#ifdef BLAH
95                                               @"value2", @"key2",
96#else
97                                               @"value3", @"key3",
98#endif
99                                               nil ];
100
101  id o = arr[2];
102  o = dict[@"key"];
103  o = TWO(dict[@"key"]);
104  o = @{@"key": @{}};
105  NSMutableArray *marr = 0;
106  NSMutableDictionary *mdict = 0;
107  marr[2] = @"val";
108  mdict[@"key"] = @"value";
109  marr[2] = arr[4];
110  mdict[@"key"] = dict[@"key2"];
111  [mdict setObject:dict[@"key2"] forKey:
112#if 1
113                     @"key1"
114#else
115                     @"key2"
116#endif
117                    ];
118  mdict[@"key"] = [dict objectForKey:
119#if 2
120                     @"key3"
121#else
122                     @"key4"
123#endif
124                   ];
125  mdict[[dict objectForKey:
126#if 3
127                     @"key5"
128#else
129                     @"key6"
130#endif
131                   ]] = @"value";
132  mdict[dict[@"key2"]] = @"val";
133  mdict[dict[@[@"arrkey"]]] = dict[@"key1"];
134  __strong NSArray **parr = 0;
135  o = (*parr)[2];
136}
137@end
138