Mercurial > hg > CbC > CbC_llvm
comparison clang/test/ARCMT/objcmt-subscripting-literals.m @ 150:1d019706d866
LLVM10
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 15:10:13 +0900 |
parents | |
children | c4bab56944e8 |
comparison
equal
deleted
inserted
replaced
147:c2174574ed3a | 150:1d019706d866 |
---|---|
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 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s.result | |
5 | |
6 typedef signed char BOOL; | |
7 #define nil ((void*) 0) | |
8 | |
9 typedef const struct __CFString * CFStringRef; | |
10 | |
11 @interface NSObject | |
12 + (id)alloc; | |
13 @end | |
14 | |
15 @protocol NSCopying | |
16 @end | |
17 | |
18 @interface NSString : NSObject | |
19 + (id)stringWithString:(NSString *)string; | |
20 - (id)initWithString:(NSString *)aString; | |
21 @end | |
22 | |
23 @interface NSArray : NSObject | |
24 - (id)objectAtIndex:(unsigned long)index; | |
25 @end | |
26 | |
27 @interface NSArray (NSExtendedArray) | |
28 - (id)objectAtIndexedSubscript:(unsigned)idx; | |
29 @end | |
30 | |
31 @interface NSArray (NSArrayCreation) | |
32 + (id)array; | |
33 + (id)arrayWithObject:(id)anObject; | |
34 + (id)arrayWithObjects:(const id [])objects count:(unsigned long)cnt; | |
35 + (id)arrayWithObjects:(id)firstObj, ...; | |
36 + (id)arrayWithArray:(NSArray *)array; | |
37 | |
38 - (id)initWithObjects:(const id [])objects count:(unsigned long)cnt; | |
39 - (id)initWithObjects:(id)firstObj, ...; | |
40 - (id)initWithArray:(NSArray *)array; | |
41 @end | |
42 | |
43 @interface NSMutableArray : NSArray | |
44 - (void)replaceObjectAtIndex:(unsigned long)index withObject:(id)anObject; | |
45 @end | |
46 | |
47 @interface NSMutableArray (NSExtendedMutableArray) | |
48 - (void)setObject:(id)obj atIndexedSubscript:(unsigned)idx; | |
49 @end | |
50 | |
51 @interface NSDictionary : NSObject | |
52 - (id)objectForKey:(id)aKey; | |
53 @end | |
54 | |
55 @interface NSDictionary (NSExtendedDictionary) | |
56 - (id)objectForKeyedSubscript:(id)key; | |
57 @end | |
58 | |
59 @interface NSDictionary (NSDictionaryCreation) | |
60 + (id)dictionary; | |
61 + (id)dictionaryWithObject:(id)object forKey:(id)key; | |
62 + (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt; | |
63 + (id)dictionaryWithObjectsAndKeys:(id)firstObject, ...; | |
64 + (id)dictionaryWithDictionary:(NSDictionary *)dict; | |
65 + (id)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray *)keys; | |
66 | |
67 - (id)initWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt; | |
68 - (id)initWithObjectsAndKeys:(id)firstObject, ...; | |
69 - (id)initWithDictionary:(NSDictionary *)otherDictionary; | |
70 - (id)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys; | |
71 @end | |
72 | |
73 @interface NSMutableDictionary : NSDictionary | |
74 - (void)setObject:(id)anObject forKey:(id)aKey; | |
75 @end | |
76 | |
77 @interface NSMutableDictionary (NSExtendedMutableDictionary) | |
78 - (void)setObject:(id)obj forKeyedSubscript:(id <NSCopying>)key; | |
79 @end | |
80 | |
81 @interface NSNumber : NSObject | |
82 @end | |
83 | |
84 @interface NSNumber (NSNumberCreation) | |
85 + (NSNumber *)numberWithInt:(int)value; | |
86 @end | |
87 | |
88 #define M(x) (x) | |
89 #define PAIR(x) @#x, [NSNumber numberWithInt:(x)] | |
90 #define TWO(x) ((x), (x)) | |
91 #define TWO_SEP(x,y) ((x), (y)) | |
92 | |
93 @interface I { | |
94 NSArray *ivarArr; | |
95 } | |
96 @end | |
97 @implementation I | |
98 -(void) foo { | |
99 NSString *str; | |
100 NSArray *arr; | |
101 NSDictionary *dict; | |
102 | |
103 arr = [NSArray array]; | |
104 arr = [NSArray arrayWithObject:str]; | |
105 arr = [NSArray arrayWithObjects:str, str, nil]; | |
106 dict = [NSDictionary dictionary]; | |
107 dict = [NSDictionary dictionaryWithObject:arr forKey:str]; | |
108 dict = [NSDictionary dictionaryWithObjectsAndKeys: @"value1", @"key1", @"value2", @"key2", nil]; | |
109 dict = [NSDictionary dictionaryWithObjectsAndKeys: PAIR(1), PAIR(2), nil]; | |
110 dict = [NSDictionary dictionaryWithObjectsAndKeys: | |
111 @"value1", @"key1", | |
112 #ifdef BLAH | |
113 @"value2", @"key2", | |
114 #else | |
115 @"value3", @"key3", | |
116 #endif | |
117 nil ]; | |
118 | |
119 id o = [arr objectAtIndex:2]; | |
120 o = [dict objectForKey:@"key"]; | |
121 o = TWO([dict objectForKey:@"key"]); | |
122 o = TWO_SEP([dict objectForKey:@"key"], [arr objectAtIndex:2]); | |
123 o = [NSDictionary dictionaryWithObject:[NSDictionary dictionary] forKey:@"key"]; | |
124 NSMutableArray *marr = 0; | |
125 NSMutableDictionary *mdict = 0; | |
126 [marr replaceObjectAtIndex:2 withObject:@"val"]; | |
127 [mdict setObject:@"value" forKey:@"key"]; | |
128 [marr replaceObjectAtIndex:2 withObject:[arr objectAtIndex:4]]; | |
129 [mdict setObject:[dict objectForKey:@"key2"] forKey:@"key"]; | |
130 [mdict setObject:[dict objectForKey:@"key2"] forKey: | |
131 #if 1 | |
132 @"key1" | |
133 #else | |
134 @"key2" | |
135 #endif | |
136 ]; | |
137 [mdict setObject:[dict objectForKey: | |
138 #if 2 | |
139 @"key3" | |
140 #else | |
141 @"key4" | |
142 #endif | |
143 ] forKey:@"key"]; | |
144 [mdict setObject:@"value" forKey:[dict objectForKey: | |
145 #if 3 | |
146 @"key5" | |
147 #else | |
148 @"key6" | |
149 #endif | |
150 ] ]; | |
151 [mdict setObject:@"val" forKey:[dict objectForKey:@"key2"]]; | |
152 [mdict setObject:[dict objectForKey:@"key1"] forKey:[dict objectForKey:[NSArray arrayWithObject:@"arrkey"]]]; | |
153 __strong NSArray **parr = 0; | |
154 o = [*parr objectAtIndex:2]; | |
155 void *hd; | |
156 o = [(NSArray*)hd objectAtIndex:2]; | |
157 o = [ivarArr objectAtIndex:2]; | |
158 | |
159 dict = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"1", [NSArray array], nil] forKeys:[NSArray arrayWithObjects:@"A", [arr objectAtIndex:2], nil]]; | |
160 dict = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"1", @"2", nil] forKeys:arr]; | |
161 dict = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"1", @"2", nil] forKeys:@[@"A", @"B"]]; | |
162 dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSArray array], @"A", [NSArray array], @"B", nil]; | |
163 } | |
164 @end | |
165 | |
166 extern const CFStringRef globStr; | |
167 | |
168 void test1(NSString *str) { | |
169 NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: str, globStr, nil]; | |
170 dict = [NSDictionary dictionaryWithObjectsAndKeys: globStr, str, nil]; | |
171 dict = [NSDictionary dictionaryWithObject:str forKey:globStr]; | |
172 dict = [NSDictionary dictionaryWithObject:globStr forKey:str]; | |
173 | |
174 NSArray *arr = [NSArray arrayWithObjects: globStr, globStr, nil]; | |
175 arr = [NSArray arrayWithObjects: str, globStr, nil]; | |
176 arr = [NSArray arrayWithObjects: globStr, str, nil]; | |
177 arr = [NSArray arrayWithObject:globStr]; | |
178 } | |
179 | |
180 @interface Custom : NSObject | |
181 - (id)objectAtIndex:(unsigned long)index; | |
182 @end | |
183 | |
184 @interface Custom (Extended) | |
185 - (id)objectAtIndexedSubscript:(unsigned)idx; | |
186 @end | |
187 | |
188 @interface MutableCustom : Custom | |
189 - (void)replaceObjectAtIndex:(unsigned long)index withObject:(id)anObject; | |
190 @end | |
191 | |
192 @interface MutableCustom (Extended) | |
193 - (void)setObject:(id)obj atIndexedSubscript:(unsigned)idx; | |
194 @end | |
195 | |
196 @interface CustomUnavail : NSObject | |
197 - (id)objectAtIndex:(unsigned long)index; | |
198 @end | |
199 | |
200 @interface CustomUnavail (Extended) | |
201 - (id)objectAtIndexedSubscript:(unsigned)idx __attribute__((unavailable)); | |
202 @end | |
203 | |
204 @interface MutableCustomUnavail : CustomUnavail | |
205 - (void)replaceObjectAtIndex:(unsigned long)index withObject:(id)anObject; | |
206 @end | |
207 | |
208 @interface MutableCustomUnavail (Extended) | |
209 - (void)setObject:(id)obj atIndexedSubscript:(unsigned)idx __attribute__((unavailable)); | |
210 @end | |
211 | |
212 void test2() { | |
213 MutableCustom *mutc; | |
214 id o = [mutc objectAtIndex:4]; | |
215 [mutc replaceObjectAtIndex:2 withObject:@"val"]; | |
216 | |
217 MutableCustomUnavail *mutcunaval; | |
218 o = [mutcunaval objectAtIndex:4]; | |
219 [mutcunaval replaceObjectAtIndex:2 withObject:@"val"]; | |
220 } | |
221 | |
222 @interface NSLocale : NSObject | |
223 + (id)systemLocale; | |
224 + (id)currentLocale; | |
225 - (id)objectForKey:(id)key; | |
226 @end | |
227 | |
228 void test3(id key) { | |
229 id o = [[NSLocale currentLocale] objectForKey:key]; | |
230 } |