blob: 1c4187aaef5c8b91eb57577da314d196eb157512 [file] [log] [blame]
Ted Kremenek30660a82012-03-06 20:06:33 +00001// RUN: rm -rf %t
2// RUN: %clang_cc1 -objcmt-migrate-literals -objcmt-migrate-subscripting -mt-migrate-directory %t %s -x objective-c++
3// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
4
5#define YES __objc_yes
6#define NO __objc_no
7
8typedef long NSInteger;
9typedef unsigned long NSUInteger;
10typedef signed char BOOL;
11#define nil ((void*) 0)
12
13@interface NSObject
14+ (id)alloc;
15@end
16
17@interface NSNumber : NSObject
18@end
19
20@interface NSNumber (NSNumberCreation)
21- (id)initWithChar:(char)value;
22- (id)initWithUnsignedChar:(unsigned char)value;
23- (id)initWithShort:(short)value;
24- (id)initWithUnsignedShort:(unsigned short)value;
25- (id)initWithInt:(int)value;
26- (id)initWithUnsignedInt:(unsigned int)value;
27- (id)initWithLong:(long)value;
28- (id)initWithUnsignedLong:(unsigned long)value;
29- (id)initWithLongLong:(long long)value;
30- (id)initWithUnsignedLongLong:(unsigned long long)value;
31- (id)initWithFloat:(float)value;
32- (id)initWithDouble:(double)value;
33- (id)initWithBool:(BOOL)value;
34- (id)initWithInteger:(NSInteger)value;
35- (id)initWithUnsignedInteger:(NSUInteger)value;
36
37+ (NSNumber *)numberWithChar:(char)value;
38+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
39+ (NSNumber *)numberWithShort:(short)value;
40+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
41+ (NSNumber *)numberWithInt:(int)value;
42+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
43+ (NSNumber *)numberWithLong:(long)value;
44+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
45+ (NSNumber *)numberWithLongLong:(long long)value;
46+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
47+ (NSNumber *)numberWithFloat:(float)value;
48+ (NSNumber *)numberWithDouble:(double)value;
49+ (NSNumber *)numberWithBool:(BOOL)value;
50+ (NSNumber *)numberWithInteger:(NSInteger)value;
51+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value;
52@end
53
54#define VAL_INT 2
55#define VAL_UINT 2U
56#define VAL_CHAR 'a'
57
58void foo() {
59 @'a';
60 [NSNumber numberWithChar:L'a'];
61 [NSNumber numberWithChar:2];
62 [NSNumber numberWithChar:2U];
63 [NSNumber numberWithChar:2u];
64 [NSNumber numberWithChar:2L];
65 [NSNumber numberWithChar:2l];
66 [NSNumber numberWithChar:2LL];
67 [NSNumber numberWithChar:2ll];
68 [NSNumber numberWithChar:2ul];
69 [NSNumber numberWithChar:2lu];
70 [NSNumber numberWithChar:2ull];
71 [NSNumber numberWithChar:2llu];
72 [NSNumber numberWithChar:2.0];
73 [NSNumber numberWithChar:2.0f];
74 [NSNumber numberWithChar:2.0F];
75 [NSNumber numberWithChar:2.0l];
76 [NSNumber numberWithChar:2.0L];
77 [NSNumber numberWithChar:0x2f];
78 [NSNumber numberWithChar:04];
79 [NSNumber numberWithChar:0];
80 [NSNumber numberWithChar:0.0];
81 [NSNumber numberWithChar:YES];
82 [NSNumber numberWithChar:NO];
83 [NSNumber numberWithChar:true];
84 [NSNumber numberWithChar:false];
85 [NSNumber numberWithChar:VAL_INT];
86 [NSNumber numberWithChar:VAL_UINT];
87 @VAL_CHAR;
88
89 [NSNumber numberWithUnsignedChar:'a'];
90 [NSNumber numberWithUnsignedChar:L'a'];
91 [NSNumber numberWithUnsignedChar:2];
92 [NSNumber numberWithUnsignedChar:2U];
93 [NSNumber numberWithUnsignedChar:2u];
94 [NSNumber numberWithUnsignedChar:2L];
95 [NSNumber numberWithUnsignedChar:2l];
96 [NSNumber numberWithUnsignedChar:2LL];
97 [NSNumber numberWithUnsignedChar:2ll];
98 [NSNumber numberWithUnsignedChar:2ul];
99 [NSNumber numberWithUnsignedChar:2lu];
100 [NSNumber numberWithUnsignedChar:2ull];
101 [NSNumber numberWithUnsignedChar:2llu];
102 [NSNumber numberWithUnsignedChar:2.0];
103 [NSNumber numberWithUnsignedChar:2.0f];
104 [NSNumber numberWithUnsignedChar:2.0F];
105 [NSNumber numberWithUnsignedChar:2.0l];
106 [NSNumber numberWithUnsignedChar:2.0L];
107 [NSNumber numberWithUnsignedChar:0x2f];
108 [NSNumber numberWithUnsignedChar:04];
109 [NSNumber numberWithUnsignedChar:0];
110 [NSNumber numberWithUnsignedChar:0.0];
111 [NSNumber numberWithUnsignedChar:YES];
112 [NSNumber numberWithUnsignedChar:NO];
113 [NSNumber numberWithUnsignedChar:true];
114 [NSNumber numberWithUnsignedChar:false];
115 [NSNumber numberWithUnsignedChar:VAL_INT];
116 [NSNumber numberWithUnsignedChar:VAL_UINT];
117 [NSNumber numberWithUnsignedChar:VAL_CHAR];
118
119 [NSNumber numberWithShort:'a'];
120 [NSNumber numberWithShort:L'a'];
121 [NSNumber numberWithShort:2];
122 [NSNumber numberWithShort:2U];
123 [NSNumber numberWithShort:2u];
124 [NSNumber numberWithShort:2L];
125 [NSNumber numberWithShort:2l];
126 [NSNumber numberWithShort:2LL];
127 [NSNumber numberWithShort:2ll];
128 [NSNumber numberWithShort:2ul];
129 [NSNumber numberWithShort:2lu];
130 [NSNumber numberWithShort:2ull];
131 [NSNumber numberWithShort:2llu];
132 [NSNumber numberWithShort:2.0];
133 [NSNumber numberWithShort:2.0f];
134 [NSNumber numberWithShort:2.0F];
135 [NSNumber numberWithShort:2.0l];
136 [NSNumber numberWithShort:2.0L];
137 [NSNumber numberWithShort:0x2f];
138 [NSNumber numberWithShort:04];
139 [NSNumber numberWithShort:0];
140 [NSNumber numberWithShort:0.0];
141 [NSNumber numberWithShort:YES];
142 [NSNumber numberWithShort:NO];
143 [NSNumber numberWithShort:true];
144 [NSNumber numberWithShort:false];
145 [NSNumber numberWithShort:VAL_INT];
146 [NSNumber numberWithShort:VAL_UINT];
147
148 [NSNumber numberWithUnsignedShort:'a'];
149 [NSNumber numberWithUnsignedShort:L'a'];
150 [NSNumber numberWithUnsignedShort:2];
151 [NSNumber numberWithUnsignedShort:2U];
152 [NSNumber numberWithUnsignedShort:2u];
153 [NSNumber numberWithUnsignedShort:2L];
154 [NSNumber numberWithUnsignedShort:2l];
155 [NSNumber numberWithUnsignedShort:2LL];
156 [NSNumber numberWithUnsignedShort:2ll];
157 [NSNumber numberWithUnsignedShort:2ul];
158 [NSNumber numberWithUnsignedShort:2lu];
159 [NSNumber numberWithUnsignedShort:2ull];
160 [NSNumber numberWithUnsignedShort:2llu];
161 [NSNumber numberWithUnsignedShort:2.0];
162 [NSNumber numberWithUnsignedShort:2.0f];
163 [NSNumber numberWithUnsignedShort:2.0F];
164 [NSNumber numberWithUnsignedShort:2.0l];
165 [NSNumber numberWithUnsignedShort:2.0L];
166 [NSNumber numberWithUnsignedShort:0x2f];
167 [NSNumber numberWithUnsignedShort:04];
168 [NSNumber numberWithUnsignedShort:0];
169 [NSNumber numberWithUnsignedShort:0.0];
170 [NSNumber numberWithUnsignedShort:YES];
171 [NSNumber numberWithUnsignedShort:NO];
172 [NSNumber numberWithUnsignedShort:true];
173 [NSNumber numberWithUnsignedShort:false];
174 [NSNumber numberWithUnsignedShort:VAL_INT];
175 [NSNumber numberWithUnsignedShort:VAL_UINT];
176
177 [NSNumber numberWithInt:'a'];
178 [NSNumber numberWithInt:L'a'];
179 @2;
180 @2;
181 @2;
182 @2;
183 @2;
184 @2;
185 @2;
186 @2;
187 @2;
188 @2;
189 @2;
190 [NSNumber numberWithInt:2.0];
191 [NSNumber numberWithInt:2.0f];
192 [NSNumber numberWithInt:2.0F];
193 [NSNumber numberWithInt:2.0l];
194 [NSNumber numberWithInt:2.0L];
195 @0x2f;
196 @04;
197 @0;
198 [NSNumber numberWithInt:0.0];
199 [NSNumber numberWithInt:YES];
200 [NSNumber numberWithInt:NO];
201 [NSNumber numberWithInt:true];
202 [NSNumber numberWithInt:false];
203 @VAL_INT;
204 [NSNumber numberWithInt:VAL_UINT];
205
206 (void)[[NSNumber alloc] initWithInt:2];
207 (void)[[NSNumber alloc] initWithInt:2U];
208
209 @+2;
210 @-2;
211
212 [NSNumber numberWithUnsignedInt:'a'];
213 [NSNumber numberWithUnsignedInt:L'a'];
214 @2U;
215 @2U;
216 @2u;
217 @2U;
218 @2u;
219 @2U;
220 @2u;
221 @2u;
222 @2u;
223 @2u;
224 @2u;
225 [NSNumber numberWithUnsignedInt:2.0];
226 [NSNumber numberWithUnsignedInt:2.0f];
227 [NSNumber numberWithUnsignedInt:2.0F];
228 [NSNumber numberWithUnsignedInt:2.0l];
229 [NSNumber numberWithUnsignedInt:2.0L];
230 @0x2fU;
231 @04U;
232 @0U;
233 [NSNumber numberWithUnsignedInt:0.0];
234 [NSNumber numberWithUnsignedInt:YES];
235 [NSNumber numberWithUnsignedInt:NO];
236 [NSNumber numberWithUnsignedInt:true];
237 [NSNumber numberWithUnsignedInt:false];
238 [NSNumber numberWithUnsignedInt:VAL_INT];
239 @VAL_UINT;
240
241 [NSNumber numberWithLong:'a'];
242 [NSNumber numberWithLong:L'a'];
243 @2L;
244 @2L;
245 @2l;
246 @2L;
247 @2l;
248 @2L;
249 @2l;
250 @2l;
251 @2l;
252 @2l;
253 @2l;
254 [NSNumber numberWithLong:2.0];
255 [NSNumber numberWithLong:2.0f];
256 [NSNumber numberWithLong:2.0F];
257 [NSNumber numberWithLong:2.0l];
258 [NSNumber numberWithLong:2.0L];
259 @0x2fL;
260 @04L;
261 @0L;
262 [NSNumber numberWithLong:0.0];
263 [NSNumber numberWithLong:YES];
264 [NSNumber numberWithLong:NO];
265 [NSNumber numberWithLong:true];
266 [NSNumber numberWithLong:false];
267 [NSNumber numberWithLong:VAL_INT];
268 [NSNumber numberWithLong:VAL_UINT];
269
270 [NSNumber numberWithUnsignedLong:'a'];
271 [NSNumber numberWithUnsignedLong:L'a'];
272 @2UL;
273 @2UL;
274 @2ul;
275 @2UL;
276 @2ul;
277 @2UL;
278 @2ul;
279 @2ul;
280 @2lu;
281 @2ul;
282 @2ul;
283 [NSNumber numberWithUnsignedLong:2.0];
284 [NSNumber numberWithUnsignedLong:2.0f];
285 [NSNumber numberWithUnsignedLong:2.0F];
286 [NSNumber numberWithUnsignedLong:2.0l];
287 [NSNumber numberWithUnsignedLong:2.0L];
288 @0x2fUL;
289 @04UL;
290 @0UL;
291 [NSNumber numberWithUnsignedLong:0.0];
292 [NSNumber numberWithUnsignedLong:YES];
293 [NSNumber numberWithUnsignedLong:NO];
294 [NSNumber numberWithUnsignedLong:true];
295 [NSNumber numberWithUnsignedLong:false];
296 [NSNumber numberWithUnsignedLong:VAL_INT];
297 [NSNumber numberWithUnsignedLong:VAL_UINT];
298
299 [NSNumber numberWithLongLong:'a'];
300 [NSNumber numberWithLongLong:L'a'];
301 @2LL;
302 @2LL;
303 @2ll;
304 @2LL;
305 @2ll;
306 @2LL;
307 @2ll;
308 @2ll;
309 @2ll;
310 @2ll;
311 @2ll;
312 [NSNumber numberWithLongLong:2.0];
313 [NSNumber numberWithLongLong:2.0f];
314 [NSNumber numberWithLongLong:2.0F];
315 [NSNumber numberWithLongLong:2.0l];
316 [NSNumber numberWithLongLong:2.0L];
317 @0x2fLL;
318 @04LL;
319 @0LL;
320 [NSNumber numberWithLongLong:0.0];
321 [NSNumber numberWithLongLong:YES];
322 [NSNumber numberWithLongLong:NO];
323 [NSNumber numberWithLongLong:true];
324 [NSNumber numberWithLongLong:false];
325 [NSNumber numberWithLongLong:VAL_INT];
326 [NSNumber numberWithLongLong:VAL_UINT];
327
328 [NSNumber numberWithUnsignedLongLong:'a'];
329 [NSNumber numberWithUnsignedLongLong:L'a'];
330 @2ULL;
331 @2ULL;
332 @2ull;
333 @2ULL;
334 @2ull;
335 @2ULL;
336 @2ull;
337 @2ull;
338 @2ull;
339 @2ull;
340 @2llu;
341 [NSNumber numberWithUnsignedLongLong:2.0];
342 [NSNumber numberWithUnsignedLongLong:2.0f];
343 [NSNumber numberWithUnsignedLongLong:2.0F];
344 [NSNumber numberWithUnsignedLongLong:2.0l];
345 [NSNumber numberWithUnsignedLongLong:2.0L];
346 @0x2fULL;
347 @04ULL;
348 @0ULL;
349 [NSNumber numberWithUnsignedLongLong:0.0];
350 [NSNumber numberWithUnsignedLongLong:YES];
351 [NSNumber numberWithUnsignedLongLong:NO];
352 [NSNumber numberWithUnsignedLongLong:true];
353 [NSNumber numberWithUnsignedLongLong:false];
354 [NSNumber numberWithUnsignedLongLong:VAL_INT];
355 [NSNumber numberWithUnsignedLongLong:VAL_UINT];
356
357 [NSNumber numberWithFloat:'a'];
358 [NSNumber numberWithFloat:L'a'];
359 @2.0f;
360 @2.0f;
361 @2.0f;
362 @2.0f;
363 @2.0f;
364 @2.0f;
365 @2.0f;
366 @2.0f;
367 @2.0f;
368 @2.0f;
369 @2.0f;
370 @2.0f;
371 @2.0f;
372 @2.0F;
373 @2.0f;
374 @2.0f;
375 [NSNumber numberWithFloat:0x2f];
376 [NSNumber numberWithFloat:04];
377 @0.0f;
378 @0.0f;
379 [NSNumber numberWithFloat:YES];
380 [NSNumber numberWithFloat:NO];
381 [NSNumber numberWithFloat:true];
382 [NSNumber numberWithFloat:false];
383 [NSNumber numberWithFloat:VAL_INT];
384 [NSNumber numberWithFloat:VAL_UINT];
385
386 [NSNumber numberWithDouble:'a'];
387 [NSNumber numberWithDouble:L'a'];
388 @2.0;
389 @2.0;
390 @2.0;
391 @2.0;
392 @2.0;
393 @2.0;
394 @2.0;
395 @2.0;
396 @2.0;
397 @2.0;
398 @2.0;
399 @2.0;
400 @2.0;
401 @2.0;
402 @2.0;
403 @2.0;
404 [NSNumber numberWithDouble:0x2f];
405 [NSNumber numberWithDouble:04];
406 @0.0;
407 @0.0;
408 [NSNumber numberWithDouble:YES];
409 [NSNumber numberWithDouble:NO];
410 [NSNumber numberWithDouble:true];
411 [NSNumber numberWithDouble:false];
412 [NSNumber numberWithDouble:VAL_INT];
413 [NSNumber numberWithDouble:VAL_UINT];
414
415 [NSNumber numberWithBool:'a'];
416 [NSNumber numberWithBool:L'a'];
417 [NSNumber numberWithBool:2];
418 [NSNumber numberWithBool:2U];
419 [NSNumber numberWithBool:2u];
420 [NSNumber numberWithBool:2L];
421 [NSNumber numberWithBool:2l];
422 [NSNumber numberWithBool:2LL];
423 [NSNumber numberWithBool:2ll];
424 [NSNumber numberWithBool:2ul];
425 [NSNumber numberWithBool:2lu];
426 [NSNumber numberWithBool:2ull];
427 [NSNumber numberWithBool:2llu];
428 [NSNumber numberWithBool:2.0];
429 [NSNumber numberWithBool:2.0f];
430 [NSNumber numberWithBool:2.0F];
431 [NSNumber numberWithBool:2.0l];
432 [NSNumber numberWithBool:2.0L];
433 [NSNumber numberWithBool:0x2f];
434 [NSNumber numberWithBool:04];
435 [NSNumber numberWithBool:0];
436 [NSNumber numberWithBool:0.0];
437 @YES;
438 @NO;
439 @true;
440 @false;
441 [NSNumber numberWithBool:VAL_INT];
442 [NSNumber numberWithBool:VAL_UINT];
443
444 [NSNumber numberWithInteger:'a'];
445 [NSNumber numberWithInteger:L'a'];
446 @2;
447 @2;
448 @2;
449 @2L;
450 @2l;
451 @2;
452 @2;
453 @2;
454 @2;
455 @2;
456 @2;
457 [NSNumber numberWithInteger:2.0];
458 [NSNumber numberWithInteger:2.0f];
459 [NSNumber numberWithInteger:2.0F];
460 [NSNumber numberWithInteger:2.0l];
461 [NSNumber numberWithInteger:2.0L];
462 @0x2f;
463 @04;
464 @0;
465 [NSNumber numberWithInteger:0.0];
466 [NSNumber numberWithInteger:YES];
467 [NSNumber numberWithInteger:NO];
468 [NSNumber numberWithInteger:true];
469 [NSNumber numberWithInteger:false];
470 [NSNumber numberWithInteger:VAL_INT];
471 [NSNumber numberWithInteger:VAL_UINT];
472
473 [NSNumber numberWithUnsignedInteger:'a'];
474 [NSNumber numberWithUnsignedInteger:L'a'];
475 @2U;
476 @2U;
477 @2u;
478 @2U;
479 @2u;
480 @2U;
481 @2u;
482 @2ul;
483 @2lu;
484 @2u;
485 @2u;
486 [NSNumber numberWithUnsignedInteger:2.0];
487 [NSNumber numberWithUnsignedInteger:2.0f];
488 [NSNumber numberWithUnsignedInteger:2.0F];
489 [NSNumber numberWithUnsignedInteger:2.0l];
490 [NSNumber numberWithUnsignedInteger:2.0L];
491 @0x2fU;
492 @04U;
493 @0U;
494 [NSNumber numberWithUnsignedInteger:0.0];
495 [NSNumber numberWithUnsignedInteger:YES];
496 [NSNumber numberWithUnsignedInteger:NO];
497 [NSNumber numberWithUnsignedInteger:true];
498 [NSNumber numberWithUnsignedInteger:false];
499 [NSNumber numberWithUnsignedInteger:VAL_INT];
500 [NSNumber numberWithUnsignedInteger:VAL_UINT];
501}